Multiplayer, Networks, Servers and Hardware…

Hardware and Servers

Recently I have needed to add several additional Servers to my system/services to assist in my projects. This has pulled my efforts away from Game Development and into the realm of Information Technologies, (IT). I have recently added two new Servers to my rack; one running a LXD container system and the other server very recently tasked with running OpenStack.

So far, installing OpenStack has been more of a challenge than it should be. However if successful I hope to migrate all services to this new OpenStack Service. This assumes that I can get reasonable reliability and speed from this OpenStack environment. So far I haven’t been able to correctly configure OpenStack to my environment.

If I can get OpenStack up and running it will allow me to move away from Amazon’s EC2 environment for development/testing and reserving Amazon EC2 for actual deployment.

The struggle continues…

Networking and Multiplayer

In the past, for my Game Development, I have used pre-packaged Network tools like uLink, Photon, uNet and as the project has progressed these tools were updated, changed or discontinued. This has affected my projects to the point that entire projects were overhauled several times 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 my BattleRIGs project to some degree of success. This gives me a manageable platform to test these new Network Functions as I develop them. As this is being developed from the ground up and I don’t really have many external resources to draw from; making this effort very time consuming.

More to follow soon.

Development Updates! Long Overdue!

What-Da-World!?

I have always said; “If I am not updating the web page(s) its because I’m actually doing stuff”.

Lots of stuff to report so I’ll just jump in.

Game Development

BoxRunner for Steam

As an exercise on how Steam works, BoxRunner version 1.4 for iOS was overhauled into version 1.5 for Steam. The entire engine was reviewed and optimized. The Steam interface was added and made available for purchase.

BoxRunner on Steam

I also added some frameworks for enabling VR but haven’t gone further than that – yet.

Network/Multiplayer API

The last eight months I have been developing my own Multiplayer Network API, (Application Programming Interface).

The Networking APIs that I was using have been abandoned and are no longer compatible with the current version of Unity. I have used at least three different Network APIs from different developers and they have all abandoned their work, or changed their pricing scale to make them undesirable.

This leaves my work to be obsolete and require a full rework. GameEngine versions 3, 4, and 5 all suffered this issue.

I was fed up with Unity changing their Network APIs or not releasing stable APIs for multiplayer. That in addition to their Network API would require that I use their back end, at a fee. I’d rather use the server of my choosing; as in my own or Amazon’s Servers. (For obvious reasons).

So after eight months I have a very good start on my own Network/Multiplayer suite. The current version does allow for a basic Multiplayer FPS game. There are areas that can be improved and areas that need fixing but at the end of the day it works, it is stable, and it is very expandable.

Built with Modularity in mind, additional systems can be added to the base Network Code using “Plugins”. While there are a few common Plugins such as; Game Chat, Player Login, and Message-of-the-Day, most Plugins will be specific to the Game itself. This modularity allows for the Network system to be tailored to the Game without huge rewrites of the API.

This leads me into my next topic.

Forgotten Kingdoms (MMORPG)

Forgotten Kingdoms is a massive project for one person. I don’t regret starting this project and I haven’t given up on it. What I have realized working on this over the last 5 to 6 years is this. I bit off more than I could chew. But I have slowly developed the tools I need for a project this size by making smaller games that provide the tools to be used on Forgotten Kingdoms. My new Network API is an example of that development process.

On the Forgotten Kingdoms page I will cover the systems I have working and what still remains to be developed.

http://www.forgotten-kingdoms.com

My current technologies don’t yet allow me to move Network Connections from one server to another just yet. I have an idea on how to do it but I am not ready to attempt an implementation. The Networking API at present only allows a single server/client relationship, however there are frameworks to expand that to a server/server/client relationship which would be needed to move players from one zone or instance to another. This implementation is needed for an open world game.

So to test the current Network API I am building a single server combat simulator to test my networking systems.

BattleRIGs the Battle Royal game I didn’t want to make. (Sorta)

BattleRIGs is a Battle Royal game that I am currently working on, (because everyone is working on a BR game right now).

You are a BattleRIG pilot out to dominate the battlefield. Leave none standing.

BattleRIGs is the test platform for my Networking API. This fast paced combat simulator gives me a way to test my custom networking code for stability, speed and reliability.

At present BattleRIGs is very Alpha. (As are most of my current projects). But there is basic combat and it works.

Players can login, enter the world and battle it out in there BattleRIGs. The BattleRIGs world is persistent on the Server. I would like to have player encampments that the ‘clan’ would have to maintain persistently. It is my assumption that this would require player engagement over time.

Social Stuff

I have started doing some Game Development live on Twitch but not too much. With my Network API being very confidential, (to dissuade game cheaters), I haven’t done much live coding. That said I have been on and its been productive and well received.

And I play games too, so there is that.

ChargedNeuron at Twitch.tv

I have been posting a bit of Alpha content on my Discord for the brave souls that dare test my code. Ill put the Beta stuff here as well as Discord.

Summary

Lots going on, lots keeping me busy right now. All of it good stuff that will pay off in the end. Stay Tuned and watch for updates!

December Engine Summary

With my Real-Life job dominating all my time and my spare time it has been incredibly difficult making any substantial progress on my GameEngine, however some mentionable progress has been made.

This last development duration has been filled with research into some new design methods; most significantly is the possibility of a truly seamless world.

By combining Procedural and Static designs I have managed to create an endless world that follows predetermined guidelines while maintaining a level of randomness. This Procedural / Static method allows me to create a ‘defined’ area that the game’s story will take place while also allowing the player to explore beyond the normal bounds. For example the vast ocean space that defines the boundaries of my storyline will also contain unexpected islands and land masses that were not specifically intended. What secrets could these unknown spaces hold?

One difficult setback is that my previous Networking toolset is no longer compatible with this engine and I will have to rebuild that toolset from scratch. Due to the scope of this setback I am forced to set Networking and Multiplayer aside for a later time. While this disappoints me greatly it is necessary for the time being. There are other parts of the Engine that have a greater priority. Keeping all this in mind I have been coding the foundation to allow Networking to be added at a later time.

One persistent issue has been the ability to break up the world into manageable areas. With a Procedural/Static engine this issue has come to the forefront. My previous approach to how I will manage this issue seems to stand as a viable method. Each ‘zone’ will contain all the information to house the necessary slice of the world area along with the ability to generate the remaining surrounding area on the fly. As a player moves out of the zoned area they will be handed off to the next zone and that zone will pickup the player from there. If a player passes into an ‘uncharted’ area the GameEngine will continue to generate that part of the world as needed and maintain supervision over that player regardless how far that player travels out of the zone bounds; until such a time that another zone is specified.

I am hoping to use my vacation time at the end of the year to push forward and have a working technology demo at the end of January; but that is also contingent on my real-life obligations.

Have a fantastic Holiday Season!

ChargedNeuron

InHouse iPhone/iPad App

I worked on making an automatically updating company contact list and document list application for iOS. The App would automatically check for changes in contact information or documents based on individual groups.

The idea was that only a single department needed to update their single contact list or their document list. InHouse would monitor each group for changes and compile the groups into a single searchable list.

These Lists and Documents could be downloaded to the iOS device and used ‘offline’ or without internet access. The app would manage its own memory footprint by monitoring documents for their ‘last used’ stamp, allowed the older unused documents to be overwritten by newer more frequently used documents.

The app was also able to locate the correct regional salesman and their contact information based on the iOS device’s GPS location.

IMG_0860IMG_0861IMG_0611