Terrain Scene Management

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!

Posted in Engine Development, Game Development, Graphics | Tagged , , , , | Leave a comment

Large Scale Terrain Grid

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!

Posted in Engine Development, Game Development | Tagged , , , | Comments Off on Large Scale Terrain Grid

Happy New Year

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!

Posted in Announcements | Tagged , | Comments Off on Happy New Year

Upcoming Game Client Programming and Testing

I plan to spend my time this holiday working on Been There Game. I’ve actually made great progress lately. For one thing, the bug that has been bothering me was finally resolved! Great way to end the year.

Happy Holidays from Mind Blown Games!

Posted in Announcements, Game Development | Leave a comment

Game Client Testing

Still testing the Been There game client. I’m currently working on a minor bug that has been bothering me for a while. Other than that, things are still working out pretty well.

I added a new feature to the game engine that I’m calling area sound. Unlike full 3D sound, it’s much less CPU intensive. It’s still positional, however the sound direction (and velocity, etc.) is not taken into account. This allows us to have different environmental effects (or music, etc.) fade in and out, based on the player’s current location in the world. Sounds are started and stopped automatically as needed.

Posted in Engine Development, Game Development, Music & Sound FX | Tagged , , | Leave a comment

Littletown

After a couple of months, the Been There test world called “Littletown” is finally back up and running! I’ve been chasing down a bunch of little pesky bugs in the new servers. However, they seem to be running pretty smooth now. Unlike the old servers, they don’t use any CPU when they are sitting idle now. I’ve spent a lot of time optimizing their code! I can leave the services run in the background, and not worry about them at all.

Final verdict on the Windows I/O completion port model is a big thumbs up. I’m not going to lie though, it’s a very complicated model to implement. However, it’s very efficient, and simply works great. I like it so much more, that I re-wrote the game’s Linux Gatekeeper server to run on Windows now. My sockets code base for Windows is just way more solid and robust. Plus the debugging is way easier for me.

Posted in Engine Development, Game Development | Tagged | Leave a comment

Salted Hash

Salted hash? No, I’m not talking about food lol. I’ve been working on the authentication methods between the client and the server. The stored passwords in the database are now hashed using a secure hashing algorithm. No more plain text passwords. I know, sounds bad, but it was strictly for testing purposes. The web site uses SSL encryption, and also hashes the passwords as well. However, I’m still working on the encryption methods for the game client.

I decided to salt our hashed passwords in the client with random bits that are generated on demand by the server. This way a login packet should never contain the exact same data every time a client authenticates and logs in. This is done to avoid a “replay attack”, where a “man in the middle” snoops the login packet, and tries to use it later to authenticate as that client.

Note that hashing is not encryption. Hashing is strictly one-way, and theoretically can’t be decoded. Encryption implies that a decryption can take place.

Posted in Game Development, Web Site Updates | Tagged , , , , | Leave a comment

Visual Studio Conformance Mode

I decided to enable the Conformance Mode (permissive-) option that was introduced in Visual Studio 2017. It’s supposed to help me write code that is both more correct, and more portable. I found out quickly that it reports a lot of conformance issues! Especially bothersome is the fact that you can’t directly call inherited members in templates that have been derived from. You have to either declare a using statement at the top of your template class to inherit the parameters/members from the base template, or add a scope resolution operator to them. You could also change the call from function() to this->function(). Since ‘this‘ is always implicitly dependent in a template, this->function() is dependent and the lookup is therefore deferred until the template is actually instantiated. It was a lot of work cleaning things up, since this code base is so large.

The Orion Engine SDK has evolved all the way from Visual Studio 6.0, to the most recent 2019 version. I’m very pleased that it still builds correctly and cleanly with all of the strict options enabled!

Posted in Engine Development, Game Development | Tagged , , , | Leave a comment

Client/Server Test Applications

I made a couple of simple applications that I’ve been using to test the latest client and server code. It’s certainly helped me find and fix a few bugs already. I feel like the code is pretty solid now. I can also use these test applications to send a bunch of “bad” data to my network drivers. You know this will happen once my servers go live again. I can verify that my algorithms, such as the “stale socket check”, are working as I intended. Time to keep plowing forward!

Posted in Game Development | Tagged , , , | Leave a comment

Network Server Driver

Finally, the new and drastically improved network server driver is working! I’m so excited! I have some quirks to work out still, but all is good. Now, I’m moving on to some encryption and hashing stuff that needs to be addressed.

Posted in Engine Development, Game Development | Tagged , , | Leave a comment