Close

A game engine

A project log for Silly software wishlist

Motivation to do some software projects by writing them down.

lion-mclionheadlion mclionhead 05/13/2018 at 06:000 Comments

Based on the videos, Unity is the game construction kit you dreamed of as a kid. It's the one with the most news coverage & guys seem to drag & drop their way to instant flight simulators. The mane problem is while its output runs on any platform, the editor is Win & Mac only. The other problem is the ability to run your game depends on the success of the company & the availability of free licensing.  As happened so often, they'll probably be acquired by Microsoft or Autodesk. The free licensing could be revoked, as Autodesk did to Eagle, or platform support discontinued, as Microsoft did to Skype.


Pokemon go, angry birds, Kerbal space program were based on Unity.


Unreal engine was the 1st, but doesn't get a lot of coverage.


Godot is the biggest open source game engine.

Godot users are immediately greeted by the infamous crash on startup.  The program actually runs itself recursively with arguments to start the editor.

bin/godot.x11.tools.64 --path /amazon2/root/bfs/bfs.godot --editor

Then dies in a busy wait in OS_X11::set_window_maximized.  You need build from source &  add a timeout.

// infinite loop if the window manager doesn't allow it
    struct timeval start_time;
    gettimeofday(&start_time, 0);
    if (is_window_maximize_allowed()) {
        while (p_enabled && !is_window_maximized()) {
            struct timeval current_time;
            gettimeofday(¤t_time, 0);
            current_time.tv_usec -= start_time.tv_usec;
            current_time.tv_sec -= start_time.tv_sec;
            if(current_time.tv_usec < 0)
            {
                current_time.tv_usec += 1000000;
                current_time.tv_sec--;
            }

            int64_t diff = (int64_t)current_time.tv_sec * 1000 + 
                (int64_t)current_time.tv_usec / 1000;
            if(diff > 1000)
            {
                printf("OS_X11::set_window_maximized timed out\n");
                break;
            }
            
            // Wait for effective resizing (so the GLX context is too).
        }
    }

Building from source required adding some missing bits to platform/x11/context_gl_x11.cpp

#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126
#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001

It otherwise always runs in a busy wait.  Definitely must upgrade to a higher core count.

FreeCAD continued to be a pain.  This process has gone from thinking it could be done from the basic equations, realizing it can't, then realizing FreeCAD isn't up to the task either.  It would be much easier if shift clicking just rotated instead of translating & rotating.  

It looks like it tries to do 3 things when shift clicking: make the pivot point the object you clicked on, recenter on the pivot point, & rotate it.  Sweeping is intermittent at best.  You can't apply any operations to groups of objects, which leads to many scripts to obtain mirrors & rotations of groups.  There are no clipboard functions in the script API, which leads to many comments about what to copy & paste before running the scripts.  You need to paste 31 engines to make the 1st stage.

A quick review of the .fcstd file format wasn't promising.  It has to be unzipped & rezipped after editing.  The resulting collection of tiny files is not trivial enough to massage in a text editor like a .svg.

After creating some detail in the engine section, it became clear that the real thing is going to be completely hidden behind thermal protection, which we won't see for many years.  All rockets need thermal protection to run their engines in an atmosphere.  Only a collision explosion would reveal any of the innards.  It's been a struggle between what would make it enjoyable to play & what is going to change.

Discussions