Engine Fun

posted in A Keyboard and the Truth for project 96 Mill
Published November 10, 2005
Advertisement
Last night saw lots of stubbing out of new engine components.

Entity - basic world unit that can serve many functions
Light - description of a light source
Color - 32 bit logical ARGB color
Map - a map in the game, most of this will be moved over from flare 3
Palette - a managed texture containing images

Dave's working on our binary serializer, which will be doing the grunt work of saving and loading a game-state.

so far so good, moving at a good pace =)
Previous Entry Getting Further
0 likes 3 comments

Comments

choffstein
You started so vague with..."entity." But damn, you got specific fast ;)
November 10, 2005 01:45 PM
EDI
Well, since this is a very well-defined, data-driven (no real code additions or subclassing) Entity will be what most things you see in the game are, they can do one or more of the following:

  • They can be moved around the world
  • Can be an animated piece of art
  • Can be a particle emitter <-maybe not sure yet
  • They can be lit
  • They can act as an audio source
  • They can act as camera targets
  • They can act as environmental triggers

    All entities have a general Key-Value dictionary which is used to store thier associated variables (settable through scripts), it is by this 'customization ability' we dont need to subclass entity, except in rate circumstances.

    Each entity also has a script that it sends all of it's events too, 'passing it a 'this' with it', events such as:

  • onCreate
  • onSecond
  • onMinute
  • onHour
  • onDay
  • onEnter
  • onLeave
  • onAnimationStart
  • onAnimationDone
  • onMotionStart
  • onMotionDone
  • onClick
    ...

    by using these triggers we 'weave' the story together, using information that the engine exposes in the form of function calls, some function calls are:

  • createEntity()
  • beginSequence()
  • endSequence()
  • beginDialogue()
  • endDialogue()
  • wait(millis)
  • cameraTrack(entity)
  • moveEntity(entity,[x,y|entity|tileName])
  • animateEntity(entity,animation)
  • placeEntity(entity,[x,y|entity|tileName])
  • removeEntity(entity)
    ...


    The one exception to not extending Entity, is with Doors; Doors are a pretty important, well-defined and most importantly 'Integrated' feature of the engine, doors are special entities that expose all of the same properties of a regular entity but add new events and functions, such as:

    onDoorOpened()
    onDoorClosed()
    onDoorLocked()
    onDoorUnlocked()
    onDoorBlocked()
    onDoorUnblocked()



    doorOpen(door,bool)
    doorLock(door,bool)
    doorBlock(door,bool)

    //set hard-states (no events,no animation,no sound etc)
    doorOpenState(door,bool)
    doorLockState(door,bool)
    doorBlockState(door,bool)



    So making a game with this engine all comes down to a few things:

    1. make story
    2. make art
    3. make audio
    4. make maps
    5. write scripts to tie it all together (script story)

    Isn't that what game making is supposed to be about? =D
  • November 10, 2005 02:56 PM
    Seriema
    What's wrong with boost::serialization? *waits for a long defense from dave for why he's rewriting stuff instead of finishing the engine* ;)
    November 11, 2005 07:57 PM
    You must log in to join the conversation.
    Don't have a GameDev.net account? Sign up!
    Profile
    Author
    Advertisement
    Advertisement