Pending Release

Dysis has come a long way since this time last year - and we are nearly ready for it’s public release!

image

The Dysis engine has been completely re-written in an attempt to make it fully compatible (and controllable) on a much wider variety of computers. The graphics components have been completely stripped down and re-written, all operations are now openGL 3+ compliant (minus some small specific vendor hacks). This means that the base engine runs much faster on every single graphics card. The biggest improvements have been seen on the lower end cards (mostly testing against the Intel HD 3000 here - we saw a jump from 7fps in the base engine to 450fps). This doesn’t reflect the full game fps with all post-processing and units+terrain visible, but it does mean that the game can run quite a bit better on those cards with everything visible.

The shading components in Dysis are completely new - they feature new smooth shadows that scale nicely and are actually more efficient than the old shading method. The biggest news is that Dysis will release with an exciting set of sandbox tools and multiplayer! We are considering this an alpha release - since the main campaign still isn’t in place, and there are many more assets to come (weekly) - however, the sandbox tools, multiplayer and steam interaction should provide hours of playtime!

Let’s take a quick look at the sandbox process flow:

image

Character Builder

We’ll start here so that we can build some characters first and then place them into a world we build. The character builder gives you access to almost all of the models used in Dysis (anything previous used in any unit, structure or piece of foliage), plus all of the textures associated with them. You can mix and match textures (though you’ll notice that only textures designed to fit a model will look right - but you could tweak a texture and apply that to a model too).

image

We’ll start out with a robot chassis and add joints from there.

image

You can add particle effects (flares, fire, smoke, etc.) here, which will make the models look cooler, but are purely aesthetic (users with low end cards may have to turn these effects off during the actual game - so keep this in mind when building your models).

image

Once you’ve completely built you model, you can designate it’s design to be a structure, unit or piece of foliage. If it’s foliage, it’ll be easily placed on the maps, so I recommend keeping the model simple. Structures are going to be pretty simple too - however you’ll notice they have two animation slots - one for standby, and another for “working”. This is what they will be doing when they are producing units or doing research. Units are the most complicated - they need a whole set of animations, plus they need to designate which structure is capable of building them, and what other unit (if any) sits before them in the tech tree. Previous units and structures you have made will become available to you if you decide to make any.

As Dysis develops, the tech tree and current units and structures may change - so keep in mind that you may need to change your custom characters to keep them working (hopefully we can keep compatibility issues to a minimum though!).

Currently the animation and tech tree features are unfinished in the character builder - they are in progress and need to be finished before release, and then the character builder will be ready.

World Generator

image

image

Dysis maps will be available in two forms - randomly generated, and static. The static maps will start from randomly generated (however a user could completely strip down the world and redesign in - there will be a bare generator to be used just for that purpose). The world generator will allow you to design landscapes on a grand scale, determine how mountainous, and what materials you want to see spread throughout the map. You’ll be able to assign foliage to materials, however you won’t be able to choose exactly where it generates.

Everything built in the world generator is random - when you save a generator, the parameters are saved, not the specific map. When you launch a game, you’ll be able to seed the generator (so that you can play the same map again if you want), however it is encouraged to try out new and random seeds. If you design a generator you like a lot, and find a seed that looks really good - that’s what the terrain sculpting tool is for.

The world generator is nearly feature complete, it is missing only a few buttons/graphics to control material density, placement, and restrictions for materials based on height - however these features already exist in code underneath - so I count this as 95% complete.

Terrain Sculpting

image

This tool lets you tweak randomly generated maps (you will start from a generator, pick a map size, and then start editing), alter the foliage and place your own foliage in specific places. This is effectively a 3D voxel painting tool that also allows for model placing. You will also have control over where the bases go (otherwise placed in the corners based on the number of players in the game), however this feature hasn’t been implemented yet.

There are a bunch of brushes/tools already part of the terrain sculpting, however we would like to finish up some smoothing tools, copy+paste and potentially undo/redo (though we don’t wan’t to get too bogged down making this perfect when there are more pressing matters).

AI Scripting

This feature is currently least complete and doesn’t have an interface yet. The idea here is that each type of unit will have several command protocols - it’s defaults, and it’s set given by you (if you so choose). You’ll be able to set a hierarchy of command protocols, including “finish command”, “evade fire”, “seek and destroy hostiles” and many other things here.

We consider this a very promising detail in Dysis, as this represents what robots may be like in real life. For example, if you have a working robot (gather resources) - in many games, if that unit comes under fire it is likely to be dumb and continue its job and be destroyed. In Dysis, you could set “finish and command” to be the highest command protocol, and the robot would do just that, but you could also tell working bots that “evade fire” is a higher priority, thus telling bots that come into range of hostiles to move away until they are safe (eventually returning to their job).

