Jump to content

DUELYST - Squad-Based Tactical Combat with Ranked Competitive Play


kiesto88
 Share

Recommended Posts

Hey all, we developed this game in HTML5 + JS + WebGL.  It'll work seamlessly on any modern browser (Chrome, Firefox) without any plug-ins.  We also just launched our Kickstarter a few days ago!  Our team's been pouring our lives into this for the past year so it's really exciting and meaningful for me to share this.

 

If you like our game, please support our Kickstarter: http://kck.st/NLR937

 

OVERVIEW

Duelyst is a tactical turn-based strategy game with a heavy focus on ranked competitive play, brought to you by veteran developers and creators from Diablo III, Rogue Legacy and the Ratchet & Clank series.  

The focus is on squad-based combat on a tactical map with fast-paced multiplayer 1v1 battles where victory comes from defeating your opponent's General. 

At launch, there will be five unique factions with a roster of 100+ battle units and spells.

 

8qwsZIE.gif

 

5Gmnq1D.gif

 

BATTLE UNITS

 

xYbvSDl.gif

 

tfadwwk.gif

 

nsgA07a.gif

 

CONCEPTS

 

AZsa11Gl.jpg

 

lCFJhtMl.jpg

 

QrjOXj9l.jpg

 

 

Link to comment
Share on other sites

Love that HTML5 games is being pushed further beyond it's usual limit! It's not strange though seeing the developer behind Duelyst :D
Simply gorgeus and looks interesting to play, can't wait!

 

At any point are you guys planning to detail how this was done?  I would love to see!

 

Yes! I would like to read postmortem about this too!

Link to comment
Share on other sites

@Quezacotl: At the beginning of our visual prototype, we started with lo-fi pixel art.  And since Glauber (Lead Artist from Rogue Legacy) was an amazing pixel artist, we pretty much went the pixel art direction. 

 

@turnA: We're going to write a bit about how we implemented all this on the code side.  Very soon!

Link to comment
Share on other sites

Heyo everyone, I've been working on Duelyst's real time fx, and one thing I've really enjoyed building is our lighting model. Keep in mind I'm learning a lot of the fx stuff as I go (so I may make mistakes), and while I can't give you all a full post mortem, I wanted to share a few thoughts for my fellow devs that are interested.


 


We are using only HTML, CSS, and JS, and our real time fx is really made possible by WebGL. I'm not sure whether I'd call Duelyst 2D or 3D, more like some sort of odd mix. Sure, we're using 2D sprites, and although our viewing angle is similar to how you'd view a board game, most of our sprites all occupy the same xy plane. For all intents, we don't have depth or 3D mesh information to work with, and that makes lighting just a bit tricky when trying to simulate 3D space. What we're using right now is a mix of 2D shadows and 3D lighting. To give you an example of what I mean:


 


cdd7e67e9064c52d7816c1b025526199_large.g


 


Anyhow, we ran a lighting experiment some time ago to see whether deferred shading or deferred lighting were viable options. We're all dedicated to making as polished an experience as possible, and lighting is a big part of making an experience believable. Deferred techniques are attractive for performance reasons, relative to the usual forward rendering method where you render lighting for each sprite/mesh as you go, because they only need to calculate light once for each pixel on screen. 


 


The core of these deferred techniques are the multiple render targets, or MRTs, and WebGL does not support them. There is an extension, WEBGL_draw_buffers, that adds support for MRTs, but because we're very interested in bringing Duelyst to as many platforms as possible, I've avoided all use of WebGL extensions. Missing MRTs almost kills the idea entirely =(


 


However, we found that if we're willing to make a small concession in the lighting accuracy, we could do something very similar to deferred lighting using only a single off-screen render target. Long story short, while rendering each sprite we were also rendering the screen space normal and depth of each into the off-screen render target, called the g-buffer. Like I said, we had no depth information, but because our camera is at a fixed angle we can very easily simulate it. For the ground, we can say that the depth increases as it goes from the bottom of the screen to the top, and each unit depth is just where its feet are touching the ground. As for the lights themselves, they're handled the same plus one additional property, the altitude or how high off the ground they are. To give you an example of what this faked depth looks like:


 


duelyst_lighting_fakedepth.png


 


Normally, you'd pack the depth information into all 4 channels of an RGBA render target, but in the experiment we found that we only needed a single channel for solid results. That left us the other three channels for the sprite's normal, and if we wanted to we could do sprite normal maps for even more believable lighting. This setup was missing some material properties, but that is part of the loss of accuracy I mentioned earlier. Regardless, the results looked neat, lighting is 3D, and we can throw about 2000 lights into our scene before dropping below 60 fps. Here's an older test of explosion lighting in mid-flash:


 


duelyst_lighting_explosion_sm.png


 


Going forward, we're continuing to refine our direction with lighting to get the best combination of visual fidelity and performance, so nothing is final yet =) If you want to read more about deferred lighting, check out Wolfgang Engel's post on light pre-pass rendering: http://diaryofagraphicsprogrammer.blogspot.com/2008/03/light-pre-pass-renderer.html


Link to comment
Share on other sites

Hey guys, Collin just posted an technical overview for parts of our game.  It still needs moderator approval, so it should be appearing on this thread very shortly!

 

In the mean time, we're very close to our Kickstarter funding goal at 97% of target!  Please share this game with like-minded tbs / tactics gamers :)

http://kck.st/NLR937

 

And we hope you enjoy these captured screenshots of our game!

 

r6MvrJo.gif

 

s0EwQM2.gif

Link to comment
Share on other sites

I love everything that I've seen of this project!  Just backed it on Kickstarter  :D

 

You mentioned that you're using cocos2d-x as the framework.  I'm assuming using you're using the JS bindings for maximum deployment targets.  Out of curiosity – how are you integrating WebGL into the project?  Also, are you having to rewrite all your graphics code for OpenGL ES for iOS and such?  I haven't seen much online about the workflow for truly cross-platform graphics work with cocos2d-x.

 

Any illumination on these concepts would very greatly appreciated!

Link to comment
Share on other sites

@Sarith: Yeah, we're using JS bindings and node web-kit to port to other platforms + Chromium project.  We haven't ported it to mobile/tablets yet, so we'll have to investigate what you're saying.

 

Incidentally, we just got an official Rogue Legacy crossover for Duelyst (thanks for Cellar Door Games).

 

6CIm0fZ.gif

 

Rogue Legacy Paladin but slightly grown up :)

Link to comment
Share on other sites

@Sarith Keith summed it up pretty well. We're especially excited about node-webkit as a way to develop only on a single codebase and have integration with things such as Steamworks via node plugins. Our team is small so this is especially important. If, however, it turns out that we can't deploy to mobile using this method, we know some of the awesome guys working on CocoonJS and will discuss the mobile deploy further with them. Worst case, the shader code will be the easiest thing to port, as WebGL is based on the OpenGL ES spec. We're very careful to build everything with the differences in mind, for example as listed in resources like this: https://www.khronos.org/webgl/wiki/WebGL_and_OpenGL_Differences

At the moment, porting the code itself is the least of our concerns. Making sure the game works solidly in all aspects on different screen sizes and with touch controls will be the bigger concern when we get to that point.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...