Jordan Bonser
  • Home
  • CV
  • University Work
    • Second Year Work >
      • Top-Down Shooter
    • Third Year Work >
      • Terrain Analysis Project >
        • Terrain Analysis Tool
        • Game Demonstration
      • Post Processing
      • Android Application - Sports Centre
  • Projects
    • Unity Development >
      • Lerpz Tutorial
      • Dare to be Digital Entry - "Lit"
      • Unity Game
    • Geometry Instancing
    • Road to Eldorado
    • Level Editor
    • OpenGL Work
    • JBEngine
  • Blog
  • Tutorials
    • Flask Session Timeout

Development Blog

Vis 2013 Annoyances and Computer Parts

30/6/2015

0 Comments

 

Getting the JBEngine Vis 2013 compliant

Okay so last time I tried way too much and ended up just having a project that I couldn't run and did absolutely nothing. This time I thought first thing I would do is make sure that I can convert my 2010 JBEngine solution into a 2013 version. This brought quite a few problems:

First of all there were issues with me having used NULL instead of nullptr's for the std::function objects I've used in a couple of places. This was fairly straight forward. 

The next thing that hit me and set me back a little is that I was getting a LNK2038 error because of the 3rd Party Networking library I was using (RakNet). This error basically meant that It was compiled in a Visual Studio Version that wasn't compatible. 

So I had to download the source and re-compile it in Vis 2013. A bit of a pain but it needed doing. Also whilst I'm doing this I am going to have a look through and make sure I create as many of the libraries as I can and link with them where needed. i.e. MTd, Mt and also the dll version. I think using the dll version would be more beneficial but I had this idea in my head about shipping my "Engine" as one binary but in terms of flexibility and general ease I will probably use the dll instead to avoid this happening again.

Another added note is that I'm going to keep hold of the source so that I can use it to make the Linux library when it comes time to doing cross platform development. 

One final annoyance was that the project wouldn't seem to build because Vis couldn't find rc.exe so after copying and pasting it to the correct path It all started working. ( Only took an hour or so! )

Motherboard and CPU Arrival ( I amaze myself sometimes)

Okay so yesterday my motherboard and CPU arrived and I was really excited so I went and bought a little set of tools so I could get cracking on it when I got home. My thinking was, I don't need to bother buying RAM yet I can just stick my old RAM in for now and I will make do with 4gb. I had forgotten that my current desktop was over 7 years old now and only had DDR2 RAM.. Well done Jordan!

So I have a new Mobo and CPU sat in the corner of my room until I have the money to dish out for the RAM. The only positive I have taken away from this is that I hadn't actually started taking anything apart before realising this.

What's Next?

Okay so next on the cards is to finish off these library bits and pieces and then get it all checked in to git. I will then look at my new messaging implementation and try and get that integrated into the engine. This is sort of phase 1 of the new ECS Integration.

Cheers :)
0 Comments

Back in to Dev and my New Computer

24/6/2015

0 Comments

 

Bitten off more than I could chew

Okay so my first day back into my JBEngine project and I decide to try and integrate the new ECS System into the engine. What a bloody mistake that was! I started off initially tidying up some of the classes of the new ECS and got it into a state that I thought it might merge over fairly easily. 

After swapping all the files across and realising exactly how many problems there were and all to do with classes being templated I quickly realised that it was a massive mistake. 

You definitely shouldn't jump into some code that you've not looked at for months and try and implement a massive piece of new functionality. It was just daft on my part. 

As a positive though at least I have done *something* even if it didn't quite work out this time, it wasn't really a failure:
"I have not failed. I've just found 10,000 ways that won't work." - Thomas A. Edison

New Computer

Something else I thought I might mention is that I'm in the process of buying a new desktop. I managed to buy a new motherboard and CPU today and after next payday I will be able to buy some RAM and I will be good to go for a while. 

I will still need to buy a new GFX card as I'm still rocking an nVidia GeForce 8800 GTS, but it's not really a necessity for now. I will see how I feel on payday and decide whether I buy one ;)

I have also got another computer that I managed to save from being scrapped at one of my old jobs and I will be taking a few pieces from my current setup and putting it in that to use as a server. That way I can get a proper Server-Client test for my networking code.

Exciting stuff to come if I can keep up the work. 

Cheers :)
0 Comments

My Birthday and becoming an IBMer (Sounds so cheesy)

22/6/2015

0 Comments

 
I'm now about two weeks into my new job and all seems to be going well. Everyone there is much more friendly than I had first thought they would be. I had this image of everyone being a corporate drone and wanting to just get there work done and go home but luckily this isn't the case.

Training