The base for this code is mostly in the path-planning, which is already integrated into the Dysis code. We believe that micro playing shouldn’t be difficult - you can give your bots a set of priorities and then an instruction, and trust it to carry out your command - hopefully :)

Multiplayer

Dysis has Steam integration! We have lobby creation, searching and matchmaking through Steam - but we are also working on matching that performance with the ability to play over IP/LAN. To keep multiplayer code smooth, we are trying to match (as much as possible) how Steam handles their network traffic and do that same. Dysis contains router hole-punching technology, allowing you to (hopefully) play without fiddling with too many router settings (server will most likely need to open a port to host). Since Dysis contains both RTS and FPS aspects, the multiplayer is definitely tricky, and we haven’t finished coding it yet.

Most (all?) FPS games run UDP network code, which allows for dropped packets, and packets to come in out of order - there are special techniques used to count packets and to ensure that the game plays fair on every computer - but this doesn’t work so well for an RTS game with many units (if a packet is dropped, it changes the entire game state). We therefore are looking to run both TCP and UDP simultaneously, syncing them to allow players to quickly run in with their first person bot, while also ensuring that the game state controlling all of the other units continues to stay the same across every computer playing. Until we are satisfied that this network code is working up to par, we have disabled FPS mode in multiplayer matches (sorry!).

Release

To get to release we would like to get the sandbox tools working really well (or at least work out any current bugs in them), and integrate player content into the game (allowing people to create units/structures/maps and share them with others). We also need to ensure that all sandbox content plays nicely in the game (and we have some in-game work to finish up on the user-interface side of things).

Each component of the sandbox (especially the AI scripting) has a couple days left of work left to be done on it, and the content integration will likely also take a few days. The user interface and some additional network code will likely also take a few days to finish up. At that point, Dysis will be pushed to Steam and I will request evaluation and release on that platform. I will also request keys on Steam, and push the game up to Desura.

Once the game is on Desura, I will issue an announcement, and make sure to send out any keys to people that don’t already have them. I believe I can generate special beta keys for steam (potentially even bypassing the Valve internal approving stage) - giving quick access to the game there (and achievements!). Once I release keys, I will discuss how to gain access to nightly updates, and weekly updates will happen on more secure code (nightly stuff will likely be buggy - but you can opt in/out at will). I also plan on holding polls on the Dysis forums to determine where people want to see the next set of improvements. I will build a quick dev map on the website in the next couple weeks, to show what I’m planning.

All in all, I would like to have a release version on Steam (and of course Desura) before the end of the month. I know that this has been a long time coming, and last year was a slow and hard year - however Dysis has come a huge distance, and I’m excited to say that it is nearly ready for prime time!

Dysis World Builder Intro Part 1: Terrain Builder

I’m nearly finished with the terrain building section of the Dysis World Builder (don’t worry, the other sections aren’t far behind, and I’ll introduce them too soon). Since the builder is quite complicated, I will be adding tooltips, a tutorial and probably some videos in the weeks to come to help folks use it. It is also one of a kind (I think?), and should allow for a ton of experimentation. 

Here’s what you’ll see when you open the builder up: 

image

Read More

Alpha & Dysis World Builder

For anyone who has been following this blog, you may have noticed that Dysis development is behind schedule - I’m here to post that work flow hasn’t slowed down, however there are a few features I had hoped to get into the game before getting Dysis out to the masses (mainly - the fantastic Kickstarter Beta pledgers - who have been very patient). The biggest feature I’ve been focusing on is multiplayer, and unfortunately I still haven’t finished implementing this for internet play. I had planned to have it done months ago, but aesthetics and gameplay features were far more important and took precedence.

As a perfectionist, I find myself rarely satisfied even with my own work - and until multiplayer has been implemented and works well, Dysis will not hit Beta. To that end, Dysis will be released in Alpha very shortly (this will go out to all backers, Prototype and Beta alike) with a lot of new features and the promise of more constant updates.

