The graphics part renders the scene and reads the information for this from the state part, so the state acts as a kind of broker between networking and graphics. The basic idea is that the networking part receives information about the match state from the server and writes it in the state part. I wanted it to have three distinct parts which communicate with each other via simple interfaces (true to Rule of Modularity) – networking, graphics, and match state. Back then, programming multi-threaded networking or 3D scenes with custom meshes and lighting (including shadows) was a nightmare (for me at least), but nowadays (especially with the aid of such terrific libraries as Boost or OGRE) I can spend more time programming the essential things.Ī few words on the design of the new OGRE client.
#Games with ogre engine software#
Obviously, there a lot to be done (more than the pictures can describe), but it’s a start.Īnother thing I find rather exciting is how easy it is to produce software these days that has features I could only dream about five years ago. Oh, here are some screenshots of the new client. I personally found it very interesting to see the functionality of both the server and the AI through a different client of course the rest of the functionality has stayed the same and the AI is as stupid as usual, but now it’s robots instead of red and blue squares kicking the ball. The first version of the OGRE client is now finished, and it has about the same functionality as the very first version of the SDL client: the user is doomed to be a spectator as there is no way to control a player, the only controls available are merely for moving the camera around. Another thing that greatly influenced the decision was that I had split the whole project in multiple processes already during the design since the processes communicate with each other via sockets, reimplementing one part (even in a different programming language) is relatively easy. The reasons for this seemingly dramatic language switch from Haskell were manifold the top one being the jittery feeling in the old SDL client, apparently resulting from some timing issues regarding my thread management in Haskell I wasn’t able to sort out. A few weeks ago I wrote I’d try and write a new Freekick client using OGRE3D and C++.