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

ECS Integration Phase 1 Complete

22/7/2015

0 Comments

 
The First phase was to get the new ECS working minimally with the JBEngine Libraries.The approach for this was to add the JBEngine projects to the ECS Project rather than trying to fit the ECS code into the Level Editor or Game application.

I have managed to do this, it has taken a little bit of work but I think it was actually fairly easy. I have even managed to create a scene similar to the one featured in my Level Editor Demo's:

Picture
This is a very basic scene and there is still a lot of work to do. At this point the only Components and Systems that I currently have are:
  • Transform Component
  • Mesh Component
  • Render System
  • MovementSystem
From here on I need to start essentially re-implementing all the systems and components that were previously in my Level Editor and Game Applications to make the transition to the new ECS much easier. I will also be re-thinking a lot of the current systems and trying to justify whether they need breaking down into smaller chunks or even needed at all. I  may well do a check in of this code now as well as It is in a fairly stable state and there are going to be many changes to come.

All these entities are currently hard coded into the program as I will need to re-write all of the Entity Parsing code. The Asset parsing can remain as it was i.e. Loading Meshes, Textures, Sounds as that is no different and is already implemented in this. It will just be the specific Entity Parsing and Creation code that will need changing, this will hopefully not take too long so I can get the Level Editor in a stable state with the new ECS fairly soon.

I'm really impressed with how smooth things are going at the moment, I hope It stays this way.

Cheers :)
0 Comments

ECS Messaging and an alternative approach

21/7/2015

0 Comments

 
Tonight I've been trying to come up with a way to merge the ECS into the JBEngine. The past couple of attempts have been a complete failure and there is a good reason for this:
  1. There is a lot of template code so what would normally be a simple error is a lot more confusing to figure out.
  2. There are a lot of changes to be made as the new system is completely different syntactically thanks to the CRTP and template argument lists. This is easier to use but means a lot of code changes.
  3. The new approach now also has the "Systems" store a list of entities they work on rather than the entities storing what systems work on them.
I realised trying to shove this new piece of code into the main codebase isn't going to work as there are still a few bugs in terms of functionality with this new ECS and it's just too big a refactor.

So instead I have decided to flesh out the new ECS with a few of the components and systems that are already created in the old approach. The main ones I'm going to go for is the transform component, mesh component and then the render and movement systems. This is the minimal amount of work I thought I could get away with to get this ECS rendering.

The next thing I will be doing is migrating across a few libraries such as the Renderer library and also the JBEngine main library. I believe with very few changes I might be able to get a window and some basic entities rendered. The Renderer library won't need any work but the JBEngine one will need quite a few. I am hoping that If I create an Interface for the Entity Manager I will then be able to switch out the old ECS for the new one and write some simple client code for creating a few entities. 

This all sounds really simple and I am hoping it will all go smoothly.


0 Comments

Work, New Computer and OS Setups

20/7/2015

0 Comments

 
So I haven't done any dev for a week or so, this is a combination of being putting a lot of time into work at the moment and also because I've just got a new computer.

I initially was in more of a test role at work but after a bit of pushing and a little bit of extra hard work I've managed to get myself as part of the dev team on one of the new projects which is great. I have had to learn a lot more over the past week or so to do with IBM's specific development tools and about their processes.

I am currently at the design phase of a new project and it is great as I'm getting to be involved with the meetings with system architects and getting to add sections to the main design document. At the moment there is a lot of prototyping and trying out various methods and tools to see what could work so it is all very fluid and quite fun.

Home Desktop

At home I've just put together my new computer which ended up taking a while as I didn't realise that I would need a fresh install of Windows 7 (as the drivers would be different in the new mobo) and forgot to create a boot disc before ripping the thing apart.

Anyway after doing a fresh install I have now got to reinstall most of my development tools and do a load of windows updates, and basically get everything back to how it was. sigh.....

The positive is that it is really quick! And it will be even quicker once I've bought a new GFX card.

As another point, with spending so much time on Linux at work I have decided to use my other hard drive for a Ubuntu Install. I am hoping to one day get the JBEngine up and running on Linux, It is quite a long way off but I've used all cross platform libraries so far so the work shouldn't be too difficult.

Anyway going forward I basically need to get Visual Studio installed and then start looking at getting this ECS put into the engine as it's really starting to bug me.

Cheers :)
0 Comments

Project DLL's;  I'm not so sure

5/7/2015

0 Comments

 
Okay so I had a go at changing the project libraries to DLL's and although I think It might have made a few things easier there are a lot of complications and changes that come along with that. I just don't see it being worth it and here is why: 

So I tried creating a DLL of one of the smallest libraries I have, the sound library. To make the changes for this I had to add the export syntax to all the classes that could be accessed. I also had to export the std classes I would need. This ended up being a vector<CSound*> forward declaration and the string class. This would lock people into a specific version of the stl and I didn't really want to do that. 

All in all I just thought It was a lot of work to be done to not actually get that much benefit. I think maybe in the future I might have a look at it again if I want to reuse just one or two libraries. It would also force me to create better interfaces for the library. 

Along with doing this I managed to dig out a few of the source code of the 3rd party libraries I use from an old hard drive. I've rebuilt one of them ensuring the correct CRT is used but it doesn't seem to have fixed the Linker Warnings so it must be one of the other libraries I use.

So next up is still to try and integrate the new ECS into the engine. There is a lot of work to be done and first of all I'm going to try and replace the messaging system and see how that goes. Hopefully there won't be too many template related errors.
0 Comments

RakNet and Project DLL's Continued...

2/7/2015

0 Comments

 
Last night I managed to get the Raknet Libraries built in Vis 2013 and I now use the DLL instead of the static library. I've removed the CPP files from the JBengine source control as I think it is a bit unnecessary. 

I also messed around with a hell of a lot of visual studio's project settings, which was a nightmare but I think everything is set up a little better now. All my libraries output the correct /MD /MDd version depending on Configuration, and they also all link with their own correct versions respectively. i.e. Release JBEngine Links to Release Renderer Library. 

I still have a load of LNK4098: defaultlib "library" conflicts with use of other libs; use /NODEFAULTLIB:library. This is because of the use of different C Runtime libraries in the 3rd Party libraries I use. I don't really want to start rebuilding every 3rd party library I use because that would take a lot of time and I'm not even sure I still have the code for these. 

I have thought whilst doing all this that I am going to convert all my libraries to DLL's rather than static libraries. I am hoping this will help in a couple of ways:

1. I hope that this will narrow down the LNK4098 errors to just the projects that the library is included in. e.g. if the RakNet Library was built with a different CRT libs then it would only show in the Networking linking and not in any projects that use the Networking DLL. (if that makes sense) 

2. It's then easier to ship the DLL's for use with other programs.

Still need to try this out and see if it does what is expected.

Cheers.
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