Jump to content

  • Log In with Google      Sign In   
  • Create Account





The Z testbed game engine API

Posted by Norman Barrows, 05 September 2013 · 376 views

This is the API for the Z testbed game engine.

The Z engine is an experimental prototype used to investigate game code architecture. For example, i recently inverted it from a low level engine that made callbacks to the higher level game, to high level boilerplate code, and lower level library routines. And then i inverted it back again to a low level engine that makes callbacks to the high level game.







#ifndef Zengine_h
#define Zengine_h



#include <Z3d.h>


void Zmain(HINSTANCE hInstance); // called by main() to start the engine.
void Zrungame(); // called by user_mainmenu to run a game.
void Zquitgame(); // called by user_process_input to quit a game.

void Zengine_setcam(float x,float y,float z,float xr,float yr,float zr); // called by user_set_lights_and_amera

void Zuse_clearscreen(int on_off);
void Zset_clearscreen_colors(int r,int g,int b);

void Zuse_skybox(int on_off);
void Zset_skybox_params(int meshID,int texID);

void Zuse_drawground(int on_off);
void Zset_drawground_location(float x,float z);
void Zset_drawground_params(int radius,int quadsize,int meshID,int cliprng);


#endif










These are the user defined callback functions:


//######################## USER DEFINED CALLBACK DECLARATIONS ##########################################

//------------------- user implemented ----------------------------------------------------------
int user_collision(int a,float x,float y,float z);
// user implemented. returns 1 if a user defined (world / non entity vs entity) collision occured

float user_heightmap(float x,float z);
// user implemented // returns ground y given x,z

void user_handle_collision(int a,int b);
// user implemented // a is tgt. b: -2 = ground collsion occured. -3 = user defined collsion occured. b >= 0 means a collsion with entity b occured.

void user_draw_UI(); // user implemented // hook inside Zrender_all to draw UI display

int user_groundtex(float x,float z); // user implemented // returns groundtexID at x,z

void user_process_input(); // user implemented

void user_mainmenu(); // user implemented main menu. calls Zrungame.

void user_set_lights_and_camera(); // user implemented. set lights, camera.


//------------------------- hooks ----------------------------------------------------------------

void user_endprog(); // hook

void user_update_all(); // hook at end of Zupdate_all


void user_render_all(); // hook inside Zrender_all

void user_initgame(); // hook

void user_endgame(); // hook

void user_initprog(); // hook

//###################### END OF USER DEFINED CALLBACK DECLARATIONS ##########################################







and this is an actual testbed game that uses it. other than the user implemented callback routines, this is the ENTIRE program:



// zoom2 Zengine testbed program

#include <Zengine.h>

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
nCmdShow=0;
lpCmdLine=0;
hPrevInstance=0;
Zmain(hInstance);
PostQuitMessage(0);
return(0);
}




October 2014 »

S M T W T F S
   1234
567891011
12131415161718
19202122232425
26272829 30 31 

Recent Entries

PARTNERS