Ex Nihilo, the game



Heya, thanks for checking out the game!

  1. That’s a really good point, i should probably change the camera a bit to make those units more visible
  2. Thanks for that! I was working on stats for a while and it seems I have messed up, I fixed this one. Well spotted :sweat_smile:
  3. That was intentional really, I didn’t want to complicate that UI further, it’s there to give a bit more information as the order of cards represents turn order, so you get info on units that are about to take a turn. I’m not sure how I would go about make it scrollable without having to do a lot of work or using ugly scrollbars :crying_cat_face:
  4. The console stuff shouldn’t impact performance very much, it’s there for bug reporting mainly right now. I haven’t used any dedicated logging here, which, in hindsight might have been a bad move on my part :thinking:

About auto-scrolling, around the edges - that’s a really neat idea, thanks for that!

When it comes to animations, I worked together with a wonderful artist on the models, but when it came to animation - neither of us had the skill, and it really shows, I’m looking for a replacement to these models and animations, but it’s really hard to say goodbye to years of work :upside_down_face:

Thanks a lot for your feedback!


this is insanely well made and fun to play! Will get back with more feedback. Crazy how much you can do with threejs and creativity! Well done!

I played around an hour and really like it so far. However I managed to get stuck with a guy in the desert area (geomancer guy). See the findings below :slight_smile:

  • How can I fight as melee tank against guys which are on the last row? I play as a tank and support and fought against a geomancer which summoned in front of the tank every time a new round started. I used auto resolve and lost the match. It seems like I can fight any guy on the row in front of me, even if they are on the bottom column. Not on the same column but last row though. Not sure on how to progress now since the guy I fight is unreachable.

  • Would be nice to turn down the music and have more ambient sounds (wind, trees, birds?).

  • Enemy round keeps going even after you’ve been killed

  • Easy to select a talent not wanted (since double click without confirm popup). Perhaps make it possible to select many at the same time and have an overall confirm button instead of forcing to double click to select)


Hey Markus, thanks for checking out the game!

  • When the game starts, you only have 2 slots available, so your tactics are quite limited. As you play you gradually unlock additional slots, at Hero level 11 you unlock the 6th slot, then you can have some archers or mages to help you deal with those enemy back-liners. It’s generally impossible to beat a summoner with a melee warrior, sorry! :crying_cat_face:
  • great idea, thanks! I added it to the backlog :+1:
  • that’s a bit of an obscurity, combat ends at the end of a round, this gives other units (especially healers) an opportunity to act when you have already won.
  • this one is a bit tough, you learn talents with 2 clicks, one to select and one to confirm, so double-click makes it fast and easy to learn:

If you have some suggestions how to make it more clear - I’d appreciate it! :pray:


Hey, Im back with more height-related problems ;D

Maybe put the GUI stuff in separate divs with enabled overflow? (assuming its created using html) With some CSS tweaking, it could work pretty well. In the worst case, there will be an ugly scrollbar for the time being, but at least the player will be able to see all available talents ;p
Also here my height is so unfortunate that i cant really see whats the squad limit
My screen resolution is 1366x768 (although not using full screen so its a little less)

When it comes to choosing talents, I think a good idea is to have a clear [confirm] button, so the player doesnt accidentally pick something random while looking. A system I’ve seen somewhere and like is:

  • left clicking on icons to spend a talent point
  • right clicking on icons to take back the point if I changed my mind
  • a nice [ CONFIRM ] button if im done and certain about my choices. After clicking on it, all changes are saved and cant be taken back

Regarding performance - I believe I have around 20-30 fps, which is a shame because I got kinda hooked up lol. I noticed you have enabled shadow casting on almost all objects. Have you considered using light maps? It could greatly increase the performance if the shadows were baked into the terrain, especially since trees etc are static objects and the shadows arent changing. Then you could use shadow casting only on moving models. Also in my humble opinion, baked soft shadows look nicer x)
If not, then maybe allow the user to disable shadows completely in the options menu? They are nice, but I’d rather have smooth fps :sweat_smile:

I noticed the gameplay gets much more interesting with more units in the squad. Also I feel like the computer takes more time to make a move than necessary. Why would it need 1-2 seconds when a foot soldier can only attack my 1 front guy? :smiley:


Hey @DolphinIQ,

thanks for the feedback, there are actually some interesting reasons behind not using light maps. I have baked a lot of AO into diffuse maps already, but doing so for the environment was simply too memory intensive, so I opted out of doing that, i was toying with the idea of writing a virtual texture (also called “Mega Texture”) implementation do by-pass the memory constraints, but it seems like a bit too much work so far.

With respect to FPS, there are a few main weak points, you mentioned one:

  • shadow maps
  • separate pass for depth texture (i’m planning to roll that into the main diffuse pass via depthTexture extension)
  • deferred pipeline, i use a separate pass for fog of war and another one for outlines, these take up a chunk of memory bandwidth
  • large number of textures. The models are not very well optimized in terms of textures, so there’s a lot of texture switching, which again hits the bandwidth.

I’m glad you’re liking the game :slight_smile:

The reason behind AI being… slow… is that I implemented it using Monte-Carlo Tree Search, that thing doesn’t really have a termination criteria, you just run it for as long as you like, and it produces progressively better results as it goes along. I put the AI into a simulated thread, which is an abstraction I have in my engine, it’s ensures that you can run expensive stuff in the UI thread without causing FPS spikes, but the abstraction adds about 20-30% performance overhead. I was toying with the idea of just writing a rule-based AI or re-writing the whole thing in webassembly for speed, but I haven’t gotten to that desperate state yet. Ideas? :thinking:

I like your suggestions about unlearning stuff, I think i can make that implicit, let you allocate/reallocate points until you leave the talent page. There is an item that resets talents also.

Also, i’m curious, what are the specs of your machine like?


I have a Lenovo ideapad 100 laptop

Nice to see the stats being fixed :smiley:
It looks very nice and clear now, however other elements can still cover them. I feel like, since the stats are temporary and the user can turn it off anytime, they should render above everything else.

I dont know if its a bug, or something but when I added a team + %HP talent to the Baroness, it still shows the previous level of it in combat, as well as the Squad menu. It updated only after closing the tab and opening again.

Also this ;p


Thanks for sharing the info, I think I have an idea, I believe that your laptop uses custom firmware that allows using either integrated or discrete graphics card on per-application basis. I have a lenovo thinkpad and it has that quirk. Basically, when you use a browser - it switches to Intel HD 5500, meaning you’re actually running the game on integrated GPU. It’s my guess only though, based on the low FPS that you’re seeing and your machine config :wink:

Yeah, that’s a bug. I looked into it, and it was a persistence issue, a silly programming mistake. Thanks for pointing it out! :face_with_hand_over_mouth:

That’s nasty :crying_cat_face:


Oh my God, you’re right. I thought I switched it to Nvidia card a few weeks ago, but it turns out that I’ve set the Opera launcher (which had the same icon) and not the actual Opera program. Big Whoopsie :sweat_smile: Thanks a lot for helping me figure it out :smiley:
It runs smoothly now, even with 4098 shadows :joy:


I’ve just played for a bit. Tremendous work.


Thanks @moritz4, I appreciate it! :slight_smile: