Worklog for Duckstab[o]

Areonx Foundations (Final Cut)

Return to Worklogs

Improved DataBase(Posted 2008-01-11)
Done Some more Tweaks around the DataManagement Types within the editor

Set.ini
This Contains Folder Locations for the Sets ie
Media/FloorSets/FloorSet1

Load.ini
This Contains Lists of Filenames and the Object Name ie
Media/FloorSets/FloorSet1/Tile_0.x
Tile_0

Each Loading Method is Unique and Stores info in the correct
Object DataBase

Depending if the Object is a Main map piece the engine also creates the VTx_Objects needed
Ie
Stores 4 Sets of VTx_MiniV to cover the four facing directions

When Using a VTx_Object a pointer is created stating
Vector : 3DPosition
Facing : 0,1,2,3
TexTure : id
TexScale : 1,2,4,8
TexUv : 0,0 to 7,7

Currently Loading 28 Directx Models
Plus..
Generation of DataBase Groups
Generating 4 VTxObjects For Each Mesh
Storing VTx_MiniV[] vertex arrays for Each VTxObject

Comes in a 3.7 Secs

[Edit] Had a incorrect loop in the mix

Currently Loading 112 Directx Models
Plus..
Generation of DataBase Groups
Generating 4 VTxObjects For Each Mesh
Storing VTx_MiniV[] vertex arrays for Each VTxObject

Comes in a 2.8 Secs

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

Performance of Prims(Posted 2008-01-10)
Done Some Heavy Testing of the MapPatch Vprim combination as the results are awsome in speed performance

Test1
SingleMesh Built from 10000 Quads UvScaled to use various images in the 8*8 tilemap
Total Build Time 6 secs

Test2
Using 1000 patchmeshes each containing 100 VPrimQuads UvScaled
Total Build Time 5 secs

So using my patchmethod
I was able to build
200,000 TriMesh is 5 seconds
Compared to
20,000 Trimesh in 6 seconds

To further Compare the performance ive done a Higher Poly Prim Comparison

Test1
SingleMesh Built from 1000 60tri models UvScaled to use various images in the 8*8 tilemap
Total Build Time 45 secs

Test2
Using 100 patchmeshes each containing 100 V60TriPrims UvScaled
Total Build Time 32 secs

So using my patchmethod
I was able to build
600,000 TriMesh is 32 seconds
Compared to
60,000 Trimesh in 45 seconds

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

Here Come the Prims(Posted 2008-01-03)
They CoreMap generation is now reaching its final phase

Main Controllers now are as follows

rpMap..
This is the CoreMap Design is Stores and array of rpPillars containing the needed Vertexinfo for level generation.

rpMapPatch....
This can be a Single or Collection of meshes Covering 4 to 16 rpPillars When the Levels are created the Vertex info from thr rpPillars relevant to the rpMapPatch are used to create terrain mesheses optimised for culling

rpMapMesh....
This is a database of Prims for level creation a Singleton is loaded and four VTXpatches are created from the geometry detail

rpPillar...
This is a Collection of VTXinstance ie raw geometry
a rpPillar Contains
Pos:Ctv_3dVector
Top:VTXinstance
TopEx:VTXinstance
Fill:VTXinstance[4]
Wall:VTXinstance[n]
Wallex:VTXinstance[n]

VTXinstance..
This is a Collection of Pure Geometry data Copied from the rpMapmesh database
This object allows for
RefreshState (Restores by Vert Data)
UVscalar
UVtab

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

More refinements in map generation(Posted 2008-01-02)
Now Using 14 FloorShape Tiles to create basic terrian
These are loaded into the engine with uv scale 0,0 - 1,1
Then they are modified to 1/8 - 1/8 ie the uv are multiplied by 0.125 to become compatable with the 8 * 8 texture maps

When editing maps the raw vertex data of the models is passed to the pillar controllers which have a easy uv swap by adding or subtracting 0.125 to the uv variables allowing mapping of the 64 texture on the texturemap

This is scalable as right now the textures are 1024*1024 and contain 64 128*128 textures

The engine can be modified to 16 256*256 or 4 512*512 images per texture map

Using 128*128 textures the map can contain as little as 4 groups and 256 textures

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

Classes and leveling(Posted 2007-12-24)
While spending endless hours creating the 3d content needed for the games underpinnings ive been reworking the Class/Exp system as Ive found some of my previous attempts a little to restrictive in the developement.

AnyWays this is how it goes so far

1. Base Classes
There are two types of baseClass
Humaniod and Animalform

In the early stages of the game only 4 of the Base Classes are available for selection.

Warrior
WhiteMage
Thief
FireMage (Yes one Mage form for each elemental class)

