Build 1507
This is a significantly smaller update than what I would have liked. Things started off well enough, but as I was trying to implement a blueprint-based inventory selection system, things started to go wrong. At first, it wasn’t so bad, but eventually I started to hit roadblocks, bugs, and errors that took weeks collectively to get past. The main problem was the lack of debugging tools for blueprint, or at least the lack of tools as robust as the runtime debugging tools that VS ships with. Generally, when I run into a code-based problem that leaves me genuinely gobsmacked, I can carpet-bomb the general area with breakpoints and spend some time just observing the code in its natural habitat. With BP, unfortunately, this isn’t an option – or, if it is, I haven’t been able to find it. I can set all kinds of breakpoints, but I haven’t found a way to check the value of individual variables. I don’t know why this is, and I’m pretty sure that I’m missing something or just not looking in the right place, but it resulted in a relatively simple problem taking two calendar weeks to fix. Of course, it doesn’t help that I’ve been swamped at work and school, but the lack of robust BP debugging is becoming more and more of a thorn in my side as this project moves on.
Anyway, I did eventually get the aforementioned bugs worked around (so far), but not in time to have the visual inventory system working. I imagine it’ll make an appearance in 1508, but not today. Some of the steps I took to isolate the BP problems I was having led to discovering some others; namely that a check that was intended to prevent non-player characters from getting HUD elements assigned to them was not firing correctly and was spawning HUDs for everyone, regardless of whether or not they had human players on the other side of the screen that could see the HUD. This meant that in the worst-case scenario, every single character would have a HUD ticking away every single frame. For the set of debug bars on the right, this would mean 110 unnecessary HUDs in the world (67 alive + 44 dead – 1 player), each with their own Tick() loop doing several hundred calculations per frame. Naturally, fixing this check led to an instantaneous performance gain: 10-30FPS @ 1920×1080 on my machine, though your mileage may vary. It’s good that I caught this, but I feel stupid as hell for not seeing it earlier.
I started some work on balancing the randomly-generated genetics, and while things are better than before, stats still occasionally go well below 0. This is something I do need to work out, rather than just relying on an intelligent human to manually balance their stats, for two reasons: firstly, I want to prevent people from dumping stats at level 1; and secondly (the main reason), this is the system the AI-controlled characters are going to use as well. Looking back through my design doc, I found a rudimentary plan for pre-made starting configurations; things like “child of a scholar”, “raised by wolves”, or “blacksmiths’ apprentice”, similar to the character backgrounds in games like Arcanum. I’m not completely sure how I’m going to implement this, but it seems like the way to go, since genuinely random stat distributions have proven to be pretty shitty more often than not.
As usual, there were a bunch of !!fun!! glitches, the best two of which were the wildly incorrect spine angles while working on tilting the torso when looking up or down, and the high spin rate when attempting to rotate placeable items. Most others were either minor or just frustrating, but these two made me laugh out loud.
Changelog
added basic levels to genome code.
added quality level to genes.
added onscreen message when attempting to pick up items with a full inventory.
added rotation to held items; scroll the mousewheel before placing.
added torso/upper body rotation with controller rotation.
added two ramps into starting farmhouse area.
added fps counter to HUD.
changed gene assignment so that it now occurs on chromosome unlock.
changed initial pawn spawning methodology.
changed order of operations for and during prehistory simulation.
changed text formatting in both debug and stat bars.
fixed last name suffixes being different for the same gender within a family.
fixed crash when attempting to set SkyUpdatesPerSecond.
fixed a bug that was causing HUDs to be added to non-player characters. Expect a 10+ fps boost.
upgraded engine to UE 4.8.3.
Known Bugs
The ocean is solid, preventing you from swimming in it.
The esc menu is reluctant to give and take focus, requiring the user to click once to focus it upon opening and click once again to defocus it after closing the menu.
Turning headbob off will cause the player’s head to move through the camera while running or sprinting, temporarily obstructing your view.
Running out of living people to spawn into upon death will cause you to freeze in place and will display a debug message onscreen. To “fix” this, open the console and type RestartLevel, then press enter.
During periods of high CPU use, ragdolls may occasionally fall through terrain. This can sometimes also occur if you rapidly toggle in and out of ragdoll mode while moving.
There is a very small chance that everyone alive may die before the player has a chance to start playing.
The game may crash upon exiting. If this occurs, try updating your video drivers.
Download
You can download 1507 as a self-extracting archive (300mb, 714mb decompressed) directly from icannotfly.net, or use the new github mirror (if you have a download manager like DownThemAll, you can download from both at the same time to double the effective throughput).
Update: there are two additional mirrors for use: Bitcasa and Dropbox.
If you’d prefer, there are also .torrent and magnet downloads available (both 714mb, uncompressed). This is only experimental at this point and isn’t guaranteed to be available in the future.
If you find any bugs, please let me know.
Please Note
To start the game, extract the contents of the archive and run PlayGame-1080p.bat. You can edit this file if you’d like to change the resolution to better match your screen.