Sunday, 10 February 2008

Blog relocated

This blog is now located here: http://stowelly.co.uk/

Read More......

Friday, 7 September 2007

Destinatum Engine Alpha 1.0 First official release

Ok its been a long time since my last update on this as ive been very busy pretty much re-writing the core. i have now almost fully integrated a freeware physics engine called Newton which can be found at http://newtondynamics.com/ it has been rated as one of the best physics engines on the market, and as a free piece of middleware i think this excellent.




VIDEOS!!!!





So in the 2 months or so since my last update all my character movement is completely controled by force and torque as opposed to just setting the position every frame, this allows for smoother movement, is much more accurate, and allows me to pass data to the physics engine to control all sorts of things such as projectiles, gravity, pretty much any physics action which has a real world representation it will be possible to do in this engine (although some will require me to code them into it, but the foundation has been layed).

In adition to this, i have implemented a materials system through the newton engine, which basically allows me to assign a material to an object with specific properties like elasticity, softness, and friction. with a multitude of customisable features allowing for different objects of different materials to react more accurately with the physical world (details of all this can be found in the documentation)

aside from these changes in order to make the physics system as accurate as possible the entire engines scale has had to be completely rewritten to be accurate to real world values i.e 1 unit = 1 meter and 1 unit of mass = 1 kilogram...... therefore some of the artwork previously used in the engine can no longer be used and has been replaced by some placeholders for now, just until my artists can magic me up some art..... looks abit lame with a 2 meter high block in place of an animated character, but the support for it is still there so not all is lost.

Now that the functionality of this is almost as i want it, it is time to work on getting the graphics looking sweet, need to add some decent lighting, shadowing, texturing, pixel / vertex shading, so hopefully some good things to happen in the comming months.


It is availible for download here: Destinatum Engine (right click and save as)

the bug tracking data base is located here:Mantis please sign up and submit any bugs / feature requests you may find /have







Controls

The engines basic controls use Direct Input and are as follows

W - Move character forward
A - Strafe left
S - Move character backwards
D - Strafe right

Left Arrow Key - Rotate left
Right Arrow Key - Rotate right

F2 - Toggle fullscreen
F3 - Change controls

Z - Toggle debug info

Left mouse button click - Selects an object (for use when viewing debug info)

It is possible to congiure the controls to whatever you want from the menu, it also supports any controller device setup correctly within windows

if the controls dont seem to be working, delete all of the files in this directory, and then load the engine up again, everything should be working fine

"Program Files\Common Files\DirectX\DirectInput\User Maps"


Lighting

In the "data" folder is a list of lights to be referenced by the engine, list in here all lights to be loaded at startup make sure the filename follows the current format

"Lights/point.dat"

This MUST point to a valid dat file detailing a light

In each folder in the lights folder is a dat file containing the lights properties,i have included 3 templates for 3 different types of lights, all of the values can be chopped and change, it will involve alot of tweaking to get right

only is support for 8 lights at the moment, can add as many as you want, but only the first 8 will be displayed

eventually it will be possible to switch between these and have multiple light sources



Textures

ALL textures must go in the "Textures" folder and must be in the .bmp format


Audio

ALL Audio must go in the "Audio" directory and is currently only supported in the .wav format

please note that audio is currently supported by the engine, but its functionality is temporarily disabled until i have time to make this into a propper feature and can link it in to things like material collisions, footsteps, shots and story sequences, this page is just a placeholder for now.


Adding a mesh


in the "data" folder is a list of entity's to be referenced by the engine in the file "Entitys.dat", list in here all objects to be loaded at startup make sure the filename follows the current format

"media/box2m/box2m.dat = Skinned" for entitys which are animated using a mesh hierarchy created using something such as biped

or

"media/floor/floor.dat = Static" for non-player controlled entity's which although may be textured, have no animations nor are user controlled

This MUST point to a valid dat file detailing a mesh

The very first mesh in the list will always be the players character object.< /P >

in each folder in the media folder is a dat file containing the objects properties

All objects should be created using the scale 1 Unit = 1 Meter

Currently the only supported mesh type is Direct X's .X format, these files can be created in a wide variety of 3D modelling programs including 3D studio Max and Maya.

If using 3D studio max there is an exporter availible called "Panda" and is availible from the following page
http://www.andytather.co.uk/Panda/directxmax.aspx

There is another application availible by a company called "Right Hemisphere" called "Deep Exploration". this is a very usefull application that allows importing / editing / exporting between a variety of different modelling packages and the .X file format. it seems to work better than "Panda" for some aspects.



Mesh Properties

The meshes dat files take on the following format.

xPos = 0.0f
yPos = 250.0f
zPos = 20.0f
xScl = 1.0f
yScl = 1.0f
zScl = 1.0f
xRot = 0.0f
yRot = 0.0f
zRot = 0.0f
collisionType = Box
boundOffsetX = 0
boundOffsetY = 1
boundOffsetZ = 0
boundOffsetRotX = 0
boundOffsetRotY = 0
boundOffsetRotZ = 0
boundX = 1
boundY = 2
boundZ = 1
xFilePath = ./media/box2m/box2m2.X
static = false
pinUpVector = true
Mass = 1.0
Material = Player
NULL


