Worklog for eng_harvey

Game Server - Blitz3D Client Userlib

Return to Worklogs

Final Entry - Until December 2016!2016-09-17
I am not going to be updating this worklog until December sometime . . .

Aside from what I mentioned in the last entry I will be doing the following:

]---) 1. Coding the game server in C++.
]---) 2. Starting a new game engine for DirectX 12.
]---) 3. Testing the new game engine with the game server.
]---) 4. A whole bunch of other stuff not related to the above . . .

I will be back in December with an update and hope everyone has a positive next few months!

If all goes well - hopefully we will finally have a release!

See you soon!

Update - Friday, 9 September 20162016-09-09
On Monday, September 26, 2016 this project will become 7 months old!

We are about to get back into our G1 Network project and make a start on the G2 Network project. It has been a while since we have worked on The Infinitude Project and over the course of the last couple of months we have discussed many issues that we want to work on and many features that we are thinking of including.

Next to do list:

]---) 1. Update of our website - major overhaul!
]---) 2. Skim over all the code.
]---) 3. Finalize encryption.
]---) 4. Stress test our sync and interpolation.
]---) 5. Work on Blitz3D networking tutorials.
]---) 6. Work on PureBasic networking tutorials.
]---) 7. Add forum and search engine to the website.

We also plan to add examples of Blitz3D code to our website that highlight usage of the G1 Network from Blitz3D.

Something else we have been discussing but are yet to make a final decision on is making Blitz3D DirectX 11 capable.

The progress is going to be a little slow as we have many other plans and projects happening but we are committed!

Happy coding everyone :)

Update - Wednesday, 1 June 20162016-05-31
Today is a milestone . . . It is time to get the game client up and running - so aside from the fairly routine things like planning and talking we are about to get our world up so that we can import assets from the DevClient and with a bit of luck make the GameClient much more light weight and efficient than the DevClient so that the game play is a pleasure.

We are also extending our technologies into a Chat system not too unlike Skype. We are learning so many exciting things on a daily basis and have explored many ideas.

Another thing I would really like to take a look at are simple networked games like card games, board games and what ever else could work well networked.

Yesterday we worked further on encryption and packet bounce back(a similar concept to ping).

The poor old Dwarf - I am guessing he has been nearly everywhere now :)

Update - Thursday, 26 May 20162016-05-26
* * * Three Months Old * * *

Hello everyone!

Our Project has turned 3 months old and we have been doing extreme amounts of work - we are working on some side technologies at the same time that are network related. We have also been working on security concepts and have some interesting results from different tests.

We have tested our DevClient with a much more complex world that includes a large map, trees(3D Sprite and 3D Meshes), grass, buildings and water just to name a few elements and we have had much success.

Aside from the hard work, we are starting on our GameClient on the first day of June 2016 - so a few days time then. To celebrate the GameClient we are going to build an MMORPG that the GameClient will be used for.

We hope everyone is having the success they want in their respective projects and we will keep you posted on ours!!!


Updates temporarily on hold :)2016-04-26
Due to the nature of our latest work and exciting new features we are working on it has become difficult to maintain worklog updates so we are going to place them on hold for a little while.

Look forward to a whole bunch of new features in 0.5.0


Update - Wednesday, 13 April 20162016-04-12
* As of now we are nearing the half way point to our first full release . . .

Reminder for Tuesday, 26 April 2016 - Our Project will turn two months old . . . It will be time to start releasing code, screenshots and a few working examples . . .

** - ** - ** - ** - ** Plans for Version 0.5.0 of development are underway ** - ** - ** - ** - **

*** The plans for the next iteration of development are taking place and it is all looking great!

*** Unfortunately the Website is going to be taken down for a little while to get documentation, tutorials and a search engine built for it as well as its own forum.

*** I finally finished reading the book - so to speak for PureBasic! Yay - the next evolution of development is going to be fun - I just started reading TCP/IP Illustrated and 3 other Mathematics related texts . . .