To make this happen, Dysis will come with a launching tool that allows for self updating and changing the settings before you ever get into the game. This tool will allow you to debug your Alpha version (to a degree) and hopefully play without issue. It will also give access to the latest changelog, a button to bring you to the Dysis support forums, and the ability to open up the brand new Dysis World Builder (which is now the last thing I’m finishing up before launching Dysis in Alpha). The World Builder will be where you can design your own custom terrains (both randomly generated and static), units, and templates for play.

  • Terrain: You’ll have access to everything I can think of as far as generating terrain goes (from 2D mountains to 3D asteroid fields and shell worlds). Access to the base materials to be placed into the terrain will be available, as well as the option to import your own terrain materials. 

  • Units: You’ll be able to build your own units from parts from other Dysis units, or import your very own models. I’ve created a file structure that you will be able to save and send to your friends so that they can test your creations - soon I hope to have a hosting site on Dysis.net where the top creations will be held and rated for all to download. 
  • Templates: let’s put those Masons to work (again)! This will be a place for you to design build templates to program your Masons to make quick structures while you play. You need a bunker? Whip one up here and you will be able to select it in-game for Mason(s) to build without the need for micro management. 
  • Test play: You’ll be able to test out your terrain/units/templates right inside the tool without having to exit and launch the full game. In here, you’ll also be given a paint brush and the ability to create a static world to save off and play inside of Dysis without having to re-create it later. (Dysis skirmish maps will be split between static maps and randomly generated terrains that you have available - both the base ones that come with Dysis, and any you create/download from others);

I’m also finishing up some large engine optimizations (logical/AI, graphical and audio things) - but as you can see, the terrain now has full soft shadows that run a lot faster than the old shadows. I’m also working a playback feature so you can see past games/pause/etc - however I have put that on hold until Alpha is out to everyone. 

I do want to take the time to apologize to my Beta backers, I know I estimated this release a while back, and I’ve continued to push back the release in the hopes to finish the multiplayer before I get it out to you. I assure you, I’m putting in all of my effort to make sure your first experience is a great one!

-Chris

Update Notes: Patch 0.1.00

It’s been a long time since the last update for Dysis went live - and that means this next update is huge! 

A quick overview of the major features:

  • Lighting (+Night Mode)
  • New UI (menus+RTS)
  • New RTS Controls
  • Hangar+New Commanding Classes
  • Schematics+Addons
  • Unit Path Planning
  • Asteroid Map Generator
  • New Shading for non-SSAO Users
  • Occlusion Culling (not complete)
  • FPS hit tracker (a very small first step towards improving FPS, much more to come)
  • In-game music (again, a very small step towards what is coming)
  • 100+ Bug Fixes

New Lighting Engine

This is part of the post-processing update. Dysis now features a brand new deferred lighting portion to it’s engine. Because of this, the rest of the color/normal textures that were being written each frame needed to be re-optimized to fit the lighting data in without being detrimental performance (and this will still take testing to see how it performs other the other machines Dysis will be played in). 

New User Interface

As you can see in the picture above, Dysis is sporting a brand new look! It has been refined from its previous form to look more polished while also giving the user more information to work with. Selected units are displayed in the center and are colored according to their current health (green is healthy, red is bad). The right hand menu holds the selection of commands that can be issued to the selected units (each with a description and costs for buildings), and the left menu holds the action queue. 

At the top of the screen, Dysis now shows an experience bar - this experience goes towards unlocking upgrades in the hangar for all robots you currently have schematics for.

The Mass and Energy bar is also now a little smaller, hooray!

New RTS Controls

Along with the new interface, you now have the ability to navigate the menus with the keyboard. Going back to the first version of Dysis - the Mason construction bots didn’t have the build menu automatically open - this is once again the case (they now have a menu with the ability to attack, heal other units, open up the building menu, and will soon game a menu for creating terrain altering templates). To access the construction menu quickly, you can hit ‘c’, and click on a building, or simply hit that buildings hotkey (1-6 currently, but this will be expanded as more buildings are added to the game). 

Move, Attack, Patrol and several other commands can also now be enabled with the quick hit of a hotkey (which means the normal map navigate buttons have been set to the Forward/Left/Right/Down keys for now - hopefully that won’t make a huge impact on players switching between RTS and FPS modes regularly). 

Hangar+New Commanding Classes

Instead of being stuck with just the Architect as your commanding unit, you now have access to two more (with another one the way, and further ones for our higher tier Kickstarter backers!). 

Further, once you’ve played a little, The Hangar becomes available to you - this will be the main way to customize your army and defeat your enemies! Right now the hangar just adjusts your command robot (whether it be the Architect, Engineer, or Technician), but in the next patch, this will be expanded to include all robots that you have schematics for! 

Schematics+Addons

As you play the game, you will unlock new schematics. Many of these you will gain simply through experience, however some will be unlocked in hidden areas requiring exploration. 

