|
Game Engines
[ Home ]
Nojotalk comes with 3 built-in game engines: Board (used for board games and non-game apps), CellGrid (regions where multiple players congregate), and DynaGrid (a 2-player animated game). A fourth game engine is a split screen consisting of Board and CellGrid. Game engine developers are free to modify any of the built-in game engines, or create their own game engines from scratch.
DynaGrid
- Animated 2-player or single-player game
- Grid size one quarter of zone (4 x 4)
- Graphics are bitmaps or solid rectangles
- Players can move in 4 directions (horizontal/vertical)
- Game objects can move in 16 directions: horizontal, vertical, diagonal, or like a chess knight
- May contain multiple levels
- Graphics objects are strings:
- Each 16-bit character is an index into a cell array
- Each cell is a bitmap or solid rectangle
- Null chars. are holes in a graphics object
- Objects and players move smoothly from one grid cell to the next
- Nojotalk attempts to keep the current player in the center of the screen, by scrolling the display (which is suppressed if an empty grid row/column would otherwise be revealed)
CellGrid
- Current user's avatar in center
- Scroll grid using arrow keys
- Quarter Cell:
- Cell contains 2 to 4 objects
- Cell divided into 4 quarters
- User Avatar:
- White background
- Black text (2 uppercase letters)
- User name: first/last name
- Click: display user name
- Click again: interact with user
- Non-scrolling row/column: up to 4 of these may be displayed, at the top, bottom, left or right sides of the display window
- Hyperlink:
- Press Enter or click to follow hyperlink
- Cell border is dotted
- Move to a different CellGrid, or start DynaGrid/Board game
- Nojotalk attempts to keep the current player in the center of the screen, by scrolling the display (which is suppressed if an empty grid row/column would otherwise be revealed)
- Split-screen: fourth display mode consists of a CellGrid and a Board sharing the screen, divided either horizontally or vertically
Board
Features:
- Used by board games and most apps
- Top-level window divided into either a grid, horizontal or vertical panels
- Each panel contains a widget, label, stack, canvas, book, more panels, or is empty
- Group panels similar to top-level window, containing child panels
- Book: tabbed notebook (kind of widget)
- Canvas contains one or more board panels (stacks)
- A stack contains a horizontal or vertical stack of graphics objects (may have zero overlap)
Graphics object:
- bitmap
- shape: rectangle, rounded rectangle, ellipse
- text (single line)
- group of sub-objects
Enter key pressed:
- fire onclick event of default button
- insert in memo widget with input focus
- select highlighted item in combo/list-box with input focus
Space bar pressed:
- insert space in text edit/memo widget
- fire onclick event of widget with input focus
Mouse events:
- widget, panel, canvas, graphics object
- double-click flag
- right-click flag
- modifier flags: left/right shift, ctrl, alt
- down/up flag
- pixel coordinates
- callback function
Keyboard events:
- widget with input focus
- virtual key code
- modifier flags: left/right shift, ctrl, alt
- down/up flag
- keypress flag
- callback function
Joystick events:
- direction
- button no.
- callback function
Paint events:
- widget, panel, canvas, graphics object
- rectangle coordinates
- callback function
Events
All users register to listen to any or all of the following events, related to a specific game object/player, a class of game objects/players (and all its subclasses), all game objects and/or all players.
- Join/leave/jump
- Move one grid cell
- Border:
- 4 coordinates: x1, x2, y1, y2
- 3 coordinates are non-negative
- 4th coordinate equals -1
- Cross flag:
- true if object attempts to cross border
- false if object is simply adjacent to border
- Collision (2 parties):
- Cross flag:
- true if object attempts to overlap other object
- false if object is simply adjacent to other object
- Click:
- Confirm flag is true if user's previous click event on same object occurred within a given period of time, in seconds
- Attribute change
- Timer
- Widget
- Custom
[ Back to Top ]
|
|
|