Universal corporation – redesign.
This redesign of UC will probably require an almost
total rewrite. The current structure isn’t good enough for what I want it to
eventually do.
The redesigned engine will be something like this:
- GUI. Built on top of a CS windowing system, like
CSWS or AWS. It will (or should):
- Support a number of extended widgets
- Attach 3d views to frames or fullscreen.
- Handle user event dispatch.
- Have extensive Lisp scripting for L&F
and customization.
- Be able to fake a UI to internal components
so that its possible to run as a text mode daemon, still offering a text
mode console to users.
- Have a Lisp command console.
- Lisp interpreter/compiler. I think I’ll be using
ECL or something, my own lisp system was getting too unwieldy.
- Link into the GUI for GUI control and customization.
- Link into the game object library and game
engine daemon so that game objects can be controlled by Lisp objects.
- Link into the networking and game event dispatch
systems to allow easy customization in UC clients of user interaction
with the game universe.
- Offer a configuration system interface, so
that configuration files can be Lisp programs.
- Be able to act as an AI definition language.
Instead of C macros or scripts defining the data-driven parts of the game
object AIs, it should be possible to use Lisp to interpret the AI defs.
- Have all of these interfaces available at
once, so its possible for a game engine Lisp object to create a window
or change a config file, and for a UI script to interact with game objects,
etc.
- Offer a command line interface for the system
console.
- Backend. This is the relatively small while loop
that performs event dispatch between and runs each daemon.
- CS style inter-daemon messaging and event
dispatch. Extensions on the event dispatch allow network-wide routing
of messages.
- Backend is where the UI code is located.
- Assorted daemons:
- Game engine. This does the game object processing.
- Network daemon. Low and high level network
access.
- Lisp daemon.
- Universe daemon. Organizes the whole network,
stores global info.
- Comm daemon (chat & mail)
- Clients
- World view daemon. Generates a renderable
CS world and dispatches simple user events (clicking on objects) to handlers,
probably Lisp scripts.
- Chat & mail
I intend for everything to be as simple, modular
and as robust as possible. The game engine, network systems and UI should be
advanced and scalable enough to allow any kind of game or other 3D interactive
environment to be created.