Animation Controller Scaling

Turns out I wasn’t extracting scaling properly in my 3ds Max exporter plug-in. For one thing, if the local transformation included any scaling, it could cause NAN problems to arise while converting the matrix rotations into quaternions for the keyframed animation system. So, I added new methods to the 3×3 and 4×4 homogeneous matrix template classes in the engine to properly decompose a matrix (without shearing) into individual translation, rotation and scaling values. This allowed me to properly export all of the animation data now.

Posted in Engine Development, Game Development, Graphics | Tagged , , | Comments Off on Animation Controller Scaling

Networking Code

I finally feel the game’s network code is very stable. I found a pretty major bug on Christmas day that would cause file downloads to randomly stall. It had been nagging me for a while. Of course, this severely hurt my update system. Fixing it made me very excited! Then today, I found the remaining bug! All I can say is… sweet! Wireshark sure is a great tool, lol.

I updated my test client, and test server applications to really put the code library through the loops. I can send HUGE files back and forth, create an exponential feedback loop of data, send malformed packets, small packets, big packets, too many packets, too few packets, etc. It helped me uncover a few issues, including a fairly nasty concurrency issue that would cause the server to puke and write it’s minidump.

Posted in Engine Development, Game Development | Tagged , , , , | Comments Off on Networking Code

Client Avatar Updates

The game client now queues up all avatar update notifications. For example, if you walk into an area with a LOT of avatars, they are slowly and gracefully “spilled” into the current scene. Instead of trying to load all of the avatar objects at once, abruptly holding up rendering. This would be bad!

There are a lot of fine details in this implementation that must be paid close attention to. For example, network messages must be queued up while an avatar is being loaded on its own separate thread, for further processing later. Also, what if an avatar leaves the area, and you haven’t even finished loading it yet! Superb object synchronization is a must. Nobody wants things to get out of whack!

Posted in Game Development | Tagged , , | Comments Off on Client Avatar Updates

Game Server Avatar Updates

The game server finally properly handles avatar update messages. Basically, all avatars are grouped into small areas. These areas align with the land block grid system used by the terrain renderer. As a player moves in and out of a particular land block (or entire land area), neighboring players are notified of this change. Avatars are thus dynamically loaded and unloaded on demand, based on where you currently are. Of course, to further optimize avatar rendering, distance and visibility tests are also incorporated by the client.

Posted in Engine Development, Game Development | Tagged , , | Comments Off on Game Server Avatar Updates

False Positive

Have you ever written and compiled an application that instantly gets flagged as a Trojan? Windows Defender thought my Setup.exe bootstrap program was a virus! This cracks me up. I reported it as a false positive to Microsoft and all is well.

Posted in Game Development | Tagged , , | Comments Off on False Positive

Been There Radar Window

The radar window now works in the game. It shows all avatars that are nearby. It can also be used to select an avatar. Once the combat system works, it will also show the enemies/monsters. In addition to a few minor fixes, new portals and objects have been added to the game as well. The new fire effect looks awesome!

Posted in Game Development | Tagged | Comments Off on Been There Radar Window

Object Identification

The examine dialog can now be used to identify all objects in the game that can be interacted with. This includes everything in your backpack. New treasure chests have been added to the areas where the portals take you, all with new inventory items.

Posted in Game Development | Tagged | Comments Off on Object Identification

Drag and Drop

The Trade Window in the game finally works correctly, and consistently. There was a lot of frustration getting there however! I kept finding a lot of weird quirks with how I implemented the drag and drop feature. For example, I was hit testing on windows that weren’t even currently visible, lol. This has all been cleaned up and seems to be working great now.

Posted in Game Development | Tagged | Comments Off on Drag and Drop

Avatar Trade Window

Currently working on the “Trade Window” in my Been There Game client. This will be used to safely trade items between two avatars, or a vendor NPC. To open it, you simply double-click another player’s avatar. If the other avatar does not already have a trade going on, your trade will be initiated. A lot of this code is similar to the treasure chest code that I already have working, so this new feature shouldn’t be too hard. We shall see!

Posted in Game Development | Tagged , | Comments Off on Avatar Trade Window

Treasure Generator

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.

Posted in Game Development | Tagged , | Comments Off on Treasure Generator