For more info on these properties check the included documentation, is far too much text and graphic to include in this blog



Read More......

Tuesday, 19 June 2007

Destinatum Engine Alpha

This has been my main personal project for the last couple of years, it is basically my own 3D engine built using c++ and DirectX 9. it is possible to edit your own scenes via text files, features bounding sphere collision, skybox, lighting can be positioned via text file, skinned animated meshes are supported in the .X file format.



It is availible for download here: Destinatum Engine (right click and save as)

I havent included the source code for this one due to alot of the code still being used in other projects







Controls

controls reconfigurable in the menu, is possible to add your own devices e.g pad.

W,A,S,D control movement

Arrow keys control viewing fruitism

F2 to toggle Fullscreen (fullscreen cap'd to 60 fps)
F3 to configure Directinput devices
Z to view bounding mesh collision

Camera is switchable between 1st and 3rd person by pressing "1" on the keyboard

Object editor

in the "data" folder is a list of objects to be referenced by the engine, liSt in here all objects to be loaded at startup make

sure the filename follows the current format

in each folder in the media folder is a dat file containing the objects properties, it is in the following format

xPos
yPos
zPos
xScl
Y Scale Try and keep these at 1.0 with your modelling or collison wont work
Z Scale
xRot
yRot
zRot
xFilePath
static simple true or false statement to decide wither object is animated or not


in the "data" folder is a list of lights to be referenced by the engine, liSt in here all lights to be loaded at startup make

sure the filename follows the current format

in each folder in the lights folder is a dat file containing the lights properties,i have included 3 templates for 3 different

types of lights, all of the values can e chopped and change, it will involve alot of tweaking to get right

only is support for 8 lights at the moment, can add as many as you want, but only the first 8 will be displayed

eventually it will be possible to switch between these.


Change Log:
Version 0.07
bounding sphere collision working fully

Version 0.06
bounding sphere collision working (fairly buggy in places though)

Started the basis of an option file, for startup game parameters

added an NPC who just walks towards you, nothing fancy but will form the basis of the implementation of the A* algorithm for path finding, also is kind of where combat would trigger.

added support for a looped sound, isnt much at the moment but wont be hard to setup a playlist, will also link sounds to things like footsteps

made camera switchable from first person to third person

made the option file utilise a nameing system to make it easier to read and less prone to mistakes


Version 0.05

added preset lighting settings that are scriptable via text files



Version 0.04

-Picking is now pretty much perfect (can be demonstrated by clicking the sphere and the distance from screen to object will be displayed at the top)

Collision - have almost finished a system whereby the bounding volumes for each bone are displayed although not to accurate at the moment but should serve the basis for the next version which should include a response from collisions within the boxes

also fixed a number of memory issues with the loading of objects




Version 0.03

- 0000009: [] Movement: Character jumps - slightly sinks into the floor returning to proper hight after a brief second (mike)
- 0000008: [] Memory Allocation - Memory leaks in X file loading code (mike)

-Picking, added a basic picking method currently supports (very inacurately) clicking on the first mesh in the objectlist file, and returning hte distance from where you click on the screen


Version 0.02

Changed far plane clipping value so scene doesnt appear to be engulfed by nasty blueness


0000005: [] Object Editor: Rotation parameter is in radians and not degrees (mike)
working in version 2.0a

- 0000003: [] Collision - Bounding boxes incorectly rendered (Anthon - Creative Director)
changed to support boundign spheres for initial intersection detection which appears to work near perfectly aslong as the meshes are centred before exporting in max and are scaled at 1.0 in the engine

- 0000004: [] GUI - Graphical changes crash the engine (mike)
written handler for resetting device, now can toggle between display settings and resolutions without crashing

- 0000007: [] Texturing: Certain texture formats not rendered (mike)
have adjusted the mesh hierarchy loding function to default to the ./textures directory, this will be defined in adat file which ill include for either 0.02 or 0.03 depending on how many other uses i find for it between now and then

Read More......

3D Casino

This is the first minor project i started using the 3D engine i have been working on for the last couple of years, it would eventually become a full blown casino game (if i had the artwork) currently its possible to walk up to the blackjack table and play against the computer dealer.



It is availible for download here: Casino (right click and save as)

I havent included the source code for this one due to alot of the code still being used in other projects




//Please note in order for the control system properly sometimes the user maps files need to be deleted from
//C:\Program Files\Common Files\DirectX\DirectInput\User Maps





Controls

Standard controls are defined for the keyboards, and these involve the use of the W,A,S,D and arrow keys for movement
Right Shift controls jump
when in the "capture" area of a game it will offer you to press Enter to start whereby the controls for that game will be displayed at the bottom left.

for blackjack it is "H" to hit "Space" to stick "Q" to quit and "enter" to start again


control pads can be setup by pressing "f2" or by selecting them from the menu

Pressing "Z" can be used for viewing the entire deck whilest in a game and will also display the bounding spheres used to trigger the game

//to do

*adjust the rectangle for collecting the card data as there is a very slight overlap

*adjust timing in order to cap framerate, on higher spec pc's can achive 800+ fps and lower machines as low as 80 - 100. makes control system fairly varied and too fast in some cases

*wrap all d3dx functions into a management system in order to protect against memory leaks

*update the collision detection system based on the AABB and OBB princilples

*include some kind of betting system

* fix the restore device objects in order to allow the user to correctly change modes on-the-fly

*link support for quake 3's bsp level files in order to leave the scene management more in the hands of the artists

*create some kind of dynamic lighting system to begin to visualise the look of an actual casino

*correctly abstract some members of the XfileEntity class in order to have optimal world objects

*finish wrapping the control pad support into direct input and maybe even use microsofts Xinput libraries as an attempt to gain knowledge of the next gen architecture.

*using direct input and XAct add some in game music and sound effects

* position the camera and card displays as though they are actually playing on the table, include animation for dealer and show the cards being delt and played as a real game would

*create the following games
Poker (texas hold em)
Roulette
Video Poker
Slot Machines
Wheel of fortune type game


* add support for multiple players using direct play

Read More......

Command Prompt Text based game engine

Again this project wasnt exactly something i had in mind, but was an assignment for university as a learning exersise in how different data structures are used in games, therefore not much in the way of graphics was required






  • All players and non player characters are able to be edited via text file to change key attributes and items they are carrying

  • All areas and map data can be edited via text file to change key attributes and items / players that are in that area at start-up.

  • All items and there corresponding properties and values can be edited via text file

  • Is possible to modify the validation of the command list via text file, as i have set-up a state machine to determine some of the game logic it is possible to set which command type (scripted in the buttons data files) can then move onto different command types. Allowing for multiple commands and processing them individually as required, it would be possible to allow for massive commands that stretched to multiple depths if the user was to modify the state data

  • all default buttons and processes can be set prior to start-up so the interface is pretty much completely user configurable, in a future revision i will do the same for all game data etc. so it is more flexible

  • its possible to pick-up items

  • its possible to drop items

  • its possible command non-player characters to do the same actions that the player can perform themselves, this is possible through the use of the state machine

  • is possible to lock an area so it can only opened by an item set in its properties as a “required item”, when this item is used in an area previous to it it unlocks the area

  • all text associated with an area is loaded from text file

  • movement validation is performed by comparing the direction the player wants to move against the areas in the map, if the player wants to move in an invalid direction it is ignored, if the player wants to move in a valid direction it is allowed

  • if a non player character is declared as “deadly” when you attempt to leave an area the non player character will kill you and it is game over

  • its also possible to make an item “destroy on use” so if an item is breakable or consumable it would be possible to make it smash or get eaten if that's the nature of the item, its very possible for me to add more items, i just figured for the scope of this project ill stick with a minimum but make it very expandable

  • killing another character results in them dropping any items contained within there inventory

  • its possible to set a characters “player controllable” property in order to let the player control or not control character





It is availible for download here: Text Adventure (right click and save as)

i have included the source code, feel free to modify / improve wherever you want as long as you send me the results ;-)

