We are fleshing out the build mode system that we wrote a little bit about last week. Now we got support for raising and lowering the buildings independently of the terrain which means that you can build a tower that is partly underground as long as the building requirements are met. We also added support for a simple thing; the possibility of moving the building closer and away from you as you build.
Building kits are required to create buildings and these can be crafted, traded or simply found while exploring. Trading requires that you have an actual place for the trade-rocket to land.
Work in Progress, the crappy car/rover/whatever
Walking around on a moon is great! But it’s even funnier (and faster) if you drive! So we started implementing the basic requirements for transporting yourself and your crew. As you can see more work is required…
The Arcade Machines
These lovely machines are spread out in the world of Lunar Soil and each hold a mini game! We now have a nice scene transition when entering and exiting the arcade machines. When playing the arcade games you can try and win rewards in form of items (like a nice hat or bag).
Subscriber’s Free Game!
We worked hard this week to finish one of the arcade games, and we decided to release it as a standalone game! And give it away for free to everyone that subscribes to our newsletter! You can subscribe to our newsletter over here. All of our subscribers will receive the game next week!
The game is done but we had some issues with moving our Unity License and we haven’t received words from the Unity support about that yet. So hopefully Unity will be able to resolve the issue next week.
The game is an small classic arcade turret defense game, but more on that next week. Meanwhile, here is an awesome logo.
This week we worked on solving the dead body problem and its moral consequences, world building/streaming and also took some time with Vulkan.
A quick summary of the week:
Dead bodies, Maslow’s and The Big Five.
World streaming and dungeons.
Building placement system.
The dead body problem
In games death or killing is usually portrayed as something casual or even rewarding. A stressful act of a cat-and-mouse game. Why is that? Maybe it’s as simple as games are lacking in portraying sympathy. It could also have to do with the nature of game-culture and the demography it caters to (who are all these blood thirsty people anyway?).
As you play Lunar Soil you will come in contact with some difficult scenarios. For example, you might stumble upon a body. Is it amoral to search the pockets of the dead? Should you just dehumanize the body because of your own greed. There is no one looking so you can do what you want, right?
But what if your crew and party members would react to your actions?
The character you play and the crew around you will react to what you choose to do in these situations. In order for that to have impact on the game we had to restructure some of our character statistics. A traditional RPG has statistics like strength, dexterity, intelligence and vitality as their way of displaying power, value and progression. We use some of these stats as well, like hunger and stamina. However, as the game is not about becoming a killing machine we detected a need for something else to convey progress, choice, impact and skills.
Firstly, we were inspired by Maslow’s hierarchy and used stats like safety. But for the dead body problem above that would just result in a black and white, evil or good scenario where some characters that were fine with the scavenging didn’t react and some that did mind, just lost some points in safety.
Ontop of the character points system we have different thresholds to trigger several perks and personality traits that will affect the characters and their gameplay even more so we had to have something better then Maslow’s simple needs. That’s where the principle of The Big Fivecomes into play!
The Big Five allows a more meaningful and deeper way to portray different kind of personality traits. (You can take a simple test yourself here for fun). So now we are working out some gameplay kinks allowing different AI characters to have different kinds of personalities and gain or lose points based on your actions and the gameplay experience. We”ll have some more fleshed-out examples in the future when we have sorted out the UI for it.
We finally landed in how we want the outside world to function. Some of the original ideas we had was to just keep it simple and design each area with an exit and entry. However, we’re making an outside moon world where it’s more exciting to allow free movement. So we looked into how we would split up the different types of areas. We landed and implemented three main structures, outside, dungeons, building and moreover, a couple of different variations of these.
The Outdoors This is the main area on the moon! This is where the main exploration, traveling and building take place. This area streams and loads as you go, meaning no loading screens, just an endless world (or at-least looping).
Dungeons Dungeons (working-name, they will probably not be called dungeons later on) will have more unique level-designs where one can explore places like caves, crashed ships, bunkers and more refined areas. These areas are more complex and will therefor be loaded as you enter them, meaning loading-screens. Dungeons can range from smaller exploration areas to larger structures with more complex narrative and designs. These areas usually require you to bring a crew or specialized members to successfully unlock all of their secrets.
Off-world areas The off-world areas will function just like dungeons but will be reachable by for example space-travel, dimensional gateways or wormholes etc.
Event-based areas Some of your characters will have events tied to them, triggered by emotional states or that could be part of life stories. If triggered (or if part of a character story), these events can take you to some smaller unsuspected areas. These will mostly be smaller zones with some smaller tasks or happenings. We’ll talk more about these in the future for sure.
Buildings Mostly, these will be your own placed buildings and structures, helping you on the moon. The smaller ones will have simple interiors that we don’t need to load separably. However, later in the game we might allow a few super structures that will have their own “dungeon” or interior levels.
Here is an example video of a infinitely looping streaming world. This demo only contains one of our outside areas but one can successfully walk forward forever and ever. As you might notice, we have speeded up the video a bit. To conclude: this is a 3 minutes of in-game walking without problems, yay!
We haven’t finished all the details for this system yet as it’s greatly dependent on us solving the world streaming and level loading setup first.
The building process is what’s allowing you to plan and build your own unique moon-base in any build-able area in the outside world! These rather expensive but important buildings and structures are what make your base come to life. We are thinking of just dropping you down alone on the moon with just one simple base module and then let you decide how to acquire and build the modules you might need.
In order for that to work we need to have some basic building placement validation. We want to make sure that, for example the door is not blocked by any terrain or that a stone isn’t pointing into the interior of a building.
Building validation steps
Follow the terrain height.
Basic collision check with terrain and other buildings.
Building validators (a door shouldn’t be blocked)
A couple of years ago Vukan was announced, a new cross-platform rendering API for 2D and 3D graphics. It’s the next generation Open-GL and we took some time playing around with it; mostly to find out how things work, how we would write this for ourselves and to understand how the modern game engines we use like Unreal and Unity (still experimental stage) behave behind the scenes down there in the lower level layers. This might come to use when making games or just rendering anything from scratch in the future.
With the help of reading the massive API documentation, going through tutorials, demos and finding code snippets to understand the whole process, the SDK was straightforward to install and setup. We used MingW, Make and G++. So together with nothing but SDL and the Vulkan API we finally managed to render our first triangle.
The baseline test for rendering-pipelines – The triangle
What’s a so big deal with a triangle? Below is the crazy amount of code we had to write to make this happen. This code below is the actual steps needed to create all the little design principles required. So now thanks to that we know why it’s called a low-level API 🙂 And here is the compiled fragment and vertex shader used to render the triangle.
The Chinese New Year is here and that means game discounts! There is now a steam sale going on and our games are in it! We decided to celebrate the Chinese New Year with 40% discounts on imprint-X and RymdResa! The discounts are running from February 15th to 19th.
Here come some mediocre salesmanship pitches with some awesome screenshots:
Now you can invite your friends and families into total loneliness and despair as they fly around in our one-of-a-kind-poetic-space odyssey with a fantastic 40% discount on steam! Follow the depressed pilot in an epic adventure, or as Polygon said:
Sail the stars in the world’s most relaxed roguelike.
Our amazing button-pressing psychedelic puzzler. Hack your way into the nanobots and save people, yourself and stretch your imagination of logical puzzles that will blow your mind with their simplicity or break your keyboard in anger because of the said simplicity!
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.
There might be some more room for moremore2 graffiti in this scene 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?!
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):
And here is the cellar in progress.
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++
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.
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:
This week’s development-time was mostly covered by pushing forward with levels, lights and some really small system-designs. We spent a week inside a stone bunker in space.
We are using the strange empty bunker as a pilot for all the new gadgets and things we already made like the interactive system, AI etc. Let’s enter the place shall we.
Most of the workflow comes from blocking out the design and then adding life and soul to it through firstly textures, then light. Then we add more details and script interactive elements like buttons, doors switches and then we add some more lights, lot’s of lights and shadows, you know.. making the actual thing..
Stories, poems or just drawing (yes more graffiti, because we ran out of walls!) can be found on screens around the level. Some of them will shed some light of what has actually happened in the bunker. Some will be a picture of a strange pyramid-gadget…
We also worked on some posters…. You should totally signup on Lunar Soils website (it will not increase or decrease any depth you might have accumulated).
We reached a good level of details for the bunker back-rooms…
Space-books and strange machines…
What’s going on here?
If you check the pictures above you can see that the character still needs some more detailed and more stylized clothes! They can’t always be dressed up like some kind of super plumbers now, can they?