Each of these Base Classes has a evolutionary form giving access to higher tier magics and skills

Each Class/TierClass is a singleton job
Each Class Has a subset of 36 skills which you improve/unlock in your prefered order when spending Jp

For Now the Engine will cap at level 50
But this is a singleton Cap your overall playerlevel limit
is 50+25+5+5+5 +(1*otherjobs)
(100%,50%,10%,10%,10%)+(1% or 1 which evers heigher)

Your Character has
Main Job
Sub Job
3 * Discipline Jobs

So by unlocking and leveling the WhiteMage tierGroup you could effectively have a
Lvl 90 WhiteMage
ie
Lvl 50/25/5/5/5 whitemage

To Balance the issue of forced singleton leveling/evolving each class has either or both (Adaptation and Insperation)
This a Combat Rank Modifiers
Adaptation increases the Max Skill Rank
Insperation descreases the Base Skill Rank

Using these abilities
a Grand White Mage
Rank 21/40
With level 3 Insperation

Can gain access to the Rank (21,20,19) skills of
White Mage
Rank 1/20

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

Terrain_Manager(Posted 2007-12-18)
Progress has been a bit slow the last few days suffering with flu :(

many More Tweaks on the
pM_Terrain_Manager
pM_Terrain_Mesh
pM_Terrain_Texset

This has improved loading times 2fold and removed over 200 lines of unoptimised code..

So far I would estimate over 1000 lines of code have been eliminated
Loadfiles for the pM Classes reduced 40%-60% in size

File FolderFormat for the media database is upandrunning nicely making additional content easy to add without messing up the default media files

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

More on pM_Managers(Posted 2007-12-14)
Ive Tweeked this a littlebit to allow addition mediamanagers and modelmanagers to be added as the engine grows.

Type pM_Terrain
Global Set:pM_Terrain[]
Global Set_Name$[]
Global Set_Total:Int

Field MiniObj:pM_MiniObject[]
Field Texset:pM_Terrian_Texset
Field Meshset:pM_Terrain_Mesh
End Type

Type pM_Terrian_Texset
Global Texset:pM_Terrian_Texset
Global Texset_Name$[]
Global Texset_Total:Int

Field Texture_File$
Field Texture_Name$
Field Texture_id:Int
End Type

Type pM_Terrain_Mesh
Global MeshSet:pM_Terrain_Mesh
Global MeshSet_Name$[]
Global MeshSet_Total:Int

Field Model_File$
Field Model_Name$
Field Model_Mesh:cTVmesh
Function Create()
End Function
End Type

Type pM_MiniObject
Global Mini_List:TList = CreateList()
Field Mini_TexTure$
Field Mini_Mat$
Field Mini_Max:Int
Field Mini:cTVminimesh
End Type

"pM" This is the MapTag for all MapTypes and Functions as naming conventions are going to become combersome over time

pM_Terrain is the Main Manager it passes textures,models,and both forces loading,deletion of media,models

So I tell the manager I need
Floor_Set1 (This is the geometry)
Floor_TexSet1 (This is the geometry Textures)

pM_Terrain will first check to see if the Floor_Set1 is loaded by calling pM_Terrain_Mesh and looking for Floor_Set1
if not found it runs Floor_Set1_Load loads in media and returns the collection

pM_Terrain will do the same with pM_Terrain_Tex
With the collected media it will build a New pM_Terrain for level creation

When the Level is Saved it Creates
LevelName_RawMap
LevelName_MapBuilder

RawMap Contain all Types instance data and level desgin info so you may load and continue editing the level

MapBuilder is used by the main game engine
It contains lists of
all textures needed
all models needed
a pathing grid (still implementing)

Plus an Octree design of objectplacement

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

Media_Managers(Posted 2007-12-12)
Have Now implemented

pMedia_Texture
///Contains
///Terrain
///TerrainEx
///Wall
///WallEx
///Static
///Character
///Item
///Equipment

pMedia_Terrian
///Contains
///14+ List of the TileSet Variations

Type pMedia_TerrainMesh
///Contains
///14+ List of the TileSet Variations
End Type

Type pMedia_WallMesh
///Contains
///Lists of the WallMesh Variations
End Type

Type pMedia_StaticMesh
/// Misc Models
End Type

Type pMedia_Character
/// Contains List of Animated Models
/// ExtraParts Via attach to method
End Type

Type pMedia_AnimatedExtra
/// For Partical Effects
/// Animted Level Parts
End Type

Each of the above has Find(),Get(),Duplicate(),Delete(),Load(),DumpList()

Using the above will keep Memory Usage to a minamum and eliminate future errors

Each LevelMap Contains a DataFile for all Media Needed this is compared with whats stored and loaded if needed

Im also working on a CullingSystem Where a CullSheet is loaded that states nolonger needed materials or media which will be dormant for sometime to allow for a nice clean engine.

Something along the Lines of RegionList
Areas 40
Local DumpLimit = 10
Texture Floor1 = Used 3 times
Texture Floor9 = Used 34 times

So at the end of the level the Engine will Drop Floor1 automaticaly

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

MapManagement(Posted 2007-12-12)
Ive Done a Major OverHaul of the Editors Types to Improve lookup and making a good foundation for my custom file format

The Meshes

1. pMiniManager
This Controls a minimesh object which uses a geom shader to create multipul instances of a object purely on Gpu allowing
You to set Colours,alphas,Position,Rotation,Scale for each instance with the need for duplication
(if you want 100000 barrels in you game this is your baby)

2. pFloorGroup
This is a collection of 14 pMiniManagers each with it own tile design.
Each pFloorGroup Uses a Single Texture allowign for you to combine all the detail into a singlelayer for final map generation
Each Of the 14 pMiniManagers has a GeomTag$ reference this is used to refine Tile placement so no need to look over 1000 tiles to find the one you want. Using the GeomTag$ you can browse the relevant varitions with ease.

3. pCapGroup and pBaseGroup
This are key to helping tweek the level design
Each instance of the above will point to 4 variations of wall tile to bond the level pieces into a seamless level

4. pWallGroup
This is a Collection of 1 to 4 sided wall sections
Each Wallsection has a GeomTag$ to make sure your level is polyperfect.
Also Each Group Has its own Texture With to keep final surface count to a minamum.

5. pWallexGroup
This is a Collection of Single Sided walls Using a TileMap Texture to allow for the generation of transition sections in the walls designs

6. pPillar
This is an integeral part of the DesignEngine
Each pPillar Contains
1 * pTile
0-4 pCap
0-4 pBase
N* pWall
By altering the pillars Vertical position the engine modifies Pos,Rot of the Meshes
adds removes and swaps pCap and pBase where needed
also create new pWalls when needed

pMap
This is the CoreCollection of the Map data
Grid:pPillar[x,y] ' Geometry pointers
GridWalk:pWalker[x,y] pathobject
GridHeight:int[x,y]
These are used in bothcreation of levels and Ai pathing

pWalker
This is a collection of On/Off variables to Tweek pathing and games play you can also set statetriggers to dynamical alter the pathing during play

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

Possible Auto Generation method(Posted 2007-12-12)
Looking at adding a special tag when loading in the TileSet

ie Each Tile Will have 8 tiles surrounding It
"00000000"
by Setting any of the 0 to 1 a can do a height check to see if can be place

this is a basic tile

00000
00000
11111

it would have a Tag$ = "1000000"
this states the the southern tile must to lower to allow place ment

When Checking for a Tiles Tag$ on the Map
Tag$ = "00100000" This isnt compatable
So i the Check rotation
by removing the first 2 letters and adding them to the end

"00100000"
"00" "100000"
"100000" "00"
"10000000"

By Counting How many times this must be done to match a tiletag I can generate a rotation factor

Ie the above would result in ClockWise 90*1

This above method would allow me to manage 14*4 ie 56 Tile variants and have them combine in a flawless fashion :)

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

