Monday, November 17, 2014

Next Phase Completion!

Since the UI overhaul mentioned last time, I've been working on some graphics stuff, and can happily now say that it is complete, and kinda nifty!


  • We now have a geometry and material pipeline of sorts. 
    • Basically I wrote a tool that can process geometry, tweak it, reorient it, and kick it back out into a custom format for World.
    • I also wrote a materials and shader system to go along with it. It works for straight meshes and character rigs. The geometry processor can apply materials too.
    • The new file loads as a new type 'Model' rather than 'Mesh', so lots of the existing code has to migrate to Models (which have materials). But that's done and good so props and stuff can have materials.
  • We now have a skinner.
    • Another tool that takes a rig and a model, and lets the user apply vertices to a rig joint, then preprocesses the whole thing to be used by the character skinning engine.
    • Both the Skin and Model processor are built off of my Froge and Scene libraries, which are maturing nicely. Froge is a C# <-> JS engine to build up easy UIs. It's terrible if you care what it looks like, but it has native support for most stuff I need for a tester or light tool. The scenes just manage a simple display loop with a built in Awesomium frontend, with Froge attached. 
  • We now have a turtle!
    • Max's turtle obj has been model-ified, rigged and skinned, and a small set of animations sculpted. It's kind of neat, and it opens the way for more textured and modelly characters.
  • We have a new display system for Morale!
    • Since all the display and material and skin code changed, and now characters are rendered with materials, the special case morale-borders is gone.
    • So I built a new multi-pass setup for showing outlines for units, that glow based on the unit morale. I also added a sort of upward and downwards flow to the outline based on the way morale is changing over time. It's lots more subtle than the old way, but it's lots cleaner and I think much better
Here're some clips!

Yay turtles :) 

Friday, October 24, 2014

UI Overhaul phase 1 complete!

Long and hard was the road fought, but the squad panel is complete (for now at least), and I can move on to something else :p

Take a look! http://redtoast.net/SkirmishUI/Squad/TestSquadPanel.htm

Like the formation panel ui from the prior update it can also be interacted with straight in a browser. A lot of the resources may be missing; icons and state/skill/action definitions mostly.

Grar!

Wednesday, September 17, 2014

New panels, Web UI development

Hi :)

So the last week or so has been taken up by rebuilding the formation editting panel. Since we've been moving our UI frontend code to web tech through Awesomium, this means learning a whole bunch of new technologies to manage it. And since I'm new at these sorts of languages, it also means constant retuning and rebuilding of the code. Now that's it's a little more stable I wanted to talk about it some.

First, one of the big advantages of using the web-style frontend, is that you can use it in a browser! So, here's the new panel! Go take a look!

Commander Formation Panel Tester

This thing here is built using a pile of stuff a learned recently:

  • Javascript, of course, since the web runs on javascript. I don't have all that much javascript experience in the past, so there was certainly some learning. The first set of UIs, which have been in the game's main menus for a year or so, use JS of course, but there's good JS, and bad JS, and those menus are... bad JS...
  • TypeScript: I admit it, I'm only comfortable programming in primarily statically typed languages. Typescript is a nice balance between typing and javascript. While it took a bit to learn how to use it properly, since you have to compile it into JS, it's been a noticable improvement for me personally.
  • Handlebars: Handlebars is a templating system to build HTML docs (or JS I suppose) from JS data. My standard coding methodology is to break things down into pieces, yes? HTML/JS/CSS don't really let you do that. Using handlebars to break the HTML bits into pieces gets me some of the way there. Most of the pages I build now use a few templates. Recently I started keeping them in separate files, loaded dynamically when needed.
  • HTML5 Canvas: The main interactive area of the formation panel is displayed with canvas. Turns out that coding to canvas is a lot like using a super-primitive 2D version of OpenGL. Piece of cake :)
  • JQuery / JQuery UI: JQuery of course is largely requisite for some kinds of JS development. I know it's not truly necessary and that there are other options, but I don't have a personally compelling reason to switch. JQuery UI is a bit of a different beast. We use it mostly to set up buttons with consistent styles, tabs, sliders, checkboxes, and other core UI elements. I'm not sold on it, but it does seem to work well enough so far. 
So mercifully the frontend code is becoming less of a mess. With other bugs getting fixed in the game's UI management, we may actually be getting somewhere on having a reasonable UI toolkit. 

Took long enough, eh?

Next task is the commander panel; skills and classes and customization. It used to sound like an impossible task, but I'm beginning to think it won't be so terrible. Will find out soon :)

Friday, August 29, 2014

Caravan (Scenario 2) preview images!

Eirikr's been at it in the scenario editor :)

Early WIP, but neat :)

