Thinking until the 2147483648'th second

About This

I think all of the files I linked to in some of my older posts are gone now. I am working on fixing them.

Tuesday, July 24, 2007

Project Flow

As any reader would have guessed from the previous posts, I am starting a project. Up until now, it's been a vague collection of varying ideas. I'm "announcing" (quotes because nobody read this right now) the project now, in hopes to clarify requirements and get some work done on it.

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:
  1. Native (to scheme)
  2. FFI (os-specific)
  3. 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.

Random Notes

I work at Coptix

Ideas / To-do

  • Research .Mac style photo gallery for screenshots