Build 1410 Available for Download
Lately I’ve been getting a bit tired of pushing out updates that have a lot of backend changes that I spent a lot of time on, but due to the successful integration of these changes, nothing really looks different. This would have been one of those updates had I not replaced the ‘ol shanty in the corner with a big farmhouse complex.
It still looks like shit, don’t get me wrong, but it’s better than it was before, and there’s a definite visual component to this update, so I’m pleased.
First up is SimulateTimeTo(), a function used to move time gradually forward to a target date. The earlier implementations of TimeSet and TimeAdd (which set the world time and add to it, respectively) simply snapped time instantly forward to the target. This skipped over any events (like birthdays, deaths, mating and offspring, and so forth) that may have happened in the intervening time, leading to a world full of really old people and no new ones to replace them. Instead of speeding up the speed at which the game runs, it’s easier and less expensive to take small steps forward in time instead of making the jump all at once. The current step interval has been set to somewhere between an hour and a day, and this is remarkably fast, and I’m considering getting more fine-grained with it. Currently, though, only birthdays are calculated. Run the game with the -log option and try adding a decade or so to the ingame time.
The biggest behind-the-scenes update this month was the introduction of the Creature system, which replaces the earlier Bloodline setup. Bloodlines as a concept will still be a major part of the game, but as a method of organizing and cataloging creatures – especially over long periods of time – it just wasn’t working. The problem was that instead of storing individuals and then calculating the relationships between them, I had chosen for some reason to store the relationship and place individuals inside of it. This works easily when going backwards in time, which is how I may have made the decision to use this system originally, but when going forwards in time like a normal person, all sorts of problems present themselves. The first major one I ran into was cross-breeding bloodlines: if two people from different bloodlines mate, what happens to the child? Does it go into both bloodlines, neither, or just one? If both, bloodlines will gradually lose their organizational power after a while and will become meaningless once everyone is a member of every bloodline. If neither, either we now have an individual outside of a bloodline, or we have to create an entirely new bloodline. Either way, the offspring has no structural relationship to it’s parents. If we go with just one bloodline, how do we choose which one? After a bit of thinking, I realized my mistake, and rewrote things. Individuals are now stored as individuals, with parents and children being stored as pointers within the individual, making bloodlines an abstraction, a linked list.
Actually, now that I think about it, there is a second visual(ish) change: ragdoll mode is working again! I spent a fair amount of time on this, but it was totally worth it. It’s possible to have a whole lot of fun with just this feature, although there are some bugs that still need to be worked out. Characters now go into ragdoll mode when killed.
For 1411, I’ve decided to work on combat: this should be a nice mix between a visual and a backend system. See you then!
fixed ragdoll mode! Pressing [G] will now cause you to dive like a footballer.
changed traceline calculation; it’s now done in code instead of blueprint, in preparation for adding combat. Left-clicking will add a traceline to the world; green if something has been hit, red if not.
changed crosshair to be shown by default instead of hidden.
added rudimentary time simulation via SimulateTimeTo; in instances where large periods of time need to be skipped over (sleeping at night, skipping ahead to the next playable person), time is now incrementally simulated in the background instead of jumping straight towards the target time. Currently only birthdays and age are calculated during the simulation.
changed Time, TimeSet, and TimeAdd to work with SimulateTimeTo.
added a whole lot of names to the random name generator.
changed engine version to UE 4.5.1.
changed from a bloodline-based system to an individual-based system.
added a farmhouse complex.
There’s no menu, so to exit, open the console by pressing [`] or [~], (below [ESC]), type exit and hit [enter].
Walking into the ocean may sometimes cause you to slow down, occasionally so much that you come to a complete stop.
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].
You can download 1410 (x64 only) directly from icannotfly.net. If you find any bugs, please let me know.
To start the game, extract the contents of the archive, navigate to icnfrpg/Binaries/Win64 and make a shortcut to icnfrpg.exe somewhere, rightclick on the shortcut, go to Properties, and add -log to the end of the Target field.