First TileSet(Posted 2007-12-12)
Created the first Basic Floor Tiles

Total 14 Tiles
1 Flat ie Single Quad
5 Edge Tiles (These include external corners)
5 Internal Corner Tiles
3 ComboTiles (These Have Both Internal and External Transitions)

Each Tile Except for the single quad is Uv mapped with a transition texture to allow intergration with the pillar tiles that will be added at a later date

When using the map editor you can change both the tile and its orientation on the fly.

Currently Im only supporting a Single Transition Texture for floortile to improve on editors developement time as it about time I showed the world just what Ive been working on these past few years

btw Just a Mental Note for me

As of Monday 10 december 2007 ie dropped to part times to allow myself time to develope my game creation skills and hope fully turn this hobby game into Full and Commercial release

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

lol(Posted 2007-12-11)
Having Just ran an super extreme Test Im in love with Tv3d

64*64 TileMap
Each Tile Contains 81 Minimeshes on or off
1302 Triangles each

and was rendering 78,753,624 triangles per second
Total psuedo Triangles 431,972,352

running at 3 fps

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

Finalised Tilemanagement(Posted 2007-12-11)
Having Just ran an extreme Test Im happy with the optimisation

64*64 TileMap
Each Tile Contains 81 Minimeshes on or off
338 Triangles each

