The door design problem, and other adventures

The poor bunker workers

Lately, we’ve been working with a new design problem regarding an old door and some even older coding language.
A quick summary of the week:

  • New room and level-design
  • working on the door design problem
  • A side-track in computer networking
  • Adventures in C++

Bunker level-design progress

Pretty straightforward work on the old slaving-away at the level-design work, it’s quite relaxing once you nailed down the design and just have to execute.
Work on the cellar is ongoing and we are wrapping up some of the other rooms like this sleep-work-play-die room. The arcade machine in the picture will contain some mini games like a RymdResa auto-ship-runner.

 

The wheel of the office. Yes. Work. Sleep.Die – You should read this article about burnout

 

Perhaps a deranged man's exploration of the room?
Perhaps a deranged man’s exploration of the room?

There might be some more room for more more2 graffiti in this scene here?!

Who would want to sleep here?
Who would want to sleep here?

The door problem

Once you’ve gotten into the bunker you will be presented with a gigantic door of awesomeness, and obviously you would like to have a look behind that door right?
What could possibly be behind this thing? Nothing horrible right? right?!

A simple task, open the door and see!
A simple task, open the door and see!

The door problem is about the different ways the player can discover or choose to open the door.
We usually solve design-problems like this with staring silently into the void, waving our arms around, drinking tea or just thinking and coming up with solutions to a totally made up problem like the one of the big giant door.

 

As you play Lunar-Soil you can bring some brilliant AI companions with you on your adventure, these companions have different classes and specializations.
So one way to open the door would simply be to find the two key-cards hidden somewhere in the scene.

Another way would be to ask your scientist to make sense of the strange glowing light-thingy-computer.
Or you could nicely ask your security guard to open the security-box located in the backroom that holds the key to the shiny security overwrite-key-card box in the cellar?
Well you get the idea.

 

An example of another way to open some other doors in this GIF (by right-clicking):

aaah the metallic/stony gateways we know as doors.
aaah the metallic/stony gateways we know as doors.

 

And here is the cellar in progress.

down down down to the cellar.
down down down to the cellar.

 

 

And now for some nerd stuff:

TCP vs UDP

We didn’t just spend the week running around making things pretty we also wrote a small UDP client in node.js that is connected to our new overlord.
And when we did that, we also did some research on the apparently ancient flame-wars (before the age of memes) filled debate about what network protocol actually is the most awesome for  things like games. So one thing lead to another so we accidentally coded a TCP server in node.js and then a TCP client in C++, and that’s a perfect segway to our next headline:

Adventures in C++

So we have made  some games now, imprint-X, RymdResa, and are working on Lunar-Soil. For the most part we’re using Unity for that. But! RymdResa is actually made of our own insanity of a horrible mixture of JavaScript and deep down there C++. And our new games is in the pretty high-level language C#.

 

Now and then it’s hard to wash of the horrible taint and smell of 3rd-party libraries doing all the horrible decisions for you. Most post-release bugs for RymdResa is/was around 3rd-party crap that we cant really fix.

 

This is actually also the bonus (and a good thing) you get with Unity, you don’t have to care how anything works, write a game and hope that it works.
So the urge to actually know what we’re doing hopefully is a feeling most of humans have, right? At least some of us have that feeling, this guy in the jungle totally does.
People that have that feeling and are working with game development usually goes back to build an engine from scratch! And then you hear about projects taking like 10 years, what a bad idea!

 

But to have control over your stuff makes you able to write more lightweight, faster and more different programs, tools and games.  A simple empty window doesn’t have to have 2 GB of RAM..

 

So we are not building another engine, we have just created this pretty little side project that might become a game thing wrapped in anciently modern coded c++ only needing 10MB vs 500MB of RAM.

High performance, a lot of work is the way of C++?
High performance, a lot of work is the way of C++?

Homework

Oh and also making anything from a lower-level requires like 10000 small things so here is some good things we had to read and study this week, enjoy:

https://gafferongames.com/post/fix_your_timestep/
http://www.nuonsoft.com/blog/2017/08/10/implementing-a-thread-safe-singleton-with-c11-using-magic-statics/
http://lazyfoo.net/tutorials/SDL/24_calculating_frame_rate/index.php
http://en.cppreference.com/w/cpp/chrono/duration
https://github.com/mattiasgustavsson/libs
https://en.wikibooks.org/wiki/Guide_to_Game_Development/Theory/Game_logic/Setting_up_ticks_and_frames
https://developer.tizen.org/development/guides/native-application/graphics/simple-directmedia-layer-sdl/sdl-graphics-vulkan%C2%AE
https://github.com/emilk/emilib
https://www.youtube.com/watch?v=44tO977slsU
http://headerphile.com/sdl2/sdl2-part-13-multiplayer-tcp/
https://icculus.org/physfs/physfstut.txt
https://github.com/rcarmo/homeworld/blob/master/src/SDL/NetworkInterface.c#L292
https://hackernoon.com/https-medium-com-amanhimself-converting-a-buffer-to-json-and-utf8-strings-in-nodejs-2150b1e3de57
https://github.com/anura-engine/anura/blob/trunk/src/uuid.cpp
http://fabiensanglard.net/quake3/index.php
https://gafferongames.com/post/deterministic_lockstep/
https://www.reddit.com/r/gamedev/comments/1tvbe0/is_it_just_me_or_is_networking_really_hard/
https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
https://gafferongames.com/post/what_every_programmer_needs_to_know_about_game_networking/
https://www.gamedev.net/forums/topic/348340-play-video-files-in-sdl/

 

Leave a Reply

Your email address will not be published. Required fields are marked *