Over the past few weeks I have been doing a lot of training as I really had no real clue about using Linux or even the products that IBM create there. It is all very much all the things I have stayed away from in the past: Networking and hardware. I have really come to grips with it now and I see how it is such a massive industry. At the end of the day even a small business ends up needing to think about some Networking/Storage Solution.

My Birthday

It was my Birthday on Thursday and I was spoilt rotten as always :)

Turning 24 isn't that special though, I was hoping I could be 21 forever but that didn't seem to pan out. Anyway on the Friday my girlfriend Meg treated me to a relaxing night away in Liverpool. We stayed at the amazing Titanic Hotel and we had a great night. The hotel was huge! It is where the Titanic used to dock and they have transformed into this amazing hotel whilst still keeping a lot of the industrial features. We both had such an amazing time there and spent a lot of time relaxing in the spa as you can see from the photo's.
Picture
Picture
Picture
Anyway that sort of sums up what I've been up to. Okay so there wasn't much talk of actual development but this is the first step towards getting some done. I had my desktop unplugged and out the way for a while but I've got it setup now and I'm hoping this post will spark off some motivation. 

My only worry is that because I didn't implement the new ECS system into my engine when I had my head in the code it might now take me a while longer to get it done.

Take it easy :)
0 Comments

JBEngine: Demo Functionality and Physics

21/5/2014

0 Comments

 
I have just been working on a couple of bugs with my networking that have been annoying me, particularly the camera and player model becoming out of sync and also the spells were being fired in the wrong direction. I have now fixed both of these issues and I can now seamlessly fly around my demo level shooting spells, which is a relief.

Next week me and a colleague are going to demo some of the functionality that has been added to our projects. We have been doing this every so often as I think this keeps motivation quite high and can spark some interesting discussions about implementations. For this demo I want to be able to have two clients connected to a game, flying around damaging each other with spells. This does seem quite achievable but It means I will need to put some extra work into the physics integration in my engine.  

Physics so far...

Currently the physics implementation is fairly minimal, allowing for collisions to be resolved and callbacks to be triggered for the two entities involved. I want to go much further than this and allow the new bounds functionality to be used for the physics shapes. I also want to allow the change of certain properties like restitution and friction for each physics object.

Currently the physics code is not being sent across the network which is also something that will need to be resolved. each client will still need to do some sort of collision resolution to keep the game looking smooth, but the server will once again need to have the overall say so this will be a challenge. 

I'm excited to get this demo up and running :) 
0 Comments

JBEngine: Networking Continued and Misc

5/5/2014

0 Comments

 
It has been what seems like an age since my last post, and I have been holding off because I wanted to get something a little more substantial before I posted an update. 

I have been working mostly on the Networking but also sorting out some issues that I was having with my matrices due to the library I am using ( which I ended up writing some of the functions myself ). This means that now my FPS Camera is fully working which is a massive relief.

Networking and Libraries

Now that I have got that out the way let's talk about some of the Networking I have been doing. As a starter I suppose it is best to mention that I created all this networking code as a separate library that is used by my Engine. This took a little bit of refactoring and some tinkering with the Visual Studio Project options but was a great learning curve as it has made me think of the other parts of my code that could be their own projects. particularly:
  • Sound ( Now Done )
  • Physics
  • Rendering
  • Input
  • JBEngine

The first three libraries will be a great start and will be the easiest to create, these will then be part of the JBEngine project which will be the product as a whole. 

Doing this means that If i want to create a development tool such as a level editor I can just link the Rendering, Physics and Input libraries and build the application code on top of that and there won't be any extra bulk that I don't need. 

Networking Game Advancements

I have been adding a lot of code for various "packet" classes and sorting out exactly how a client and server communicates with one another.

The basics of it is that I create a specific packet object such as a Camera Movement Packet and this class alone deals with both stuffing its data into and out of the packet class of the Network Library.

This has made it fairly flexible and easy to implement passing new data between the client and server. 

Anyway without any further ado, here is where the project is currently at: 
There are still some major issues that I need to sort out, specifically the camera getting out of sync with the player model. This is due to some latency issues and I should have it sorted fairly soon. 

Overall I think It is still going very well, although I think I need to up productivity massively.

Cheers :)
0 Comments

JBEngine: Networking with RakNet

8/2/2014

0 Comments

 
As any game I'm hoping to make is going to involve some sort of multi-player functionality I decided I needed to look into how this should be implemented very early on. It seems that whether a game is Multi-player heavily influences the structure of the game code. 

After doing some searching around I found a popular Networking Library called RakNet. The library seems very well documented which is a massive plus and has lots of added features for things like VOIP. 

