IOCOM in simple multi player game?

This test code/example is for IOCOM network topology using Python API (iocompython) and Pyglet game UI library. Network topology for a multi player game can be very similar to IO device network: I run server side app (also python/iocompython) in Amazon’s AWS and client side in my computers. The “game arena” is analogous to “IO device network” and “player” to “IO device”.

../../_images/asteroid-game.png

asteroid game.

On server side

It is was easy. Amazon EC2 is like Linux computer (virtual one tough) to which I connect with putty terminal. Necessary software like git, cmake, python3-dev, etc. can be just installed to AWS machine by typing “sudo yum install git….” to pytty terminal. Then I use “git clone..” to get “/coderoot/iocom” and “/coderoot/eosal” source code. The iocompython C code /coderoot/iocom/extensions/iocompython builds with cmake to “/coderoot/bin/linux/iocompython.so” on linux (or bin/win32/iocompython.pyd” on windows).

To run the Asteroid game server, use in “iocompython/examples/asteroid-service/asteroidservice.sh”.

On client side.

The “/coderoot/iocom/extensions/iocompython” C code needs to be compiled for client environment, this makes the Python module. Asteroid game’s client side Python code is in “iocompython/examples/asteroid-client-pyglet”.

Linux notes:

Note 1: Build and run dependencies (already in dev. virtual machine)
  • sudo apt-get install cmake

  • python (3.5 or newer preferred)

  • pyglet

Note 2: Build iocompython from C code
  • cd /coderoot/iocom/extensions/iocompython

  • mkdir tmp

  • cd tmp

  • rm -R *

  • cmake -DCMAKE_BUILD_TYPE=Release ..

  • make

Note 3: Check build result
  • ls -la /coderoot/bin/linux/iocomp*

  • ==> -rwxr-xr-x 1 pekka pekka 244056 Dec 26 22:12 /coderoot/bin/linux/iocompython.so

Note 4: Start asteroid test service
  • open new terminal

  • cd /coderoot/iocom/extensions/iocompython/examples/asteroid-service

  • ./asteroidservice.sh

Note 5: Start asteroid test client
  • open new terminal

  • cd /coderoot/iocom/extensions/iocompython/examples/asteroid-client-pyglet

  • nano asteroid.py

  • modify line connection = Connection(root, “127.0.0.1”, “tls,up”) to have numeric IP address of computer running the asteroid service. 127.0.0.1 is in same computer. Save the file and close gedit.

  • ./asteroid.sh

Note 6: General
  • Line “import pyglet” or “import kivy” in .py file causes python to load Pyglet, or Kivy, if the library is installed.

  • Python starts with command python3 Python.

  • Ofter several different Python 3 versions are installed in same computer, so sometimes we use “/usr/bin/python3” and sometimes just “python3” to start Python.

  • Python needs to find /coderoot/bin/linux/iocompython.so. To make this happen environment variable “export PYTHONPATH=/coderoot/bin/linux” is set.

  • Startup script ending with “.sh” sets PYTHONPATH and starts asteroid test application “/usr/bin/python3 asteroid.py”

191202, updated 24.5.2020/pekka