Implementing things #4 (days 10-36)
This is the Soilnar: Danagen Industries development log from 2015-02-28 (day 10) to 2015-03-26 (day 36).
Day 10. I had accidentally changed the ELT1xxx ships to be crafted from 9 hull pieces. I changed it back to 12.
Dekanite had an erroneus max_solidity value of 12. Fixed that to be 3. This mainly caused visual glitches, but the whole world had to be regenerated in order to fix it with reasonable effort.
I added floor tiles that are crafted similarly to wall tiles, but you get twice the amount. Also, it turned out the dusty obser that the recipe for crafting tile walls/floors was using was too rare, so I changed it to use vulcamoc instead of dusty obser.
The tile floors and walls were using quite a lot of material because the crafting system didn't support less than 1 source item per recipe. I wanted to make them use 0.5 instead, so I added support for that and changed it so.
The money "Export" button now says "To Item". It's hopefully a bit more understandable, altough I'm sure it will still confuse many new players.
I changed the version to pre-alpha 13 (from pre-alpha 12), as things had changed a huge amount from pre-alpha 12 already. This version wasn't announced anywhere though.
So far the player was able to create any of the game's best mining ships right at the beginning. I changed it so that the player can initially only make the MF1000, which is a fast small ship that has a slow mining speed.
Day 11. Now, it was impossible to craft any larger ship because crafting had to take place in the current ship's cargo hold. Thus I made it so that you can craft things from items that are simply near your ship on the ground, and the result of crafting is dumped on ground if it doesn't fit inside the current ship.
I'm not sure if this was a good idea or not. On the other hand it creates (frankly rather steep and tedious) progression right from the start, but on the other hand it removes the initial interesting choice from the player. I probably need to add more low-tier ships so that there's more to choose from at the beginning. Those could also serve as lower budget options throghout the game.
Players sometimes spawned on lava, which was funny but had no gameplay value and was very useless and likely quite confusing to new players, so I tweaked the spawn randomizer code to avoid lava.
MF1000's "drill length offset" of -0.1 wasn't correct. I changed it to 0.0 instead and now MF1000's mining collision point is more like what one would expect. -0.1 was kind of a bit inside the ship.
Due to popular request (1 out of 1 players asked for it), I added a mouse-hover rectangle to the tile and entity placement mode.
The laser turret can now be crafted from a composite element, a control system and two tons of cadeite. Also, the laser turret add-on now requires cadeite too. This kind of makes cadeite the material for making lasers.
On the non-gameplay side of things, I needed an easy way to restart all the server processes at once, for example during updates. What I ended up doing is simply changing the slave/region servers to completely shut down once the master/control server disconnects, instead of attempting to reconnect. Now I can make them auto-restart by shell script, and I only need to take care of restarting the control server by hand as the region servers will follow the control server restart. Simple and reliable, just like any software should be!
Traders didn't take child entities into account when calculating prices for generated entities, so ships had very low prices. It was a complex issue involving the event system and how pre-defined child entities are added to new entities so I kind of worked around this by replacing the initial pricing by a thing that constantly updates the prices.
(I ended up some bugs when creating the things listed so far, which I fixed at this point.)
Crafted ships had addons preinstalled until this point. I made them not to have them, while the traders still traded ones with parts. I also made a special recipe called "MF1000_with_addons" that is used at spawn for convenience.
Now an old player happend to come test the game. He had been away for like a year and couldn't really figure out what to after spawning in the game. I figured it would be enough to make the appropriate buttons continuously flash until the player has gotten out of the landing capsule. Simple, and solved most of the problem.
The active player noticed that he could make almost infinite money by transporting bitaeli to the empty bitaeli stations that are randomly located along the main path in the world. I wanted to keep the stations and keep the high profit margin but make it only viable for travellers and not big corporations, so I modified them to have a capacity of 5 instead of 60.
Day 12. Bugfix: You got a wrong error message when trying to own an entity that was already owned by you. Now you get the right one.
Murmurite (a mineral) could be crafted from some very valuable ores in addition to common ores. I thought this was kind of interesting, but a playtester argued it was only confusing so I removed the mineral from the valuable ores. Now you can't shoot yourself in the foot that way.
Now, traders were calculating prices of entities based on a quite dumb set of rules, like "if the entity has a laser weapon, add 2000 to the price". This kind of screwed up the economy. I replaced this with a system that actually looks up the crafting recipes and combines them with the resource prices from the interplanetary hub. It's kind of too static in my opinion, but it's much more reasonable than the previous system.
I added the DR2000, which is a drone that has an add-on slot that provides hydraulics instead of the electricity-providing one in DR1000.
Day 17. Until now, the game was missing the code for consuming bitaeli (the sand-travel/fast-travel fuel) when using sand travel between regions. I implemented that.
Days 27-29: I switched the server from using mongoose and libwebsockets to using civetweb. During these years civetweb has become a better fork of mongoose, and has implemented the client websocket functionality that Danagen Industries was using libwebsockets for.
Days 32-33: Finally I implemented the global chat router and IRC proxy, so now the global chat in the game is actually global, and players and the people on #8dromeda@Freenode can talk with each other.
And that's all until today. Next I will probably attempt to post about how this all compares to what I planned to do in The Soilnar plan of 2015.
As usual, the game is running at play3.soilnar.net.
- 2015-03-23: Implementing things #4 (days 10-36)
- 2015-02-28: Implementing things #3 (days 6-9)
- 2015-02-23: Implementing things #2 (days 3-5)
- 2015-02-21: Implementing things
- 2015-02-19: The Soilnar plan of 2015
- 2015-02-12: What the fuck?
- 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!