Wednesday, August 6, 2014

Tutorial Test Phase 2

It's time for another phase of tutorial testing! The feedback from the LAN has been integrated, and some other mechanic tweaks are now in play. I'm going to send out email to quite a few people who haven't played the tutorial yet to get some feedback, and we'll see how it goes from there. :)

Here's some of the changes.

  • Overall Game Updates
    • Maneuvers have more reliable cooldowns and behaviors. Hold, Reform, and other instant maneuvers instantly start their cooldowns, so should be available sooner and more consistently. Movement based maneuvers now have a delay after first contact before stopping, so the final contacts should be more reliable.
    • Retreat is revamped a bit. Retreat grants a short burst of speed when initiated, same as before. But now, if you redirect retreat, you get another burst of speed at the cost of morale.
    • Movement and animation has been seriously updated; Unit legs should be more under control. Units should move much much more smoothly than before. Units shouldn't wiggle as they go back and forth along the hex grid. Units will do some extra animating when running fast, and the locomotors have been largely rebuilt. Unit knockbacks are animated much smoother as well.
  • Application Updates
    • Asset downloads are now retrieved from S3 instead of the universe directly. This took some magic but should pay off. In the end this means faster asset downloads with less impact to running zones, and more reliable fetching.
    • Main menu minor updates: When you have no commanders yet, the 'New commander' menu is skipped. Also, when you create a zone, you now enter a new menu mode, and automatically join when it goes live.
  • Tutorial Updates
    • Many paths have been shut down to prohibit Joey from breaking everything.
    • Many sections of the tutorial are now done in cinematic mode to prevent the user from bypassing sections while talky talk is happening.
    • All dialogue is slowed down substantially, and the player can now hit spacebar to skip most dialogues. Space will also skip the big dialogs, but only a few seconds after they show up.
    • Retreat section partial rebuild. The Glacial elemental's abilities have been slightly changed.
    • The final section now introduces Morale (and HP) and Special attacks. Also the raised platform is destroyed when claiming the Legacy.
    • The 3 learnable terrain manipulation skills are more reliable and less crashy, not that anyone used them :)
  • Known Tutorial Flaws
    • Animation for the swordsman dance at the beginning has messed up timing. Shieldman knockback is a little desynced too.
    • Hold section spawns still don't QUITE do what I want them too, but it works better than before.
    • Retreat still weird but let's get some feedback on that.
    • Final fight still a total and complete chaotic mess; but I don't mind that really.
    • Doesn't create permanent commander when complete, yet.

Monday, July 21, 2014

All back up and onward!

Lo, did the server crash. The existing build.redtoast.net has died a thorough death, the main HDD auto-eviscerated itself into oblivion. Very sad.

And lo did a new server be created to take its place. Newer and shinier (in theory) and decidedly not sitting behind my couch.

The server's back on Amazon's cloud! Yay. It's back up and running most of the prior services. Subversion is back up, the debug universe is running as before, and the web deployment scripts are there as well. This time it doesn't run a local HTTP server though, it deploys all the files to S3, which also serves the seriously terrible http://redtoast.net.

So that all took some time of course. Subversion history from the first half of this year is pretty much the only loss. Sad but not a problem.

Since then I've written a few new shiny things. Since I was all Serious for the LAN prep, I decided to take a week or two for some Nick-fun features before diving back into scenarios.

  • New Physics based Animations system: We can add limited dynamic bodies as props and stuff: Cloth, ropes, combinations thereof. This means that commanders now have their proper banners! 
  • On top of that, Teams now have optionally assigned team colors and logos, and player accounts have a logo/icon assigned as well. These logos show up on the banners (and will in other places in time). The Whirlwind is my logo, until I make a custom one.
  • Timing update: The sync code between the client and server was written in 2008 and unchanged. It kinda worked but wasn't very good. I wrote a new one. I also wrote a massive change in the client side movement code, and an important change in how locomotion is computed, and an importanter change in timing of animations. End result is massively improved animation stability and much smoother unit motion. Stills can't do it justice. I'll need to movie it up to show. Should do a movie soon anyway, been years.
  • Universe related tools. I made myself some new server entrypoints for viewing logs and stuff. Like this. It's not a big thing. OH, Don't hit those launch buttons. (I expect you to hit them, it probably won't break or anything though)
  • Fixed the busted installer from the LAN. Wee.
That's pretty much that for now. Finishing up tuning on the tutorial before I blast a request out for more feedback, then starting production on scenario #2!

Friday, June 20, 2014

LAN 2014 Review!

Now that the travelling immediately post-LAN is concluded and I have returned, it's time to reflect a bit on the results of this years LANstravaganza. First the behind the scenes stuff then the gameplay results.


  • Setup:
    • Installation FAILURE(S). OMG the installer didn't work on fresh machines. Existing installations updated fine but new machines failed for as of yet unknown reasons. Obviously this should be prio 1 for me to fix. It's worked for so long that I haven't checked up on fresh installs. A bit of a pain to diagnose, but so it goes. Not all programming is glamourous.
    • Asset acquisition. 2 machines failed to get some of the assets during play. The initial asset set on login all worked, but some were missing rig assets, and Cheryl was notably missing pretty much everything. Still can play though :)
  • Server Side:
    • Aside from earlier issues, not bad at all. Like last year I didn't have to touch the server nor run a single zone manually. It managed itself nicely behind the scenes, even recovering gracefully from someone putting Outpost on 'server melter difficulty'. 
    • No noteworthy problems with the server. There ARE still issues with exploration mode, but that was removed for the LAN for that reason.
