I havent really done any game proramming before gl4java, and now ive switched to JOGL, but i think that some essential structure to the engine would include:
-- A Camera object to store transformations and rotations about a scene, probably using Quaternion math...
-- Some sort of general "Entity" class to represent an object to be rendered... all subclasses will share a common method "draw()"
-- a Model class extending Entity to represent any sort of active objects in a scene, i.e. a character, weapon, or vehicle... Models posess Textures, and also probably have some system to control animation frames
-- a Map class extending Entity to represent a static Map, such as that loaded from a BSP file, a Map includes data about its structure, textures, and perhaps a skybox...
-- Texture objects, with loaders for specific formats
It would be best to have a flexible virtual "Client/Server" setup so that it would be easy to add internet/lan capabilities later.
I have never really designed a general engine, but always just straightforward demos, so this is new to me... How does one integrate physics/collision into the engine? does the client do this, or is it stupid, and just sends requests to the server, which in turn processes everything and updates the game state...
later to be added would be of course a particle engine (for explosions/bullets/blood), lighting/shadows, perhaps water, and everything else a real game engine has
In the meantime, I am hoping to be able to get a simple system working and render a Map, probably one from CS, and place a character model in it, and have him move through the map with some collision detection... I hope someone can help guide me in this process... i appreciate any comments, thank you.