Schematics will determine which robots and addons you have available to you for customization (which YES means, you will find new robots in secret areas).

Unit Path Planning

Basic unit path planning has been added into the game. Note: this is not part of the AI patch, just something to hold players over until that point. This means that if capable - units will determine a valid path to climb hills  to get to their assigned goals. The path planning is still in its infancy, and only happens when a user directly commands a unit to move to a specific place. This path planning will become more efficient and advanced when the AI patch hits (that’s the next big thing on my plate - so hopefully you won’t have to wait so long for that!). 

To visualize path planning, players can go into the settings and enable selected units to show their paths (off by default). 

Asteroid Map Generator

With the new path planning in place, it’s time to unveil another environment! This one is definitely still under construction, however it should be quite a bit different that some of the others (having floating asteroids and requiring quite a different approach towards navigation). 

New Shading for non-SSAO Users

Not only has the SSAO seen an improvement in this latest patch (less grainy, more precise and efficient), but there is also better shading for the non-ssao view (a quick pre-computation of ambient lighting on the terrain). SSAO still seems to be one of the most computationally demanding things in Dysis, so for any users experiencing lag, turning this off might be the first thing to look into (and trying to keep a similar graphical quality while doing this is important!). 

FPS Hit Tracker

FPS hasn’t seen a lot of love in this patch - I’ve been really focused on getting the RTS and gameplay mechanics down for units/the hangar. I managed to put in a little work today and added a hit tracker to show where damaging impacts are coming from (especially useful if you are just wandering through the forest and start taking fire):

You may also notice that the first person HUD looks a little nicer than it did before - I’ve adjusted the compression/quality of all in-game textures, making everything look nicer and behave quite a bit nicer to hue shifts (team color changes). This hud will still be replaced, but at least it looks nicer for now! 

In-Game Music

Thanks to Harry Rowell (and my finally figuring out how to load audio faster so as not to increase initial load time), we are finally getting our first bit of in-game music! There is still a lot more to come, but it feels really good to get this in there. 

Bug Fixes

I’ve found and fixed countless bugs with this patch (as well as likely inserted quite a few more). Hopefully I haven’t broken anything major, and most of the bugs from the previous version are fixed!

Post Processing

image

Dysis combines many layers to look the way it does - and with the new deferred lighting addition, I’ve gone back and re-worked and optimized how these layers flow together. I start by using a large framebuffer with multiple render targets: color, normals and position.

Color:

image

Normals:

image

Position:

image

The normals map is the most tricky - for RGB it saves XYZ world normals, and in alpha it stores depth. SSAO and deferred lighting require the normals be transformed to their own separate viewspace - so the normal map above is altered for each of these. 

Deferred Shading: 

image

SSAO:

image

The SSAO map is generated via the normals and depth (which were previously collapsed into a single texture). It is then blurred to reduce visible noise. Since this is one of the more abstract post processing effects, I’ve whipped up a sample picture to show the big difference it makes in a scene: 

image

The final scene combines all of these layers:

You’ll notice that the color map isn’t dark with lighting added directly to it. To save floating point accuracy, I reduce the light in the final combination shader while adding the deferred lighting. 

Shadows

Having never written shadows into a game (or anything else) before, I’ve found it to be quite an interesting experience. There are a lot of methods to generating shadows, so I figure I’ve really only hit the tip of the iceberg. Shadows in Dysis are currently rendered via shadowmaps and integrated into some GLSL code that also handles some specular and SSAO properties.

While I’ve always wanted to have them in the game, they tend to require a lot of resources (more based on their resolution and the amount of models they need to render - as each shadow requires an individual light source as well as to render the entire scene again). Shadows weren’t really required in the game for a while - ground units with SSAO show a shaded “halo” on the ground - so do trees and buildings. But with the introduction of flying units shadows became a necessity (so hopefully everyone has a powerful enough graphics card to run them!). 

To help save GPU resources, I’ve got five settings for shadows - off, low, med, high and ultra, Dysis defaults on medium, and frankly I believe this is plenty most of the time. Ultra is a bit overkill, and I’ll tell you why in just a second. I’m going to post the same screenshot with each setting so you can see the difference between the settings:

Off: as you can see, the SSAO is on, so the ground unit is obviously on the ground, as are the trees. This isn’t terrible, and for a low-end computer, this wouldn’t be too bad (if they can run the SSAO). 

Low: 512x512 shadowmap - this is immediately quite a bit nicer, however the branches of the trees are sometimes cut and definitely blurry. Flying units here are much easier to see as their shadows project onto the ground nicely.

