Still working on the massive inventory system. There are a lot of small details to deal with! The treasure chest is working great now. Reward items can be spawned when an avatar opens it. The treasure generator allows you to specify individual probabilities for each each item. Or, certain items can always be returned if needed. People can also leave things in a chest for other players to find. Items that were left in the chest will expire and go away eventually, unless in a private chest. There is also a wait time before new treasure will be generated for each avatar. If the chest is a public chest, then there is a time limit on how long a player can keep it open.
I was planning on adding a chest that can be opened into Been There Game. However, I discovered that my keyframed animation system was not working totally correct. To deal with rotations that don’t happen around the object’s center, I realized that an optional offset transformation would need to be added to the nodes in the Orion Engine mesh file format. Luckily, this part was easy due to my “chunk” based mesh file format. All existing files still work as intended. However, I’m not going to lie; updating the scene objects in the engine proved difficult. The matrix math involved with the hierarchy of 3D transformations and rotations was hurting my head for quite a bit, but I finally have it all properly worked out. This new “feature” changed the way that my bounding volume checks and intersection tests must be handled. But, it ended up being a lot simpler to implement than I had originally feared.
I also made a lot of improvements to the engine’s exporter to fully deal with the object offsets and/or pivot points. The animation export has also been further optimized, to deal with redundant keyframes.
Testing out the fresh installation of Red Hat’s Fedora 32 Linux. Everything seems to be working great!
Some things came up recently where I had to take a short break. But I’m back at it again. The game’s inventory system was nearly complete. I just need to finish dealing with dropped items.
Once this is complete, I need to tighten up how the currently online avatars are being handled. This is going to be key in dealing with avatars that are in different zones; i.e. if a person is in a dungeon (or far away), they won’t need to know about any avatars that are outside of that particular zone.
Once the handling of avatars is corrected, I’m going to add a portal to a new dungeon. This should be exciting to see in the game, and a lot of fun to implement!
Still working on the inventory system for the game. Much of it is finally in place. You can move items around, and organize your packs. You can give items back and forth between avatars. Also, when you wield your weapon, other players in the game can see you change it, etc. It’s working pretty nice. Currently, I’m working on dropped items. This same mechanism will be used for spawned items as well. Hope to have more updates soon!
I’ve been working on the inventory system for the game. It’s key to getting the other systems in place; like the combat system, avatar armor, weapons, etc. It turns out to be a little more complicated than I had originally thought. There are so many types of items that can be in inventory, with so many potential destinations, and different interactions. I have all of the database details and hooks in place now, I just have to finish implementing things in the client and server.
I’ve been working on making the Orion Engine more thread-safe. It’s desirable to be able to load a scene, while another is currently rendering. It turns out Direct3D 9 is not ‘thread-safe’. If you attempted to use our previous version 9 video driver from multiple threads, it could cause video driver crashes. Note however, starting with Direct3D 10, multiple threads are supported by default.
The new terrain scene management features are working great! I’ve invested a lot of time and hard work to make this happen. I can now finally knock this huge milestone off the list.
The custom client and server architecture is now effortlessly handling and rendering a grid of terrain blocks that is nearly 400 square miles in size! Terrain blocks are loaded in (including all of their associated content such as buildings and trees, etc.) and automatically unloaded on demand as the viewer progresses through the scene. Out of the hundreds of available terrain blocks, up to 9 may be active at any given time. Furthermore, the potentially visible ones are clipped away from the viewing frustum very quickly using axis-aligned bounding volumes.
The grid boundaries are also exceptionally handled. You can’t tell where the transition from one terrain block to the next is! The polygons line up perfectly. The texture does not have any artifacts either, it appears seamless! The map view automatically changes, and additionally tells you the name of the current land area. It’s all good stuff, I’m very excited!
I’ve been working on some of the scene management features for Been There Game. Mostly, I’ve been working on terrain optimization. I currently have a ROAM algorithm that works very well. It renders a one square mile chunk of land with pretty decent detail. However, I want the game to have a HUGE environment. With modern hardware, I don’t think ROAM is the best approach anymore. A lot of CPU is used in order to vary the detail of the terrain map based on the viewer’s location. Today’s hardware can handle large lists of polygons a lot better than before. I really hate to waste all of these clock cycles, when the GPU can actually handle it. Also, it’s not very easy to stitch together multiple chunks of adaptive terrain into a seamless landscape.
I plan on slicing the world up into a grid of terrain blocks. These blocks will be loaded and unloaded as needed, based on the viewer’s current position. All of the scene objects associated with the land blocks will be loaded and unloaded automatically as well. This will theoretically allow me to make the world as large as I desire! The plan is to start out with a map that is roughly 400 square miles. There is no way I could have done this easily with ROAM!
This is fun stuff, I hope to have it ready soon!
Happy New Year from Mind Blown Games! I look forward to starting a fresh new year working on Been There Game. I expect good things to come soon!