Update - Wednesday, 6 April 20162016-04-05
* * * * * * * WEEKLY UPDATES * * * * * * *

We are changing to weekly updates . . .

Our project has been around for a little while already and we feel it is necessary to move to weekly updates of the worklog.

Planning is complete - engineering is well underway - plenty of new code development is taking place all the time.

Update - Wednesday, 30 March 20162016-03-29
***** Break Time *****

Time to take a break for a week - Everyone needs a rest. So today we have a system that is easily able to deal with world creation - over the next few days I will be posting some of the results as screenshots of a multitude of tests. It is turning into a nice system to work with and has huge potential.

I can safely say we are headed down the path of being able to set up a full on enterprise grade solution.


Update - Tuesday, 29 March 20162016-03-28
* Now that some of the smaller things have been done it is time to add the ability to place many different trees over the network; this will pave the way for adding other objects over the network.

** We have been doing little jobs like hiding initial loaded objects in the network dev editor. Tied in a menu system to make life easier; includes some help info. Placed in dev logo; bottom right; in main screen. Added back in; the load screen.

** Many other assorted things that help to clean up code and make the interface more efficient.

Update - Monday, 28 March 20162016-03-27
Some example test code . . .

***** We had an absolute ball today sending asset information over the network - allowing us to place objects on all systems connected such as trees, buildings and whatever else you could think of.

***** The ideas started flowing like crazy again - ah it is nice to be back in the brainstorm.

:) !!!AWESOME I say!!!

~GF & eng_harvey

Update - Sunday, 27 March 20162016-03-27
Happy days!

Team Development and Debugging level achieved.

It only gets better from here.

Update - Saturday, 26 March 20162016-03-26
**** One Month Old ****

Update - Friday, 25 March 20162016-03-25
The international team has been busy today - discussing many topics and working on Blitz3D code that uses the ShowMe() and TraceMe() functions. We are going to use some code that helps us place simple things like sprite trees - we hope to get some nice screen shots up tomorrow or the next day.

Update - Thursday, 24 March 20162016-03-23
*** Version 0.3.2 ***

** Busy day today - adding ShowMe(), TraceMe() and PlaceTree() functions to the dev executable and userlib!

NEWS - Topic: The Future
We have a plan to work on a voice transmission protocol - once we have finished this protocol we will then add it to a video transmission protocol.

Imagine having voice and video along side some sort of in dev whiteboard where developers can express ideas as a team inside the very environment that your players will use - developers could be ghosts in the game and see each other - the players could be toggled in and out of sight and would only ever see the dev if the dev makes him/her self visible.

Update - Wednesday, 23 March 20162016-03-23
** We are adding TCP/IP tools to the mix and our project just grew significantly :)

** Test Day: We performed another test today - we used a client built in Blitz3D that uses our client DLL for network access - smiles all around!

Update - Tuesday, 22 March 20162016-03-23
I am feeling much better today and have managed some updates. We have also been troubleshooting network problems that we would like to write about in the future so others can avoid the same perils.


Update - Monday, 21 March 20162016-03-20
eng_harvey is feeling a little sick today therefore todays progress will be a little slower than usual but to never give up is to see it through - so something will get done.

Update to be posted later!


Update - Sunday, 20 March 20162016-03-19
** We have a basic world to work with - now it is time to connect the client up to the server - share world among other clients and update positions an all systems - plus we are going to add some basic group edit functions and have all that update over the network - probably a lot for an initial test run but it will be fun.

This going to be fun - we are gearing up for an in world test of our game network - we will keep you posted!

~GF & eng_harvey

Update - Saturday, 19 March 20162016-03-18
*** Three Weeks Old ***
Our Game Server project is nearly a month old and still going strong. Motivation levels are high and the ideas are still trickling in. We have a good design with powerful code - things are looking good . . .