Med: 1024x1024 shadowmap - again, this is immediately nicer (and this is the default setting), the shadows are much more crisp on all objects. 

High: 2048x2048 shadowmap - again the shadows are more crisp, though on lower end cards this may be detrimental to performance. 

Ultra: 4096x4096 shadowmap - I’m not saying this will be detrimental to performance necessarily… but it is certainly overkill on the resolution I play as I notice no significant difference between this and high. My monitor is limited to 1080p resolution though, so it’s possible that at higher resolutions this setting will look nicer, but it will also require a high end graphics card. 

In the future I plan on adding terrain shadows - I have this ability already, however  I am not satisfied with the quality/resources required to make them look nice, so they are not included in the Prototype!

—Chris

Announcing… Myself?

Hello World!

I’m Hat - I’m the new Media and Communications Manager for One Dimension Games, so from here on out, I’ll be your main source of information about Dysis, the hub for game support & help, a listening ear for your suggestions & ideas, the main administrator for the Dysis Forums, and the author of the Dysis Wiki. 

Speaking of the Dysis Forums - check out the site I’ve been preparing for our community to share:

image

The forum will be a great place to connect with other Dysis players through Dysis Discussion boards, forum games, and more - and also to keep in touch with Dysiis’ creator through the News & Updates board.

Many of you have also shared fantastic ideas and suggestions with us over the last few months, and we’ve loved it, so the forum has a dedicated board for this kind of feedback. 

Finally, the forum includes a Bug Tracker all set for the Prototype release this week. Though we’ve been working hard to make Dysis a really polished and fun game for you, we know there are bound to be bugs. If you see bugs in the game that you think need to be fixed, please post about it in as much detail as possible on the Bug Tracker - screenshots also help! We’ll keep up with the requests and keep you updated on where they stand. 

My other main project this week has been the Dysis Wiki. Since the Dysis world will be new to almost everyone who plays, this Wiki is your go-to guide for information for every little Dysis detail. Check back often to see how the world is growing and for sneak peaks of the Campaign story you’ll get to play in the final game release. 

image

Links to both the Forums and the Wiki are available on the navigation bar of this blog (to the right), or you can click on these links:

http://forum.dysis.net

http://wiki.dysis.net

—Hat

Happy Holidays Everyone!

I’d just like to wish everyone a Happy Holidays and New Year! We are getting exceedingly close to the Dysis Prototype release - so I hope this new snow environment sparks your interest!

Ocean Floor!


image

Dysis has achieved the Underwater Battles and Naval Units stretch goal, leftover from Kickstarter and amended with PayPal pledges! 

Since it’s a little difficult to tell from the image above, I’ve taken the time to project a water-surface reflection onto the game floor/terrain/everything, here is an animated preview: 

image

This new biome will come with a host of new units, some designed only to be used underwater! The physics (of course) are also different under water, so expect some of your normal units to not work properly, projectiles to be slower, and a number of other exciting things!

Also notice that the ARC now has “scanning” capability. I’ve been working on a special GLSL shader to highlight anything that comes into contact with the “beam”, but that’s just for some graphical fun. As I previously stated, the ARC will be used to transport units - to do this, it need to scan and pick them up first! 

There is also a new building mixed into the shots - the helix turbine. Not only will players need blocks for building things, but power too! This is just one of the many ways of gathering power, but I hope people will build them all over the place!

Team Colors!

Dysis now has team colors! (let’s face it - it’s been quite long enough). The team colors are all hue based (since all units and structures thusfar have been one color and shades of grey), so I have a new special GLSL shader that shifts the hue based on player choice and team. 

This shader switches unit and building colors from RGB space (as they are in openGL), to HSV (hue, saturation, value/lightness) - changes the hue, and then shifts them back to RGB. Since there is no default blending to do this in openGL (that I am aware of?), and this is non-trivial - I wanted to test out my function on the entire screen first. Hue ranges from 0 to 360, while saturation and value go from 0 to 1. This is a 180 switch of the hue:  

image

This is mostly correct, however in my initial tests I did run into a small typo where I was testing value/lightness instead of saturation while bringing HSV values back to RGB (you can tell by the purple spots in the top right/grey textures), and testing over the entire screen made this very obvious. After I fixed that up, I narrowed the hue shift to units and buildings based on team: 

image

image

image

Players will be able to choose teams by a set number of colors (pre-chosen by me) that will be available. This will ensure that nobody chooses a color too similar to anyone else who is playing. I will also open up saturation and lightness to be altered by players, however I will likely clamp these to avoid players having fully black or white units.