pythonpyopenglpanda3dquake

Which technology should I use to develop this fisheye perspective game?


I'm going to develop a 3D game, that a player walks in a maze with a 3D first-person perspective, collects things and escapes a monster. The game itself is very simple, but as it is not for entertainment, but for a biological experiment, so it has some specific features:

  1. We will project the graphics to a spherical screen with 3 projectors, so the graphics should be in a fisheye trasformation, and be easily further transformable (to deal with the merging between projectors).

  2. There should be a functionality to record data, like the path of the player, and the time points when the monster appears etc. All the events should be recordable.

  3. The game program could interact with external devices via USB. For example, whenever the player press a certain key, the program will tell an Arduino board to do something.

As my invesigation, I found three candidates of tool chain to develop such a game:

  1. Develop a MOD on Quake3 engine + Fisheye Quake. The problem I think would be that the Quake3 runs with a virtual machine, so that is it possible to implement the feature 2 and 3 above?

  2. Panda3D + FisheyeLens API

  3. PyOpenGL. This is the most flexible way, but with the greatest workload I think.

I'm quite familiar with C/C++/Python, but this is my first time to develop a 3D game. My question is which tool chain is fittest for this project (or any other good options) ? What problem would I encounter?


Solution

  • As there's no answer yet, let me give my own thoughs here. I have no experience on 3D development and don't know if these technology would work. For some side reasons, I prefer Panda3D.

    Please note that I'm still open to accept other answers.


    Why Panda3D?

    1. It is well-documented. This is always an import factor to choose technology.
    2. It's in Python, which is a plus for me.
    3. It's general-purposed (than Quake3). Panda3D can also be used on robotics simulator etc. which would be useful for me.

    Why not Quake3?

    1. It runs on virtual machine (QVM). I'm afraid that it's hard to record data or access external device.
    2. At first I thought of Quake3 because it's at least a very classical code to read, but currently I realized that Quake3 can not do anything else except FPS-like game. If it worth reading, just read it, but not have to work with it.
    3. It's not that flexible to transform the rendering of graphics. It's a game engine for purpose, not a general graphics processing library.

    Why not OpenGL?

    At this moment I think the Panda3D is bottom enough. If it's proved to be not as flexible as I need, I would turn to OpenGL then.