Update - Friday, 18 March 20162016-03-17
* Thirty million tokenised strings parsed in 423 milliseconds - each tokenised string containing 7 elements - Go PureBasic!
** Plenty of processing power for Orientation Packets - finally have optimised code ready to go!

** Today is the day I start working on the orientation updates - exciting times ahead!

I have updated the website some more and added Forum, FAQ and Security pages as well as a few others - feel free to take a sneek peek!

Update - Thursday, 17 March 20162016-03-16
Look what a port scan triggers :) An initial hack attempt would trigger the same thing at which point you could ban the IP. Even if a hacker were somehow able to get past this - there is a barrage of other nasties waiting to throw the hacker into a honey-pot and on a wild goose chase. I hear the banjo playing now. Whoo hoo!

Well the time has come to add orientation updates to the server.

We have a good solid base - we are very motivated toward getting the server to a workable state.

Still a lot of work to do, but we are getting there - step by step.


Update - Wednesday, 16 March 20162016-03-15
So most of the Game Server Logon is complete - I am adding the Logoff as we speak.

Update - Tuesday, 15 March 20162016-03-15
Started looking at different network editing strategies - it would be good to have some generic commands that could cater to different level editors that individuals have made.

If you've added some editing functions - it would be good to tie them into some network commands that could update the world globally.

I think this warrants discussion among developers that will use Infinitude Network setups to drive their MMO's.

Just an idea at this stage! See below for potential commands - I am calling them command slots at this stage - if you have a better suggestion, you are quite welcome to let me know. No suggestion is silly!

Command Slots

1 - PlaceTree_Net()
2 - PlaceModel_Net()
3 - AddGrass_Net()

4 - CustomObject1_Net()
5 - CustomObject2_Net()
6 - CustomObject3_Net()
7 - CustomObject4_Net()

I like to keep the ideas flowing even if they are not things that will be included in the final release, they are still things that can be displayed as ideas for code customisations on the website.

Update - Monday, 14 March 20162016-03-14
-->> Starting on Version 0.3.1 in which we test some firmament and terra firma inside Blitz3D with the aid of our Infinitude Suite!

**** Monday Madness - Black Ops Dev is coming up and Black World is the code and we are ready for action - in the test we will do the download thing and see if we can create a world out of pure dark over the internet.

Update - Sunday, 13 March 20162016-03-12
*** We have tested the Server between Australia and the USA and it works like a dream FPS is performing phenomenally - 300 -> 3000 FPS!


*** Finally the Chat Router is working perfectly!


** **** Version 0.3 **** **

* Front page of Google with search term "purebasic game server" :)

** We are starting to get some pretty impressive results - Looking forward to putting some screen shots up soon!

** I have created a Project Management application for members of the project - It allows us to have many eyes on the architecture to ensure high speed and high quality.

Update - Saturday, 12 March 20162016-03-11
Latest News - 9:32 PM - Well the design phase is nearly over and the first run of coding is about to begin - We are going to take the refined code that we have now and build a fully functioning chat system into the game server and the next stage will be adding orientation and packet regulation. We are going to test the chat system before we move on and then upgrade the VPN. After that we will start implementing interpolation, compression and encryption.

**** ***** 2 WEEKS OLD ***** ****

** Our project is two weeks old today and already we are enjoying the development time and the ideas are numerous among the team and new projects are also being talked about.

** I will be able to devote much more time to the project for the next couple of days - It has been a big week already and we are excited to pick up the pace again.

A lot of different things happened during the week including a few code modifications just to tidy things up a bit plus there were a few modifications to the website as well as additions.

A help file was started yesterday and I am hoping to get a few screenshots up in the next few days as well as some code explanations and how far we are through the project should be able to be seen on our website.

Update - Friday, 11 March 20162016-03-10
Another day at the office!

Update - Thursday, 10 March 20162016-03-09
* The Website has been modified and added to.

* I added a simple code examples page to the website for those interested in the code!