Okay So I managed to get a simple console application demo up and running quickly. It just allowed the server and client to communicate a simple chat message. 

I then wrapped this functionality into some classes so that I would then be able to integrate it easily into the JBEngine. These classes are provided here and can be used as a starting point for anyone else that is starting to implement networking.

There is a working visual studio 2010 demo here. This allows for a two instances of the program to be ran, one as the server and the other as the client. Once the client has connected to the server the client can then send messages to the server which are displayed in the console.

So I then went on to implement this in the Engine which really didn't take much work at all, I simply send a packet to the other computer and they then apply that packet in the game code. Here is a demo using the movement of a player in a game:
It isn't a great demonstration but It was just the first thing I managed to get up and running. It is also a very simple way of communicating and not how the final implementation will be. In the video every time a movement key is pressed a MoveMessage is sent to the other computer and it moves by that set value. This is essentially a peer to peer model at the moment where as I will be implementing a Server-Client Model in the final product.

Next Few steps are to think about the format of the packets i.e. send a MoveMessage that just triggers the movement and a StopMovement Message, that way there isn't a continuous number of packets being sent to the server to move by a small amount.

Another thing I will need to think about is the difference in packets being sent to or from the server. The ones to the server will more than likely be very minimal and mostly based around input, where as the server will be sending back much more data. The server will need to send every so often a packet to inform the client of the current game state. This is so that the client can correct itself if it has become out of sync because technically the game is only being ran on the server, the client just simulates a possibility until it gets the final word from the server.

Plenty more to think about and implement, but this stuff is pretty exciting.

Keep Coding :)

0 Comments

    Archives

    May 2020
    April 2020
    January 2020
    November 2019
    October 2019
    September 2019
    July 2019
    June 2019
    May 2019
    April 2019
    March 2019
    February 2019
    August 2018
    July 2018
    June 2018
    March 2018
    January 2018
    June 2017
    February 2017
    September 2016
    August 2016
    July 2016
    June 2016
    May 2016
    February 2016
    January 2016
    December 2015
    November 2015
    September 2015
    August 2015
    July 2015
    June 2015
    March 2015
    January 2015
    November 2014
    October 2014
    September 2014
    August 2014
    July 2014
    June 2014
    May 2014
    February 2014
    January 2014
    December 2013
    November 2013
    October 2013
    July 2013
    June 2013
    May 2013
    April 2013
    March 2013
    February 2013
    January 2013
    December 2012
    October 2012
    September 2012
    August 2012
    July 2012
    June 2012
    May 2012

    Categories

    All
    2D
    3rd Year Project
    Agile
    Android
    Angular
    Animation
    API
    Apple
    Apps
    Arden
    Async
    Awesomium
    C#
    CI/CD
    Clean Code
    CMake
    Cocos2d-x
    Colour Match
    Compilers
    Cross Compiling
    Cross-Compiling
    Databases
    Design
    Development Tools
    Docker
    Electronics
    Examples
    Flask
    Flask-Login
    Fmod
    Game Development
    Godot
    GUI
    Hackathon
    Hacktoberfest
    Hardware
    Home Life
    IBM
    Inspired Gaming
    Instancing
    Ios
    Javascript
    Jbengine
    Kata
    Level Editor
    Linux
    Microsoft
    Mobile Development
    Monogame
    Moodster
    Motivation
    Networking
    Objective C
    Opengl
    Open Source
    Organisation
    Physics
    Physx
    Pi
    Planning
    Post Mortem
    PyGame
    Python
    Quart
    Quasar
    RakNet
    React
    Road To Eldoarado
    Scripting
    Scrum Master
    Sessions
    Session Timeout
    Social
    Sound
    Space Invaders
    Squash Game
    Squash Game
    Streaming
    TDD
    Team Leading
    Test
    Test Driven Development
    Travis
    Unity
    Unity Development
    VSCode
    Vulkan
    Web Applications
    Worklife
    WSL
    XML
    XNA / C#

    RSS Feed

Powered by Create your own unique website with customizable templates.
  • Home
  • CV
  • University Work
    • Second Year Work >
      • Top-Down Shooter
    • Third Year Work >
      • Terrain Analysis Project >
        • Terrain Analysis Tool
        • Game Demonstration
      • Post Processing
      • Android Application - Sports Centre
  • Projects
    • Unity Development >
      • Lerpz Tutorial
      • Dare to be Digital Entry - "Lit"
      • Unity Game
    • Geometry Instancing
    • Road to Eldorado
    • Level Editor
    • OpenGL Work
    • JBEngine
  • Blog
  • Tutorials
    • Flask Session Timeout