Networking and Multiplayer
In the past I have used pre-packaged Network tools like uLink, Photon, uNet and as the project has progressed these tools were updated, changed or discontinued. A great deal of effort has been spent on keeping up with these changes both internally and externally. This has affected Forgotten Kingdoms to the point that the entire engine was overhauled several times to the detriment of the project as a whole just to accommodate the Network API changes.
As a result I have decided to roll my own Network/Multiplayer code purely in a stand alone language, in this case C#/.NET. This keeps my Network Code independent of Unity and its own internal changes. Also this allows my Network code to also be multi-threaded. This is a massive benefit for both the Client and especially for the Server.
This was no small feat and has been nearly a year’s long effort. While I have a working a first version of this Network Code I have already started the next version of Network Code with quite a few significant improvements. Forgotten Kingdoms will very likely use this newer version of Network Code. However, this will require that I finish the first version … first.
I am currently developing this Network Code (v1) within another project to some degree of success. This gives me a manageable platform to test these new Network functions. As this is being developed from the ground up and I don’t really have many external resources to draw from this is very time consuming.
More to follow.
Its been a while since I provided an update to this project here and a lot has happened since the last update. More to follow shortly.
Here is a screen shot of a Developer’s Area. Lately I have been tuning up the Character Controller, making the Player’s Avatar animate and respond to the Player’s input more fluidly.
I am also still working on the GameEngine’s ability to move the player from area to area.
This last week has been adding Mouse Over Tool Tips to inventory items. Now when you hover the mouse over an item in the Inventory, Action Bar, etc a Tooltip will appear displaying the relevant information for that item.
To add this neat little hovering window several other things needed to be added or fixed. For example, the value of this item now appears just below its name as a graphical representation of coins, with the text value also being colored to match the coin type. Also the master database needed some additional content to help fill in some of the details of items as their Tooltip is shown. Not all items have a description or lore attached but if they do it will appear in the Tooltip window. From the example you can see that if the item has costs, or requirements they too appear in the window. And the Item’s state is shown to let the player know if the item is Soulbound, Uncommon/Epic, or Unique.
Item Tooltips will need additional tweaking as they progress but for the moment they work well enough to press on towards other systems and components that need attention.
I have also been testing a new project management system. This project management system will (hopefully) handle a Wiki for the game, Bug Reports, Feature Requests, Project schedules and other ‘office’ duties that I have neglected lately. Though the new Project Management system seems like it will fit the bill, there is a lot of ‘setup’ required to make it work. As I am testing it now, it is not setup for external use just yet. I hope to open it to the web page service to intercept Bug Reports and Feature Requests for not only this game but my other games too.
Some of my time has been focused on setting up the Project Management system for testing and use.
Here is a image from the fifth iteration of the engine behind Forgotten Kingdoms.
Sporting some updates or upgrades to the; Artificial Intelligence, User Interface, Database.
My focus so far have been in developing a new Inventory System, sorting out the interface to the new database, and game session persistence.
Game Session Persistence is the engine’s ability to resume essential states of the engine prior to the last quit. At the moment, the player’s state and the world time and any items/spells not Idle are stored in the database for persistence. The Player’s world location is intentionally ignored at this time.