* Another day is born in Australia and I have to teach today - fortunately I have decided to introduce one of my students to the game server and see if we may write a couple of procedures for it.

Update - Wednesday, 9 March 20162016-03-08
**** Code reorganisation - I had to restructure the code as it was starting to drive me mad - The major components are inside their own include files now and that is going to make a real difference in the next few days.

Using the NetEvents file as an example:

*** No we have some decent structure - the meet went well and we are more organised than ever - full steam ahead now!

Update - Tuesday, 8 March 20162016-03-07
*** 11:16 PM - So now that the project is starting to grow I went searching for more ideas and technical documentation to help us create the ultimate server and stumbled across this interesting set of articles on game networking - what a wealth of ideas!

*** Something I am toying with is the idea of creating a VM inside the server and client and running lua scripts with the intention of sending them over the network to become part of the game - I am even toying with the idea of creating a new script language that can be fed into a REPL locally for quick tests and sent to the server and run through an interpreter to execute functions. I would want the scripting language to be customisable so that an alias could be used to mask commands that way it could be customised to suit the style of game ie. RPG or FPS or whatever - I don't know I have these crazy thoughts!

** Confirmed Skype meet with Guy Fawkes - the inspiration and driving force behind the G1 Server - may as well say the team leader :)

** Discussed with Lord of Goo a way to add custom slash commands using XML and JSON parsing and the potential for a command such as CustomSlashCommand() and even CustomPacket().

** Discussed various networking elements with Lord of Goo including IPv6 - and extended the UDP Protocol more. Also worked on bits versus bytes in the protocol to start the compression process.

** I was introduced to the Lord of the Rings slash commands today - I am inspired!

** Confirmed with D-Man whether he would be interested in a network game dev team - YES!!!

** Discussed using G1 to create World of Warcraft clone with all the networking features.

** Well its Tuesday here - 12:36 AM - I have been at it for the last few hours and need a few more hours to finish what I started but unfortunately I can probably only afford another hour at the most - so lets see what happens!

Update - Monday, 7 March 20162016-03-07
** I also have a command called DisConnIGS()

** I plan to add the command ModeratorCommand() in the next day or two.

** I plan to add the command SlashCommand() in the next day or two.

* I just noticed a spelling error in my comments :)

PFI - Packet Format ID @ Server

PFIC - Packet Format ID @ Client

Packet Format ID - PFI

0 = Position/Orientation
1 = Public Message
2 = Private Message
3 = Recieved
4 = Send Again
5 = Blank for now!
6 = Blank for now!
7 = Blank for now!
8 = Blank for now!
9 = Blank for now!

Packet Formats - PF


0,ID,X,Y,Z,P,Y,R = Position/Orientation Packet - 25 Bytes

1,ID,Null,Message = Public Message - Lets try 514 Bytes

2,ID,Recipient,Message = Private Message - Lets try 562 Bytes

; -------------------------------------------------------------------
; These are special - they could be tied into the clients system.

3,ID,PKT# = This could be kept pretty small

4,ID,PKT# = This could be kept pretty small

So upon return you would have something like:


The packet system between server and client is slightly different hence the last example.

Big Code Weekend Update - Sunday, 6 March 20162016-03-05
**** Well after one very frustrating weekend lets hope the next big code weekend is more productive - it happens . . .

* 9:38 PM - I spent most of the day playing with Azure - I want to run a public Beta test with it for Infinitude Game Server. It is a Server 2012 install but I am only going to use it as a client to access the server at my location since it appears to be behind NAT.

* Started researching Nat Punch-through - UDP hole punching techniques.

*** So in keeping with simplicity - I have Blitz3D commands setup like this: ConnectIGS() for connecting to server. InputTest(str$) for test messages; disabled by default.
* So for now I am hoping for:
** ConnectIGS() - Connects to game server
** UpdateFIGS() - Updates from game server
** UpdateTIGS() - Updates to game server
** DisConnIGS() - Disconnect from game server
* I hope this is easy enough to follow; these are the Blitz3D commands for connecting, receive updates, send updates, disconnecting.

