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!

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.


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 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

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.

Friday, May 9, 2014

Facepalm of the day.

Was trying to figure out why a unit in a new scenario was dying before the player reached him. Turns out he decided the plants on the road were hostile and sacrificed his life to slay the hideous aloe plant.


Monday, March 17, 2014

Terrain Tesselation Skew Test

Had an idea when looking at some images a coworker showed me. Easy enough to rig up, thought I'd see what it looks like. It's just a consistent noise function applied to the non-vertical part of the terrain geometry. It breaks up some hex patterns and makes some more interesting edges.

This is just a test. Do not panic. Obviously it would need massive tuning and surface types would need to be able to disable it (for manmade structures).

Tuesday, February 11, 2014

Many-Month Update

[ There are images at the bottom section if you just want to see pictures :p ]

It's been too long! Much has been written (code-wise), and much planned for the inevitable demo. I also noted it's been a long time since I've taken any screenshots of the game, so I'm gonna make some :p

Major Updates:
  • Build Machine is up and running. It builds client installers automatically, runs a universe which can self-update either the universe engine, the zone engine, the scenarios, or the game database independently. 
  • Map code Rebuild. This removes possibly the worst code in World, the bindings between Terra and Zone, and makes for a nice clean implementation instead. The end result here is a correct map graph after terrain changes, less bandwidth usage, faster terrain updates, and easier extensibility when it comes time to add more terra features (shallow media, climbing, jumping, flow)
  • Scenario Editor code partial Rebuild. The scenario editor is cleaner and more stable. Scenarios update consistently after terrain changes so we don't have to lock down the map. Added many new terrain tools, which are also used as in-game effects.
  • Universe server Stability. Multi-zone execution is FAR better. Zones purge when no players have been active for some duration. Zones can continue to exist in a stale state if there are players, but if the database or zone engine update. This means when we 'patch' the server, scenarios in progress can continue uninterrupted. Launching zones is totally a good way to test the client or scenario now.
  • View Phasing. This is a rendering system that selectively hides pixels that are in the way of seeing what matters to the player. It has nasty math. It lets you see through trees.
  • Sound effects. We have both a selection of character sounds (sets gloriously recorded by friends and family), and some free-sound sourced audio clips. (If you want to record a set I can provide the executable that runs the script to do it :p )
  • Procedural Trees. I decided I wanted some foliage so I made a procedural treebuilder. They aren't pretty but they are... there...
Minor but still good Updates:
  • Lots of new additions to the scripting language for scenarios. Mucho flexibility.
  • Per-terrain-type system for ground impacts. This gives us the ability to have generic actions produce unique effects based on the terrain. (For example, flame impacts may do nothing to stone, but may create fires and char wood)
  • Straight path-lines. Somewhat more natural looking (but less strictly correct) paths when not moving along 60 degree angles.
  • Options menu system (currently just sound volume)
  • Ground-projection effects
  • Beam effects (in retrospect, I haven't used many of these...)
  • Per-unit cosmetic data. Right now just rig-parameters and sound bindings, but it could include per-unit props or textures.
  • Lots of actual game-effect fixes, but it's really mostly been systems stuff.
Jeez, looking through the logs there's kind of a lot, but there's still so much remaining. It looks like I haven't spent much time on game mechanics in a while, which is kind of hilarious to me. A Client UI pass is overdue as well, and maybe an enemy AI pass as well.

And Now some Imagery
  • Blog021014-1.jpg: A shot of trees in Eirikr's hilly scenario. Note that in the center of the image the trees are filtered out by the view phasing. If you look you can see the fuzzy circle where the trees stop being filtered.
  • Blog021014-2.jpg: A shot in the scenario editor of some new terrain construction tools: Easy walls, solid or smoothed, using straight lines (on the left) or continuous lines (on the right), some surface replacement in the back, and some bridge construction in the center.
  • Blog021014-3.jpg: The new bridge to defend in my outpost scenario. Note the overhang section of the wall is phased out, there are tres, and a pile of debugging UI I REALLY need to get rid of.
  • Blog021014-4.jpg: The outpost scenario has a scripted ally, the Captain, who has some special behaviors. This is just him yelling that he needs help. I usually ignore him and let him die. Idiot doesn't know how to retreat properly. :p
  • Blog021014-5.jpg: The bridge explosives have gone off, so the bridge is ruined, the tree is on fire, and the enemies have summoned a special scripted unit, circled in white in the top right, that builds dynamic bridges across the river and onto the walls. Also, I levelled, and the Captain is stuck on the other side of the river.
  • Blog021014-6.jpg: The first 3 bridges are finished, I'm defending one, but some units crossed the first bridge and killed my archers on the walls. Very sad. Tree still on fire.
  • Blog021014-7.jpg: Close up shot of a very happy squad. The bright edges are showing morale. You might be able to tell that they have some different subtle dimensions; that's the per-unit cosmetics. The shield on the left is shorter, and the commander looks kinda lanky. The center archer is taller, pretty clearly. Also trees, bridges from underneath, and ground projections underneath the units. The arrows show when in combat, and make it easier to see orientation. Also if your units aren't engaged the arrow is just a circle.
  • 2013 Shirt Image: Cause its neat.
Thanks for readin'. Till next.