Skip to content

fire-archive/es_core

 
 

Repository files navigation

Overview

es_core is an experimental framework for low latency, high fps multiplayer games.

Goals

Please read http://ttimo.typepad.com/blog/2013/05/es_core-an-experimental-framework-for-low-latency-high-fps-multiplayer-games.html [3] for a general introduction and some background about this project.

Architecture

Each logical part of the framework executes in it's own thread. The input thread (main.cpp, also doing the initialization), the game thread (game.cpp) and the renderer thread (render.cpp). The threads communicate with each other using a lightweight messaging system, backed by Nanomsg.

Nanomsg provides a safe and efficient abstraction for thread communication. For more details, see the similiar 'Multithreaded Magic with 0MQ' [1]. This design also enables easy support for other languages in the future.

The game thread runs on a fixed tick and feeds an interpolating renderer locked at the display refresh speed. On each tick, the game thread updates it's internal state and produces a new render state for the renderer to interpolate towards. For more details on this approach, see 'Fix your timestep!' by Glenn Fiedler [2].

Demo applications

See binaries/README.md for a summary of the applications provided for testing and demo purposes. You can download the latest set of compile binaries from https://s3.amazonaws.com/es_core/es_core.binaries.zip [4].

Compile

You will need to obtain and compile the following dependencies:

At the time of writing, SDL 2.0 is only available from Mercurial, and works with Ogre 1.9.

Windows

Use the cmake and Visual Studio 2013

mkdir Build
cd Build
cmake -G "Visual Studio 12" -DCMAKE_INSTALL_PREFIX=./Run ..

MacOS X

Compiling Ogre 1.9 is likely to give you the most trouble. You will need basic familiarity with cmake, and you may have to fix a few things by hand. I use macports for all the Ogre dependencies (boost, libzzip etc.).

The demo only targets the x86_64 architecture at this time, and ignores i386. You may need to edit the XCode project generated by cmake to set that up. You may also need to install the libraries through macports with the +universal option.

Invoke scons at the top of the es_core folder once you've compiled the dependencies.

GNU/Linux

Should present no particular difficulties. Invoke scons at the top of the es_core folder once you've compiled the dependencies.

License

This source code is released under the "Modified BSD License". See LICENSE for details.

Feedback

Yes please! The best feedback is code and patches. I can also be reached on IRC easily, look for iFire on Freenode or Quakenet.

References

About

An experimental framework for low latency, high fps multiplayer games

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 61.8%
  • C++ 30.8%
  • FLUX 3.0%
  • Haskell 1.9%
  • Assembly 1.3%
  • Objective-C++ 0.8%
  • Gnuplot 0.4%