Soilnar April Update
A lot has happened since I last posted! I seem to manage to pull Soilnar forward at a surprisingly constant rate. There has been a week or so with no development; the rest is pure progress. So, eight weeks of that.
Under the hood
After writing the previous post on 2013-02-02, I implemented the movement-based activity tracking mentioned in there and got the idle resource consumption of laser turrets down to zero. There has been a lot of small and mid-sized rework, additions, bugfixes and optimizations, but nothing major. The framework is so modular and locked down already that most things don't affect anything else.
Later (a week ago or so), after talking about some gameplay things on IRC, I decided to change one of the original plans. Instead of having separate sites to travel between in the overworld, the "underworld" is now a huge continuous area. You can move from any location to other via regular travel, if you have the time and can handle the risks.
The engine handled this particularly well - it's basically solely designed for efficiently and actively keeping track of what each client should see, including division of areas into chunks. I needed to write a tighter tile format for handling and saving the world though - textual IDs and JSON was too slow and space-inefficient. The new format utilizes base64-encoded binary for saving the bulk tile content.
Most ships are equipped with Sand Drive, which allows quick travel between sandy areas, given that the player has the required fuel. Using it, plains can be traversed very quickly.
In a world, there are a number of pre-existing sites which have the same kind of sand. These sites contain valuable facilities, like refineries and traders. Players are also able to create sites, via expensive "Sand Bombs". This is a useful way to enable quick travel into a mountain base.
In a Soilnar world, a large majority of things are procedurally generated. Of course, generation is limited only to the level where it operates - for example, it won't generate the graphics for buildings, it just uses pre-drawn ones - but the end result is delightfully different for each server reset.
During this time, I adapted the existing generator for the hugeness of the new world - tuning mineral occurrences, adding two new biomes and optimized performance. It can whip up a 1000x1000 world like shown in the screenshots below in a matter of seconds. A 4000x4000 world is perfectly manageable for a persistent server.
The ship and the ship part system was fully redesigned and polished. Now slots are positional, and parts get damage based on their position. Attaching/removing parts works.
I also added a bunch of new ship models.
Not long time after the previous post, I added some kind of shadows to the visible walls. I wasn't yet really satisfied with that, so I made those walls textured, and made tiles 10x8 instead of 10x10 to get some feel of looking the world at an angle.
The end result is much nicer to look at and doesn't get in the way of gameplay. Making textures for it is still straightforward, which is a requirement for me if I'm ever going to get this done.
In addition to that, I fully reworked the textures to be brighter and more interesting, and turned the overworld base color to black. And the UI got a full recoloring and rework too. Also, I dug around on the internet and found the perfect font. All the ship graphics were redone along with the other rework in there, with a completely new style.
Compare that to the initial graphics.
I made it so that ships leave markings on the ground. It makes busy places really interesting to look at, and always gives you clues of where you might find something useful.
I think I'm becoming better at (pixel) art, in my own weird way. I manage to pull the weirdest of colors and make them work together, and I love it.
These new functional buildings have been added:
- Iron Ore Refinery (resource trader, ore refinery)
- Interplanetary Hub Office (resource trader)
- Trader Office (yard trader)
- Ammunition shop (shop)
Soilnar implements a couple of trading models.
|Shop||A shop provides an infinite and immediate supply of certain things. For example, an Ammo Shop is implemented using this, as it doesn't make too much sense to wiggle around with the logistics of such consumable things.|
|Resource Trader||A resource trader sells and buys resources - minerals and entities of certain model. It can vary the prices according to supply and demand. For example, an Iron Ore Refinery buys iron ore, and sells the produced Refined Iron.|
|Yard Trader||A yard trader buys and sells anything that you can place on their marked yard. They will price anything, and they will sell it as-is to anyone. In case of running out of goods, the trader automatically re-supplies some. In the game, the Trader uses this model.|
Some buildings can automatically produce or refine stuff. There is currently only one system of this type - the Ore Refinery system.
An ore refinery takes certain ore from the cargo hold of itself, turns it into something else in a certain amount of time, and puts it back.
Factories are made by combining this with Resource Trading. Currently Iron Ore Refinery implements this.
I also added some editor functionality, did some work on NPCs (an NPC who simply mines stuff can be created now - but that's not really useful for the game) and added some keyboard shortcuts.
What's next? Well, all I can really say is that my to-do list is terribly long. Probably time for a short break and then get onto more stuffs.
I'm aiming for an alpha release sometime this year.
You can try all this at http://soilnar.8dromeda.net/ - I'd be happy to see a short let's play or some thoughts about it. Please keep in mind that it's still pre-alpha though!
- A of 8Dromeda
- 2013-11-24: Random Dev Notes #1
- 2013-10-26: Soilnar Progress
- 2013-10-11: Third Iteration: Intrusion Underground
- 2013-10-02: Check Twitter
- 2013-08-09: Scaling: The MMO Kind Of
- 2013-07-27: Soilnar July Update Part 4/4
- 2013-07-26: Soilnar July Update Part 3: Bitaeli
- 2013-07-24: Soilnar July Update Part 2: Network Optimization
- 2013-07-23: Soilnar July Update Part 1: Scaling
- 2013-06-20: Miscellaneous Questions
- 2013-06-16: Ternadim Progress
- 2013-04-01: Soilnar April Update
- 2013-02-02: Project Soilnar
- 2013-01-31: First Post!