Worklog for Duckstab[o]
Areonx Foundations (Final Cut)
Return to Worklogs
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |