I'm going to try to post a video of me wandering around the world and zooming in and out soon. Possibly fiddling with the inventory system too, which seems to be working well. Better yet, I might release a small "berry collecting" demo in a week or two. It will just let you wander around the random island and collect and eat berries
Not very exciting, I know, but at least people will be able to check out the engine, and I can get some performance feedback on things.
I already know it doesn't run well at all on my wife's 3 year old laptop with an integrated Intel graphics card. (The frame rate was choppy and the water was glitching out) The game is all hardware accelerated, and I'm pretty sure you'll need at least a pretty good video card to run it well. We'll see I guess. I'll probably include options to turn off effects like the shadows and such.
I just got a global persistent object list working. It basically tracks all the objects that are "asleep" That is- objects that exist far enough away from the player that they are not simulated, but they aren't part of the static world map either. This is for items that you dynamically drop, wandering NPCs, and wandering animals. I'm tracking them with just five numbers:
1- Type
2- X Coor
3- Y Coor
4- Variable 1
5- Variable 2
The variables are there to track changes or states of the different objects. (Say, the hunger level of a bear, or the amount of ammo in a hunting rifle) This is so the game can remember at least a little bit about an item when you walk away from it, so it still seems like the same one when you get back to it. I can't actually keep objects full internal representation around, or things would bog down pretty quick. I only simulate things in a pretty large active region around the player.
Interestingly enough, items are originally stored in the world.stuff[] array, but once you trigger an item to spawn, it is moved over to be tracked in the dynamic object list. (Basically, once an item is made to "exist" for the first time, you can't guarantee it will ever slot nicely back into the object array of the world.)
Of course, I can't very well infinitely grow this item list either, since you could eventually run your computer out of memory by flooding the world with items. I'm curious to see how big the list of objects can get before I need to start tossing some of them out though. Even if I can keep only the most recent 200 objects around, it should probably be enough to hide my cheaty methods
Open world programming is hard.