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 ]