** 11:34 AM - Time to get back into it - More message routing.

** 3:15 AM Now lets try routing a message or two!

** 3:10 AM Finally - after much frustration I have the basis of the message router in place - coded tested and working - this has taken 2 hours more than it should have.


Big Code Weekend Update - Saturday, 5 March 20162016-03-04

12:36 PM - Waking up has been tough today - so I am getting a late start!

1:59 AM - Just turned 2:00 AM -> I am setting up a network simulation to test two moderators, one admin, four players. I will use this simulation to test the private message routing system and the players coordinate/rotation. This system I call the G1 - Game Network . . .

So the example I created in Blitz3D was able to close the server remotely - easily overlooked since I never placed those in the routing system commands under Admin.

"/whisper player_name_here"

*** Message Routing System - First for Chat
Public Chat
Private Chat

*** Admin Commands to Server - Now routed properly!

Latest News!2016-03-03
Friday, 4 March 2016 -> Sunday, 6 March 2016
So I have a giant weekend of coding planned and should see some serious results by the end of it.

Recently: Code progress so far has been consistent - I plan to pick it right up next week so hopefully to have results by the following weekend!

Today - Friday, 4 March 2016
I discussed respawn with my local team and other issues associated with game play that we would like to see fixed in future MMO's.

Update - Friday, 4 March 20162016-03-03
** 10:43 PM = Research

** 2:58 PM = Ok so I have a Blitz3D Test Program that is successfully connecting and using the server - I am able to send simple text and the example is text wrapping. Time to have a break!

* Time to start thinking about Delta Compression.
* Time to start thinking about basic security and encryption.
* Updated the HOME page! - Link!
* Web Copy of IGS Delineation V1 complete - Uploaded! Link!
* Version 1 of Infinitude Delineation - Complete!

Update - Thursday, 3 March 20162016-03-02
* Started writing Infinitude Delineation
* Started thinking about Blitz3D Examples
* Started working out the optimum way to send sounds, music, & video.
* Contemplated a separate chat system that works with all the other systems.
* Started thinking about central content management versus P2P.

Update - Wednesday, 2 March 20162016-03-01
Rough idea for project road map . . .

Update - Tuesday, 1 March 20162016-02-29
* Discussed plan for private chat!
* Worked on plan to translate packet data into meaningful structured lists - at server end.
* Discussed(with team) Blitz3D end of packet data coming in from Userlib.

An idea I have for the front end - fully functional . . .

Temporary Home!

Type in /hide at the Admin Console; allows the server to be hidden from view - so instead of a listen server the game can be started locally and connect locally to keep the server and game separate - /show brings the server back up - the admin console could be accessed through a userlib in game to do admin - On the server machine only the server needs to run but a game could be run too.

Update - Monday, 29 February 20162016-02-29
* Finally decided it was worthwhile going ahead with this :)
* Contemplated Floating-Point Determinism.
* Started designing synch, timing and Client Management.
* Started working with PureBasic Structures, Pointers, LinkedLists, Etc.
* Fixed Admin Slash Commands.
* Added Server Admin return messages.

Update - Sunday, 28 February 20162016-02-29
* Added Slash Commands for Admin Client.
* Remote test of Game Server and Client - so far so good.
* Started coding Admin Client Application.
* Started coding Client Dll.
* Started coding Server Application.

Update - Saturday, 27 February 20162016-02-29
* Dll test build.
* Familiarised myself with PureBasic as per request.

Update - Friday, 26 February2016-02-29
* Thought more about using PureBasic.
* Started Research and Development.

Update - Thursday, 25 February 20162016-02-29
* Considered using PureBasic by request.
* Started work on a plan.

Update - Wednesday, 24 February 20162016-02-29
* Spent time concept building.
* Looked over some code and considered solutions.
* Held discussion regarding Network Libraries.