Read More......

Command Prompt 2-Player Draughts game

Ok this project wasnt exactly something i had in mind, but was an assignment for university as a learning exersise in how different data structures are used in games, therefore not much in the way of graphics was required



Feature List

*2 players are able to play on the same machine

*game starts with player 1 (black pieces) as the first player, not allowing p2 (white/Red) to go when tis nto there turn

*its not possible to make illegal moves, this is unique for each piece type, but follws the appropriate rules

*when one players peice count reaches 0 the game ends and the winner is anounced

*when a piece reaches the opposite side it is kinged

*its possible to do single captures

*its possible to save and load the game at any point, it is also possible to modify a text file of the default values to make for interesting play scenarios...text file uses key value pairs to seperate the value from the type

*multiple capture is only half implemented, currently i have detection for whether another move is possible for a capture, but it isnt 100 complete

*huffing also is not included but will be easily able to implement it after multiple capture is complete

*its possible to inherit off of the game class and add other games to the program

*interface class included to handle buttons for loading / saving the game etc

*display outputs game specific info in order to tell the players whos turn it is and what the current scores are, is also some debug info i have left in





It is availible for download here: Draughts (right click and save as)

i have included the source code, feel free to modify / improve wherever you want as long as you send me the results ;-)

Read More......

Arkanoid clone for the Xbox 360 and PC

Ok this is just a small thing i did last year as soon as the runtimes for the xbox 360 where released just for me to see how quickly i could throw something together in a language id never developed in (c#) and a platform i had never developed for.

This is aproximately 5 hours work and is pretty much no-frills, has collision detection and plays as it should, a future revision will have a number of levels, propper ball physics and an interface.





It is availible for download here: XNA Arkanoid (right click and save as)

i have included the source code, feel free to modify / improve wherever you want as long as you send me the results ;-)

Read More......