and was rendering 61,984,736 triangles per second
Total psuedo Triangles 112,140,288

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

TileManagement(Posted 2007-12-11)
More Tests

64*64 TilesMap
Each Tile Contains 81 Minimeshes on or off
38 Triangles each

Ran at an average of 65-75 fps

and was rendering 11643858 triangles per second
psuedo Total Triangles 12,607,488

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

MapTiles(Posted 2007-12-11)
Yay MapTiles are Working

The System is using Minimeshes to represent geometry
Ive Run a 256*256 random test and was shocked it workfirst time

The Test Used 8 Variations of FloorGeom
8 Variations of WallGeom
and 16 512*512 Textures

The Final Scene Contained 1,638,400 Minimeshes Variants with average of 8 Triangles each

Each Minimesh Can Be swapped on the fly with its eight counterparts

Ran at an average of 24-32 fps

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

Oooh Megatexture in the Making(Posted 2007-12-10)
Done Some Heavy coding over the last few days and the level editor is progressing nicely

When Starting up the editor creates a single mesh with one surface containing 64*64 PillarTypes which control 25 quads within the base mesh

When Editing the Map you raise a Lower Floor quad and all other quads in the pillar follow suit.

Then you can switch to Texmode and assign Uv points within the tilemap Texture to Uv of the pillar(s) in question

Setting Resmodes and N*tex the engine will compile the Map using the minamum number of surfaces

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

More Maps(Posted 2007-12-04)
Defined a 64*64*10 Map format to set a standard for level creation

A tile Will Be 1 to 10 units High
Can Contain Upto
40 GeometricWall Tiles
8 BorderExtras
And One Static Ative or Trigger Object

When Level Builds Options Can be set in detail model to create single mesh or chunckmesh maps to allow for better Viewport culling

Currently Looking at design for Tileset Template Format for easy mapcreation Setup

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

Map Editor +(Posted 2007-12-03)
The Reason ive gone for a basic int approach is for the level of detail

The Level Editor Export to a Standard Amx Format

When Loaded into the Engine the Sets Used can be Changed
ie
Base _40Poly
Base _80Poly
ect...

Same Goes for TextureMap im working around MegaTexture Generation to allow for minamal sufaces and rendercalls

1*1 (128*128)
1*1 (256*256)
2*2 (128*128)
1*1 (512*512)
2*2 (256*256)
4*4 (128*128)
1*1 (1024*1024)
2*2 (512*512)
4*4 (256*256)
8*8 (128*128)

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

MapEditor(Posted 2007-12-03)
current progress is going very well

When Creating a Map the User Defines

PlayArea (8*8) - (64*64)
StartLocation
FloorSet
BorderSet
WallSet
StaticSet
ObjectList

Then Editing The Map UserDefines
PSpawnLoc[]
ESpawnLoc[]

For Each Tile the player set
Tile[x,y]{
Height
Floor:int
NorthWall:int[Height]
EastWall:int[Height]
SouthWall:int[Height]
WestWall:int[Height]
Borderex:int[4]

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page

Basic Concepts(Posted 2007-12-02)
Finally Im at a place where real progress can be made. Having had to learn various media creation methods and programming formulars ive now got the skills to give this baby life.

Since Starting Areonx ive mainly stuck to working over the graphics side of the engine to enable a large variation of graphical detail to allow Areonx to Run on older machines. Its all based on DX9c as some of the things needed are only compatable with this version.

The Game Works on Two Levels of Control.
1.. WorldMap
2.. GameGrid

WorldMap
You Control your main character exploring Country > Region > City > Sector.

GameGrid
The Main Battle Phases become available at various key points and are logged in you memory bank
The GameGrid Can be 64*64 Tiles in Size and Has 10 Height Variants Giving 64*64*10 Basic Variations

Each GameGrid has the Following Components (Not all Needed)
Enemies ( These are either fixed start position or Come from a Limited spawn Points )
Nuetral ( These are either fixed start position or Come from a Limited spawn Points )
StaticLayer ( Contains all Fixed non-Destroy Items on Map )
ObjectLayer ( Contains Basic Boxes Chests open,destroy,trigger)
TriggerLayer ( Contains Global Triggers via Box,chest,switch)

To bring all this together there is a Goal Class attached to each gamegrid which defines.
Max Players
Start Positions
Win Conditions

Window 7 Home Premium
Q6600 4*3.199Ghz
Single Nvidia G260 768mb DDR3 (Soon to be two :) )
780i XFX mobo
21 Viewsonic 16/10
4gb Ram
1.5tb harddrive

My Game Space Home Page