Now more interesting stuff:

  • Scenarios!
    • Tutorial
      • The tutorial works good! People seemed to enjoy playing it and for the most part understood what was going on. We have a list of things to improve of course, but that's to be expected. Once the installers are working I'll recommend to anyone that wasn't here to play the tutorial and give more feedback :)
      • I believe we had 5 or 6 people simultaneously playing the tut. Not bad for a 9 year old server box.
      • In the end 8 people played it most of the way through. Sean didn't get a chance to finish, after he encountered one of a very few breaking bugs in the tut, which will be fixed promptly.
    • Glacier
      • This was Eirikr's 2v2 PvP scenario, a kill-count race with incrementally spawning units hostile to both teams, of increasing danger and value.
      • We played 4 times, with varying teams. It went better than I honestly expected. PvP's a tricky beast in this game just by its very nature. We didn't originally plan to have PvP in the game, but these scenarios are just so easy to make, and are somewhat rewarding to watch being played.
      • Notably, a couple people had more control trouble in this map. There are some narrower areas which tend to produce those problems. Figuring out the root cause of those control issues is a pretty high priority for me, it'll probably take some pretty serious analysis at a forthcoming TOASTnight. 
      • Balance issues? It's not possible to really say there's any balance to have an issue yet, but watching Max blitz through 2 enemy players without resistance was something of a sight to behold. Mostly ignore this for now, until we're sure all the class mechanics are working. PvP counter play doesn't have all it's necessary bits yet. Improved defensive maneuvers and the focus maneuver may help out, if and when they are done.
      • Well done Eir :)
    • Outpost
      • This is the somewhat scripted defensive scenario I've used as a testbed since just after last year's LAN. 
      • The scenario plays out fairly well, but objectives aren't clear and it is somewhat exploitable.
        • Allies can cross into the spawn territory of the enemies. Since they spawn incrementally for most of the scenario, this makes it way way easy and needs to be controlled or removed. Most likely we'll make an optional objective to do something across the river in enemy territory, but forbid spawn camping directly.
        • Enemy scaling is complicated and occasionally broken. This scenario scales up with player count, which works peculiarly. Double the players cannot handle double the enemies in this case, which is somewhat surprising. In any case this mostly just needs more tools to allow the scenario designer to control the enemy count better. Also, more time to tune against player count.
        • Anticlimax. The scenario just ENDS if you win. We need a finale or at least some fireworks :) The win screen doesn't really exist either; it just takes you back to the initial menu for when a scenario is initializing and the players get ready. This is very true of Glacier too.
    • Others
      • Mostly other scenarios were played in interims and only a bit
      • KoboldKing, the focus of the last LAN, was basically obliterated. The enemy defensive power was mostly due to a mechanic that we removed from the base unit definitions (opting to have it be part of the scenario instead), but didn't re-add to the scenario. Sooo, the players pretty much just ran over the boss and called it a day.
      • TerraTest wasn't played, it's day is probably done, which is not sad at all because it is bad. As with many others, was mostly a testbed for development.
      • Maul wasn't played, it needed rebuilding anyway.
      • There are no other noteworthy scenarios... yet.
Overall this year was much better! Last year I said that 'it was more of a game than a demo now'. This year this is much more true. The features added for the tutorial have really improved things across the whole game.

So what's next?

First, incorporating the LAN feedback, as recorded in this pic.

Second, more scenarios! Time to make a new scenario. Maybe an assault scenario or a reverse-escort assassination mission, or an escort mission, or...

Third, details! A pass over animations and sound would be good to do. Fleshing out sounds for the entire tutorial would be an important step forward for media. Most of the LAN played without sound so I got away without much negative feedback there, but I know what it'd be if they could hear it.

To finish up, how bout a couple images? Here's the couple I took after I finally remembered to.


Time to get started, I suppose.