Happy New Year!
Hey Folks! Happy New Year! Since the game's been out for over a year, and pretty stable for most of it, I decided to "go dark" for two weeks, hoping to recharge my batteries. Now that I'm back, I think it had the desired effect. I found myself getting more and more inspired each day I was away, and I feel pretty excited about getting back to development!
Of course, I've also got about two weeks' emails and threads to catch up on. But such is dev life :)
Today, I decided to use my first few hours to get straight into prototyping code. I'm realizing that my most productive time tends to be before lunch, so I wanted to try and harness that for the heaviest mental tasks.
I focused on setting-up a tile/grid system for the ship editor. Getting the parts to align to a grid was one thing, but I also want them to behave according to several placement and operational rules. I want items to lock together only in certain ways, I want some items not to overlap, and when the game is running, I'll want to track things like atmo pressure, temperature, and other stats.
The old HaxeFlixel prototype used a tilemap for placement, and I think that still makes sense. Plus, I think I can use that same tilemap to control the game stats like atmo, temp, and other vitals when the ship is "live." Neighboring tiles can exchange atmo values, propagate radiation, etc.
I've managed to get a lot of the framework down for this. Fortunately, borrowing code from the HaxeFlixel prototype seems to be pretty easy. Not exactly the same, but close enough for me to massage into shape. And a lot of the hard problems are already solved there, so it's just hooking them up and porting the Haxe to C#. Nothing quite functional yet, but we're getting there.
After lunch, I decided to start tackling my inbox, forums, etc. I have a lot of messages awaiting attention, and I'm wading through those now.
Part of that is to address several NEO Scavenger issues which were reported recently.
First of all, I tried loading a save file that required mods and it caused null pointers everywhere trying to load items that didn't exist in my vanilla game. This gave me a chance to patch-up some areas with better error-handling. I tried to add null-pointer handling code to each of these problem areas, so hopefully it'll reduce the number of random null-pointers we see in the wild (particularly with mods).
While looking into the above, I also noticed the way my mod remapper code handles gaps in IDs is bad. If there is a null recipe in the recipe list, for example, and the treasure table calls for a random recipe scrap, there's a chance it tries to load a null recipe's info, causing a null pointer bug.
I added some code in there to generate a "Missing Recipe" scrap in this case. This will prevent the null pointer issue, though reverse-engineering which mod caused it when the error occurs turned out to be trickier than I hoped. I wanted to have the scrap say, "Missing Recipe: FoD ID 38" but my remapper code isn't really designed to give the reverse-lookup ID :)
Anyway, the above fixes may clear up many of the issues players are seeing, particularly in mods. I'll probably sit on these changes a while longer in case others come up, and do a patch when enough have collected.
Overall, a pretty productive first day back! Not a lot to show for it yet, but quite a few things were knocked of my list. Hopefully, tomorrow will have more interesting prototype stuff to show off, and I can finally pare down the list of outstanding messages.
Have a good night, all!