It will be "code"-named Flow. "Code" sounds quite secret, while it's only meant to convey the temporary nature of the name. I can't think of a better one, and no, it's not named after the Spore-inspired flash game (seriously, I've had it in my head ever since I got the idea of a Scheme-based graphics engine, which was a while ago).
So, what will Flow be? It will be a collection of tools written in Scheme for developing 3d graphics and artificial intelligence. It isn't exactly focused on game creation, but rather some of the more specific and important aspects of it. And it could certainly be used for game creation, but there won't be any devices for handling game logic.
The first step is to create a graphics engine completely written in Scheme. From there I will start working on some artificial intelligence applications which will use the renderer for output, but that's for later.
'Flow' indicates how flexible the system should be. The system should feel smooth and easily configurable, while being fast.
I am still in the research/design phase of all this. I have decided on a few things though: it will use Gambit Scheme with Termite, and Javascript for UI.
In an effort to organize my research, I'm compiling a list of modules that I will start with:
Types:
- Native (to scheme)
- FFI (os-specific)
- FFI (general)
Window
Type: FFI (os-specific)
Function: Will provide functions for creating a window and managing it, as well as functions to query display info
Dependencies: None
OpenGL Implementation
Type: FFI (os-specific)
Function: Will provide functions for calling OS specific OpenGL libraries (AGL, CGL, WGL, etc.)
Dependencies: Window
OpenGL
Type: FFI (general)
Function: Will provide methods for rendering and other various graphical operations
Dependencies: None
Math
Type: Unknown (thoughts?)
Function: Will provide methods for calculating linear algebar equations
Dependencies: None
Renderer
Type: Native
Function: Will provide higher-level functions for rendering operations
Dependencies: OpenGL, OpenGL Implementation
Scene
Type: Native
Function: Will provide functions and structures to provide scene structure and querying
Dependencies: None
I'm relatively new to functional programming, so figuring out how to structure these modules and their communication will be fun.
1 comment:
From there I will start working on some artificial intelligence applications which will use the renderer for output, but that's for later.
Post a Comment