<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">

    <title type="text">Michael Stowell Game Development Blog</title>
    <subtitle type="text">Michael Stowell Game Development Blog:</subtitle>
    <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/index/" />
    <link rel="self" type="application/atom+xml" href="http://stowelly.co.uk/index.php/site/atom/" />
    <updated>2008-08-13T14:09:17Z</updated>
    <rights>Copyright (c) 2008, Mike</rights>
    <generator uri="http://expressionengine.com/" version="1.6.1">ExpressionEngine</generator>
    <id>tag:stowelly.co.uk,2008:05:05</id>


    <entry>
      <title>Portfolio: Michael Stowell</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/portfolio_michael_stowell/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.22</id>
      <published>2008-04-10T15:22:00Z</published>
      <updated>2008-08-13T14:09:17Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="Portfolio"
        scheme="http://stowelly.co.uk/index.php/site/C7/"
        label="Portfolio" />
      <content type="html"><![CDATA[
        <p><b>4E6 - <i>Work in progress</i></b>
<br />
<img src="http://stowelly.co.uk/images/uploads/ogrenewtfirst_2008-03-08_11-31-42-53-thumb.JPG" style="border: 0;" alt="image" width="80" height="60" /><img src="http://stowelly.co.uk/images/uploads/ogrenewtfirst_2008-03-22_23-51-27-78-thumb.JPG" style="border: 0;" alt="image" width="80" height="60" /><img src="http://stowelly.co.uk/images/uploads/ogrenewtfirst_2008-03-26_01-27-03-76-thumb.JPG" style="border: 0;" alt="image" width="80" height="60" />
</p>
<p>
Created Using:
<br />
Visual C++, Ogre, Ogrenewt, Newton physics library, HLSL, CG, CEGUI, Open Input System, Fmod.
</p>
<p>
Description: 
<br />
This project is a combination of my code base from<i>Destinatum Engine</i> and Ogre (open source graphics rendering engine). It was a requirement for a university assignment that I used Ogre to create a game of pretty much any description, so I combined the work I had already done on Destinatum engine into Ogre allowing me to have a framework set up and finally develop a game with what i have been developing for the last few years. 
</p>
<p>
Development Blog:&nbsp; <a href="http://stowelly.co.uk/index.php/site/C3/" title="4E6">Link</a>
<br />
Download: <i>note this is currently in Beta stage</i> <a href="..." title="4E6 Executable">Right click and Save as (32 mb)</a>
<br />
Source Code: <i>note this is currently in Beta stage</i>  <a href="http://stowelly.co.uk/images/uploads/..." title="4E6 Source">Right click and Save as</a>
</p>
<p>
<b>Multi threaded wave simulation using the PS3  - <i>Work in progress</i></b>
<br />
<img src="http://stowelly.co.uk/images/uploads/Image023-thumb.JPG" style="border: 0;" alt="image" width="80" height="60" /><img src="http://stowelly.co.uk/images/uploads/Image025-thumb.JPG" style="border: 0;" alt="image" width="80" height="60" /><img src="http://stowelly.co.uk/images/uploads/test1-thumb.JPG" style="border: 0;" alt="image" width="80" height="60" />
</p>
<p>
Created Using:
<br />
gcc, g++, libSpe, Irrlicht.
</p>
<p>
Description:
<br />
This project (my dissertation) is an investigation into an optimal technique for simulating ocean waves using IBM’s cell processor on the Playstation 3 and analysing its performance using a range of simulated workloads whilst comparing the results to that of Intel’s Core 2 Duo processor range.
</p>
<p>
Development Blog: <a href="http://stowelly.co.uk/index.php/site/C2/" title="PS3 / Cell">Link</a>
<br />
Download: <i>Coming soon</i>
<br />
Source Code: <i>Available on request by email</i>  
</p>
<p>
<b>SDL Shooter</b>
<br />
<img src="http://stowelly.co.uk/images/uploads/shooter1-thumb.JPG" style="border: 0;" alt="image" width="80" height="60" /><img src="http://stowelly.co.uk/images/uploads/shooter2-thumb.JPG" style="border: 0;" alt="image" width="80" height="60" />
</p>
<p>
Created Using:
<br />
C++, SDL, SDL Mixer, 
</p>
<p>
Description:
<br />
A top-scrolling shooter made using C++ and SDL, it provides a demonstration of the following technologies:
<br />
Particle System, Sound Effects / Music, Power ups / Health, Transparency, Animation, Scoring System, Enemys / Bosses, Tile mapped Levels, fully compatible with tile maps created using Mappy :http://www.tilemap.co.uk/, Splash Screen’s using Ascii art outputed as text .
</p>
<p>
Development Blog: <a href="http://stowelly.co.uk/index.php/site/sdl_shooter/" title="SDL Shooter">Link</a>
<br />
Download: <a href="http://stowelly.co.uk/SDL_Shooter.rar" title="executable">Right click and Save as</a>
<br />
Source Code: <a href="http://stowelly.co.uk/images/uploads/SDLShooterSource-MichaelStowell.zip" title="SDL Source">Right click and Save as</a>
</p>
<p>
<b>Destinatum Engine</b>
</p>
<p>
<img src="http://stowelly.co.uk/images/uploads/alpha1.0-2-thumb.JPG" style="border: 0;" alt="image" width="80" height="60" /><img src="http://stowelly.co.uk/images/uploads/colhull1-thumb.JPG" style="border: 0;" alt="image" width="80" height="60" /><img src="http://stowelly.co.uk/images/uploads/shot-1-thumb.JPG" style="border: 0;" alt="image" width="80" height="60" />
</p>
<p>
Created Using:
<br />
C++, DirectX 9, Newton physics library
</p>
<p>
Description:
<br />
This has been my main personal project for the last 2-3 years, it is basically my own 3D engine built using c++ and DirectX 9 which i created as a learning exercise in order to aid my learning of 3D techniques and mathematics. it is possible to edit your own scenes via text files, features bounding sphere collision, sky box, lighting can be positioned via text file, skinned animated meshes are supported in the .X file format.
</p>
<p>
Development Blog: <a href="http://stowelly.co.uk/index.php/site/destinatum_engine_alpha/" title="Destinatum1">Link1</a> <a href="http://stowelly.co.uk/index.php/site/destinatum_engine_alpha_10_first_official_release/" title="Destinatum2">Link2</a>
<br />
Download: <a href="http://rookie3.co.uk/DestinatumEngineAlpha1.0.exe" title="executable">Right click and Save as</a> 
<br />
Source Code: <a href="http://stowelly.co.uk/images/uploads/Source.zip" title="SDL Source">Right click and Save as</a> 
</p>
<p>
<b>3D Casino
<br />
</b>
<br />
<img src="http://stowelly.co.uk/images/uploads/Casino-thumb.JPG" style="border: 0;" alt="image" width="80" height="60" />
</p>
<p>
Created Using:
<br />
C++, DirectX 9
</p>
<p>
Description:
<br />
This is the first minor project I started using Destinatum 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.
</p>
<p>
Development Blog: <a href="http://stowelly.co.uk/index.php/site/3d_casino/" title="Link">Casino</a>
<br />
Download: <a href="http://stowelly.co.uk/casino.rar" title="executable">Right click and Save as</a>
<br />
Source Code: <i>No longer availible</i>
</p>
<p>
<b>Text based game engine</b>
<br />
<img src="http://stowelly.co.uk/images/uploads/TextRPG_thumb.jpg" style="border: 0;" alt="image" width="80" height="60" /> 
</p>
<p>
Created Using:
<br />
C++, Windows API
</p>
<p>
Description:
<br />
An assignment for university, demonstrating usage of the Standard Template Library, and related data structures. it is a flexible engine that will allow a user to create a text based game simply by editing data files (for full feature list please read the blog).
</p>
<p>
Development Blog: <a href="http://stowelly.co.uk/index.php/site/command_prompt_text_based_game_engine/" title="TextBased">Link</a>
<br />
Download: <a href="http://stowelly.co.uk/TextRPG.rar" title="Executable">Right click and Save as</a>
<br />
Source Code: <a href="http://stowelly.co.uk/TextRPG.rar" title="Executable">Right click and Save as</a>
</p>
<p>
<b>Two player Draughts game</b>
<br />
<img src="http://stowelly.co.uk/images/uploads/Draughts.jpg" style="border: 0;" alt="image" width="80" height="60" />
</p>
<p>
Created Using:
<br />
C++, Windows API
</p>
<p>
Description:
<br />
An assignment for university as a learning exercise in how different data structures are used in games. demonstrates simple game play mechanics. (for full feature list please read the blog)
</p>
<p>
Development Blog: <a href="http://stowelly.co.uk/index.php/site/command_prompt_2_player_draughts_game/" title="Draughts">Link</a>
<br />
Download: <a href="http://stowelly.co.uk/Draughts.rar" title="Executable">Right click and Save as</a>
<br />
Source Code: <a href="http://stowelly.co.uk/Draughts.rar" title="Source">Right click and Save as</a>
</p>
<p>
<b>Arkanoid clone for the Xbox 360 and PC</b>
<br />
<img src="http://stowelly.co.uk/images/uploads/xnaArkanoid.jpg" style="border: 0;" alt="image" width="80" height="60" />
</p>
<p>
Created Using:
<br />
C#, XNA game studio
</p>
<p>
Description:
<br />
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.
</p>
<p>
This is approximately 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, proper ball physics and an interface. 
</p>
<p>
Development Blog: <a href="http://stowelly.co.uk/index.php/site/arkanoid_clone_for_the_xbox_360_and_pc/" title="Arkanoid">Link</a>
<br />
Download:&nbsp; <a href="http://stowelly.co.uk/xnaArkanoid.rar" title="Executable">Right click and Save as</a>
<br />
Source Code: <a href="http://stowelly.co.uk/xnaArkanoid.rar" title="Source">Right click and Save as</a>
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Business of computer games talk Synopsis&#8217;s</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/business_of_computer_games_talk_synopsiss/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.23</id>
      <published>2008-05-05T21:39:00Z</published>
      <updated>2008-05-05T21:47:31Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="Articles / Industry"
        scheme="http://stowelly.co.uk/index.php/site/C4/"
        label="Articles / Industry" />
      <content type="html"><![CDATA[
         
      ]]></content>
    </entry>

    <entry>
      <title>Pre Beta Build: March Progress Log</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/4e6_engine_pre_beta_build/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.19</id>
      <published>2008-03-28T16:00:00Z</published>
      <updated>2008-03-29T14:05:24Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="4ESix"
        scheme="http://stowelly.co.uk/index.php/site/C3/"
        label="4ESix" />
      <content type="html"><![CDATA[
        <p>Made quite a lot of developments this month. First of all I started to work on some basic artificial intelligence using simple distance and direction calculations between the NPC and the player, I wrapped this into a basic state machine in order to allow other behaviours to be easily added. After this I added a state for fighting and a state for randomly wandering about when the player is not within range. In order to stop the NPC&#8217;s falling off  the edge of the platform it was necessary for me to add some detection of the platform edge and link this into the AI&#8217;s wandering behaviour, forcing them to change direction until they are no longer in danger of falling off. When they are seeking or attacking the player this is not important as zombies are notoriously stupid and would most likely follow a person off the edge of a platform. A problem which still exists in this is that I haven&#8217;t added wall detection to the zombies so if they get stuck walking into a wall they may continue to walk into it until they randomly change direction, but this isn&#8217;t too hard of a fix.
</p>
<p>
For each of the npc&#8217;s I have attached collision meshes to the limbs used in contact when fighting (head, arms and leg) in order to accurately detect what kind of attack is being carried out and for how long they have been in contact (for harder / varied attacks) in order to apply damage and health. Due to a limitation in the number of different animations I have available I decided in order to make the combat a bit more varied and not so predictable I made it so while the player / npc is in the attacking state and its limb collision objects are colliding with the enemy it reduces health from them, meaning that if you hit a zombie with the ninjas hard attack and you catch them at a good angle the full force of the swing is applied. Also depending on what attack type they have received the AI when attacked receive a force in the opposite direction to what they are facing, and a different attack animation is played based on the attack. A small improvement on this would be to apply the force in the direction of the collision normal as opposed to their direction normal.
</p>
<p>
The turret I decided to create as I helped someone fix some buggy picking code which inspired me to implement a form of ray traced shooting. It was fairly easy to set up, although I did have some problems with the way newton works and the way I wanted this to work. In order to keep an rigid body still the best way to do this is setting its mass to 0 so that it has an infinite mass, but as I want to rotate the turret smoothly using forces (manually rotating creates serious collision issues) this wasn&#8217;t an option. So first of all I tried attaching the turrets dynamic body to a static body of 0 mass via 3 ball socket joints, and then manually rotating the static object, which worked more or less flawlessly, although I did begin to notice some glaring bugs which caused the dynamic body to sink into the ground, so I opted to use the same method I use for moving and stopping my character (applying an equal and opposite force to stop), so if the desired velocity of my turret was to always be 0,0,0 to calculate the force required to keep it still is the 0,0,0 – the current velocity multiplied by mass and time, this worked better than I imagined it to and is much less hacky than attaching to a static rigid body. Attached a cross-hair entity to the end of the turret, basically a specified distance in the turrets local space Z co-ordinate which is then multiplied by its rotational quaternion in order to give the direction, this is essentially how i cast the ray in order to shoot. upon the ray colliding first with a zombie i then apply an attack to it in the same way it is applied when in combat. in addition to this i added a simple particle effect in the same way as the cross-hair in order to simulate muzzle flash, i may add some kind of chaser bullet as well just so you can visualise where it is going.
</p>
<p>
After I got the layout of the first level pretty much how I decided It was going to be I figured it was time to start making it look a bit nicer with lighting and shadows. I decided to apply  modulative stencil shadows, as they where easy to implement, fairly general purpose and still don&#8217;t look too jagged on the edges. After much deliberation and stress testing with large amounts of NPC&#8217;s I decided to only have one light in the first level (directional light representing the sun) but make it spread across the whole level (I may add some flaming oil barrels later but using omni lights with a very small range). Then using Ogres compositor material frame work I have applied using high level shaders a HDR effect (need to go through and optimise / modify this a lot to get the right look still) to give the level a bit more life and stop it looking dull.
</p>
<p>
So next up, finish the second and 3rd levels off, this is really a simple case of adjusting what is already there, and adding some more npc&#8217;s, turrets and lights. Sound effects which need to be linked into the appropriate physics material systems, the support for audio playback using Fmod is already written and functional so this is more of a design issue than anything else. Sort the sky out so that it is a sphere and not a dome, beginning to get annoyed by the empty spaces under the level. After this it should just be a case of playing around with the artwork (I have no artistic flare but I can still try) and optimise both the code and the shaders (also rewrite / refactor a few and implement my normal mapping shader). Then it will be simply a case of bug fixing, tweaking game play. And overall polishing the front end and usability.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>CV</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/cv/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.20</id>
      <published>2008-03-28T15:50:00Z</published>
      <updated>2008-04-13T12:06:47Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="CV"
        scheme="http://stowelly.co.uk/index.php/site/C5/"
        label="CV" />
      <content type="html"><![CDATA[
         
      ]]></content>
    </entry>

    <entry>
      <title>Project Plan</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/project_plan_for/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.18</id>
      <published>2008-03-10T18:31:00Z</published>
      <updated>2008-04-21T09:04:10Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="PS3 / Cell"
        scheme="http://stowelly.co.uk/index.php/site/C2/"
        label="PS3 / Cell" />
      <content type="html"><![CDATA[
        <p><b>Aim</b>
</p>
<p>
This project is an investigation into an optimal technique for simulating ocean waves using IBM&#8217;s cell processor on the Playstation 3 and analysing its performance using a range of simulated workloads whilst comparing the results to that of  Intel&#8217;s Core 2 Duo processor range.
</p>
<p>
By doing this I hope to achieve a relatively fair comparison of how the two different architectures perform under this type of simulation, and will also serve as a study into methods of carrying out work efficiently on the Cell processor.
</p>
<p>
<b>Background</b>
</p>
<p>
With ever increasing developments in technology / computer hardware, and a much greater demand for aesthetically pleasing totally immersive environments in computer graphics and virtual reality,  it becomes both necessary, and with current hardware, more and more possible for these applications to use accurate simulations of real world phenomena. 
</p>
<p>
One approach to simulating water talked about in Game Programming Gems - Gomez 2000, describes a method of simulating water in 3 dimensions using only the data for a 2 dimensional simulation. The water is represented as a 2 dimensional plane thought of as a stretched elastic membrane, with the height of the specific vertices being calculated using a partial differential equation. This is considered to be a fairly accurate way to represent waves in computer graphics, but it has a number of downsides with regards to performance and memory.&nbsp; First of all it uses the previous wave position and the current wave position in order to effectively interpolate to the next position, this uses a lot of memory as is it essentially storing two meshes. It also requires that each vertex has access to detailed information about neighbouring vertices in order to calculate the new position. I believe this will create massive problems when it comes to multi-threading the simulation as it will seriously restrict the ability to split the program up into multiple threads of execution.
</p>
<p>
Another approach detailed in GPU Gems -  Finch 2004 is to use the graphics hardware shading capabilities of modern GPU&#8217;s (not so dissimilar to the SPE&#8217;s in the Cell processor) to apply a “sum of sine&#8217;s” approach to the vertices in order to approximate their positions, this will easily allow for multiple waves / ripples. This method appears to be much more flexible than the previous as it uses a parametrised approach as opposed to basing position on forces from neighbouring vertices, it will allow for the workload to be easily divided up into threads, gives precise control over the geometry, and allows for easy scalability.&nbsp; As previously mentioned the work described here is carried out using GPU specific hardware, I plan to rework this into an efficient  CPU based algorithm that is especially optimised for the Cell processor.
</p>
<p>
Unfortunately due to the Cell processor being a relatively new architecture, not too much work has been publicly released, particularly on the subjects of rendering and physics simulation. Insomniac Games recently released a document from one of their presentations at this year&#8217;s (2008) Game Developers Conference. Spu Shaders – Acton  2008 It lists a number of methods for using the Spu&#8217;s to do the work of a GPU&#8217;s shader. Some of the main key aspects I took from studying this where that it is crucially important to concentrate on the layout of data so as it is completely modular, straightforward, and uses as much of each SPE as possible, due to the nature of bandwidth and memory constraints it appears that the SPE&#8217;s can process data a lot quicker than they can receive it, so with regards to parallel optimisations following these rules should help me to develop a very efficient algorithm for this study.
</p>
<p>
<b>Specification</b>
</p>
<p>
The end product is to be two applications built from the same code base / framework that are capable of running on  x86 and Cell architecture. It should graphically represent the wave simulation and include some method of adjusting the scale of the simulation and all relevant parameters in order to accurately benchmark performance. The x86 version should be multi threaded in such a way that the number of cores used can be scaled, so for a single threaded machine it is possible to run just one thread, but this must be scalable up to at least 4 threads in order to benchmark the increase in performance. The Cell version of this should perform the simulation using only the SPE&#8217;s (starting with 1 SPE scalable up to 6) with the PPE in charge of rendering the output of the simulation and controlling the flow of data / programmes between memory and each of the SPE&#8217;s. In order to correctly assess fair results the x86 should be benchmarked using  both the CPU to do the drawing routines and the GPU for each test.
</p>
<p>
Due to the grid like method I am using to represent the wave surface a main scaling factor can  be how many segments of the grid there are, increasing the amount of segments effectively increases the level of detail and also the processing power required. Starting values for my initial tests will be 80 for low, 120 for medium and 160 for high, although depending on the performance of the machines I may increase / decrease in order to get usable results.
</p>
<p>
Another aspect of  GPU Gems -  Finch 2004 I liked was the “sum of sine&#8217;s” approach that he uses, this can easily be translated into having n number of waves active at any time all being able to affect each other as they would in reality, which should also be scalable from 0 to 4, this should provide a decent amount of data for testing purposes. 
</p>
<p>
The parametrised aspects of the wave data should be fully represented and editable either at run time through a GUI or at lest be easily modifiable via text file to provide quick testing capabilities.
</p>
<p>
<b>Strategy</b>
</p>
<p>
In order to effectively implement everything that the specification outlines I must break this down into individual sections.
</p>
<p>
First of all it is necessary to create a generic framework for rendering. This will require a vertex buffer stored at memory level so that the x86 / Cell has easy access to the data. This should be created using the Irrlicht rendering engine. And should be able to render a grid of triangles with scalable dimensions. This is all that is required from the render as the wave simulation code will handle all of the vertex transforms.
</p>
<p>
Then just using the PPE of the Cell and one thread of the x86 develop the methods required to carry out the simulation. This will obviously be terribly slow and pretty useless with regards to obtaining results for this simulation. But this will ensure that the starting framework is the same for both platforms.
</p>
<p>
With all of this working correctly all necessary parameters should be exposed to some kind of interface whether it be a graphical interface or simply using data loaded from text file / entered from a command line.
</p>
<p>
After this it will be necessary to multi thread the application for the Core 2 Duo splitting the workload into chunks suitably sized to make it execute as fast as possible. The same needs to be done with the Cell processor i.e. splitting up the data workload as effectively as possible in order to create the fastest  method for processing this simulation on the SPE&#8217;s.
</p>
<p>
<b>Schedule </b>
</p>
<p>
<A HREF="http://stowelly.co.uk/images/uploads/mp1ect.jpg">
<br />
<IMG HEIGHT=256 WIDTH=386 SRC="http://stowelly.co.uk/images/uploads/mp1ect.jpg"></A> CLICK TO ENLARGE
</p>
<p>
Experiment with the Irrlicht rendering engine looking for the optimum set-up across the two platforms and try to define the best possible way to represent the data.
</p>
<p>
Test out different methods of manipulating the vertices in software, in order to determine an efficient way of directly modifying the vertex buffer.
</p>
<p>
Use previously obtained method to attempt first basic calculations to manipulate a single wave moving along a pre set sine wave as a test of what kind of scale / values I&#8217;m working with, and to give me an idea how well the buffer manipulation works.
</p>
<p>
Begin to create a basic wave class containing a lot of the required parameters  such as Wave Length, Amplitude, Speed, and Direction.
</p>
<p>
Concentrate on using the appropriate mathematical terms to correctly create a single wave supporting change in the parameters.
</p>
<p>
Concentrate on using the appropriate mathematical terms to calculate the surface normal and tangents for the waves at any point. This will be useful for texturing / lighting and also for interacting with any objects outside of the simulation (e.g a Boat object).
</p>
<p>
Implement the Gerstner wave function in order to add steepness to waves.
</p>
<p>
Work on the ability to include multiple waves (up to 4).
</p>
<p>
Create some test scenes using different pre-sets for a number of waves / situations in order to get an idea of what performance to expect and catch any bugs that may occur.
</p>
<p>
Spend time studying Libspe2 in order to have a fairly good grasp of its functionality before I attempt optimisation
</p>
<p>
Use OpenMP to split the x86 workload into threads.
</p>
<p>
Use Libspe2 to create a number of SPE programs that do different aspects of the wave simulation, also create a SPE program capable of carrying out the whole simulation process on a set of data.
</p>
<p>
Use the PPE to split the Cell workload into threads and distribute amongst some of the SPE  programs in order to see what works well.
</p>
<p>
Research current published resources for methods of optimising for the cell, spend time speaking to other developers to gain insight.
</p>
<p>
Optimise SPE routines using a number of documents published by IBM and other various other sources as a guide.
</p>
<p>
Complete prototype report.
</p>
<p>
Implement all tests on both platforms carefully recording results.
</p>
<p>
Compile all data and try to determine if the test was successful.
</p>
<p>
If data seems to have inaccuracies spend time determining if any of the methods used can be modified in order to produce better results.
</p>
<p>
Re-test and compile data.
</p>
<p>
Integrate data into Prototype Report.
</p>
<p>
Finish report.
<br />

</p> 
      ]]></content>
    </entry>

    <entry>
      <title>4E6 Engine First Combat Test:</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/4e6_engine_first_combat_test/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.17</id>
      <published>2008-03-08T16:24:01Z</published>
      <updated>2008-03-08T16:27:27Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="4ESix"
        scheme="http://stowelly.co.uk/index.php/site/C3/"
        label="4ESix" />
      <content type="html"><![CDATA[
         
      ]]></content>
    </entry>

    <entry>
      <title>How to: Use Irrlicht rendering engine on ps3 Linux using just the framebuffer</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/how_to_use_irrlicht_rendering_engine_on_ps3_linux_using_just_the_framebuffe/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.14</id>
      <published>2008-02-27T10:40:01Z</published>
      <updated>2008-02-27T10:44:37Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="PS3 / Cell"
        scheme="http://stowelly.co.uk/index.php/site/C2/"
        label="PS3 / Cell" />
      <content type="html"><![CDATA[
        <p>Ok this might not be of too much use to many people due to it only rendering in software mode on the ppe  (maybe someone knows if its possible to slightly accelerate this with the rsx hack driver?? I&#8217;ve not tried).&nbsp; But for projects like mine (wave simulation) where rendering speed / complexity of scenes isnt a major thing then this could be suitable for you. The framebuffer driver is not 100% completed yet (a guy off the irrlicht forum gave me an early release of his fb driver that didn&#8217;t have easy integration t the source, I have modified this slightly to replace the Linux driver completely, id imagine in future versions this will be standard)
</p>
<p>
Also it may even be possible to optimise the software drawing routines for the SPE&#8217;s. Maybe someone with a bit more knowledge can shed some light on this?
</p>
<p>
1: Download Irrlicht 1.4 <a href="http://irrlicht.sourceforge.net/downloads.html">http://irrlicht.sourceforge.net/downloads.html</a>   (the top one 16.1 mb)
</p>
<p>
2: Extract to a directory then “cd” to the include directory and replace “IrrCompileConfig.h” with the new one.
</p>
<p>
3  “cd” to the “source”  folder and replace “CirrDeviceLinux.h” and “CirrDeviceLinux.cpp” with the replacement files included
</p>
<p>
4: make.... wait about 5 minutes
</p>
<p>
5: cd to the examples directory and run ./buildAllExamples.sh
</p>
<p>
6 cd to the bin directory and test the demo&#8217;s out <img src="http://stowelly.co.uk/images/smileys/smile.gif" width="19" height="19" alt="smile" style="border:0;" />
</p>
<p>
you may need to modify the resolutions of the demo&#8217;s to match that of your screen, in the screen shot here I&#8217;ve got it running at 1080i
</p>
<p>
files:&nbsp; <a href="http://stowelly.co.uk/IrrllichtFB-replacement-Files.rar">http://stowelly.co.uk/IrrllichtFB-replacement-Files.rar</a>  (right click save as)
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>4E6 Engine First Gameplay Test : Febuary Progress Log</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/4e6_engine_first_gameplay_test_febuary_progress_log/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.13</id>
      <published>2008-02-26T19:01:00Z</published>
      <updated>2008-02-26T19:39:59Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="4ESix"
        scheme="http://stowelly.co.uk/index.php/site/C3/"
        label="4ESix" />
      <content type="html"><![CDATA[
        <p>Over the last month since my last update I&#8217;ve been looking into testing out some of the functionality i have spent all this time developing and putting it into practise with some simple game play elements, not too much in the way of functionality has been added except for the addition of an emitter which is capable of being scripted to emit objects at timed intervals, it is possible to create / destroy these via commands. added functionality for the use of a interface plug-in called CEGUI which allows for easy binding of functions to interface elements, and allows me to display game data to the user very easily.
</p>
<p>
The video shows 2 half finished levels with place holder artwork, the very first level involves the player getting over 2 moving platforms using dexterity, with a very simple puzzle in which the user must push a block up to a platform with a button on it that triggers the moving platform to the exit. I had to overcome a number of problems to achieve this. first of all being the jumping system for the game:
</p>
<p>
 jumping was easy enough, just applying an impulse to the players physics body when the user presses jump. but one problem with this is detecting whether the player is in contact with the ground. i thought of a couple of ways to do this. one of which is casting a ray below the player a specified amount in order to determine if the ground is underneath the player, and another whereby I use the physics material callback between &#8220;player&#8221; and &#8220;floor&#8221; so when they collide a flag in the player object is set to &#8220;on ground&#8221; and every frame is set by the player to not on ground, allowing accurate ground detection every frame. this also presented another problem. when the player is on a object defined as &#8220;floor&#8221; i.e anything you can walk / jump on it sets the flag to true, all well and good, but if this same object is something the player can stand touching such as a wall it means the player is still able to jump, even if they are in the air, allowing the player to jump multiple times up and over walls. i used a little bit of maths to solve this issue in the material callback. so upon collision i obtain the contact position and normal of the collision, normalise it get the dot product of the resultant vector and the players normal (0,1,0) and then get the inverse cos of this, after this it is simply a matter of determining if the angle obtained is the right angle for a player to jump from.
</p>
<p>
another small issue that was fairly easy to resolve was if the player is standing next to a platform / block that they wanted to jump on and they where not moving to begin with it meant that there was no velocity applied to jump on top of it. i resolved this by adding a small amount of forward force to the character if they are in this situation.
</p>
<p>
the second level in the video entails the user getting to the top of the ramp in order to progress, but i have set up a number of emitters to emit spheres with a really high mass that can knock the player off the level hence forcing them to start again. to begin with it didn&#8217;t knock the player off of the platform due to the way that stopping force is applied to the character when on floor in order to correctly stop (as opposed to using friction to stop which is unrealistic). this meant that i had to add a call to the characters jump function on collision with one of these spheres, allowing for more of a challenge mode of play.
</p>
<p>
i was also presented with a design problem in this level, with lots of spheres if you do the level the first time it is an appropriate level of difficulty as the balls hadn&#8217;t yet got onto the bottom platforms by the time you where passed that, but if you got knocked off on the way up the ramp it was  near enough impossible to complete (as you can see from the video) , i resolved this by extending the bottom section of the level by a significant amount and reducing the emit rate of the spheres, this made it a constant difficulty for the whole level.
<br />

</p> 
      ]]></content>
    </entry>

    <entry>
      <title>SDL Shooter</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/sdl_shooter/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.12</id>
      <published>2008-02-11T22:11:00Z</published>
      <updated>2008-02-11T23:19:18Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="Game Development"
        scheme="http://stowelly.co.uk/index.php/site/C1/"
        label="Game Development" />
      <content type="html"><![CDATA[
        <p>A top-scrolling shooter made using C++ and SDL, it provides a demonstration of the following technologies:
</p>
<p>
Particle System
<br />
Sound Effects / Music
<br />
Power ups / Health
<br />
Transparency
<br />
Animation
<br />
Scoring System
<br />
Enemys / Bosses
<br />
Tile mapped Levels, fully compatible with tile maps created using Mappy : <a href="http://www.tilemap.co.uk/">http://www.tilemap.co.uk/</a>
<br />
Splash Screen&#8217;s using Ascii art outputed as text
</p>

<p>
The objective is to get to the end of the 4 levels without dying, each level has an increasing amount of enemys with a boss at the end.
</p>
<p>
<b>
<br />
Controls</b>
</p>
<p>
For optimal playing experience use keyboard and mouse
</p>
<p>
the mouse can be moved anywhere on the screen and the turret will rotate / shoot at the exact point of rotation in order to shoot enemys.
</p>
<p>
left mouse button fires, there is no limit to how many times the user can fire
</p>
<p>
W,A,S,D and the arrow keys are all able to be used to control movement
</p>
<p>
Esc exits the game
</p>
<p>
                                                                               
<br />
<b>   Credits  </b>                                                                           
<br />
                                                    
<br />
  <b>         Programming :</b>
<br />
 
<br />
		  Michael Stowell 
</p>
<p>
	<b>Artwork:</b>
<br />
		  <a href="http://www.reinerstileset.de/">http://www.reinerstileset.de/</a>
<br />
		  &amp;  SpriteLib GPL
</p>
<p>
	<b>Music :&nbsp; </b>  
<br />
		Theme tune by  Relapse
<br />
		<a href="http://myspace.com/junglenobody">http://myspace.com/junglenobody</a>
</p>
<p>
	<b>Sound :</b>
<br />
		<a href="http://www.reinerstileset.de/">http://www.reinerstileset.de/</a>
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Final Year Project Proposal</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/final_year_project_proposal/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.11</id>
      <published>2008-02-10T23:31:00Z</published>
      <updated>2008-02-11T12:29:04Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="PS3 / Cell"
        scheme="http://stowelly.co.uk/index.php/site/C2/"
        label="PS3 / Cell" />
      <content type="html"><![CDATA[
        <p><b>Title:</b> Multi-threaded wave simulation for oceans using the Playstation 3&#8217;s Cell Processor
<br />
<b>Proposer:</b> Michael Stowell
<br />
<b>Degree Pathway(s):</b> Computer Games Software Development BSc
<br />
<b>Description:</b>
<br />
This project comprises of two main parts: 
<br />
Creating / using another persons solution as the basis of a software rasterizer for the PS3, due to the lack of any kind of graphics API for the open source PS3 development tools
<br />
The main part of the project being a study into a number of different methods of simulating waves, then making an attempt to optimize these for the PS3&#8217;s Cell processors SPE&#8217;s in order to make them as efficient as possible, this must also be scalable (I.e number of SPE&#8217;s responsible for the simulation). Comparing the performance outcomes of each method against that of current PC dual core architecture
</p>
<p>
<b>Expected Outcome(s):</b>
<br />
I predict that with the correct optimizations using the SPE&#8217;s that the CELL can greatly outperform a Intel Core 2 Duo dual core machine with regards to the speed in which it can process the wave simulation data. Of course this is all dependent on the amount of processing power required to render the output correctly on the CELL, with the PC having the rendering all carried out by the graphics card it is possible that the PC may still be faster even with optimizations.
</p>
<p>
I would like to be able to answer a number of questions through my research, being whether or not it is even necessary to carry out multi-threading,  how multi-threading can improve the results of a non multi-threaded simulation and have an analysis of how performance changes when the number of threads / SPE&#8217;s is greater / lower.
</p>
<p>
The results will be displayed by a logical analysis of both systems outputs at varying levels of calculation intensive processes using a frame counter and a number of performance measuring tools in order to serve as an indication of my results. If it is possible with the results of the SPE scaling I would like to determine the equation of a graph showing the correlation between number of threads and performance.
</p>
<p>
<b> Equipment Required:</b>
<br />
          Playstation 3 retail console.
<br />
          Any PS3 compatible Linux Distribution.
<br />
          HDMI / Component compatible screen.
<br />
          PC for development.
</p>
<p>
<b>  Staff Expertise:</b>
<br />
          Andrew Williams : Linux / Multi-threading
<br />
          Phil Carlisle : 3D Rendering techniques
</p>
<p>
 <b> Estimated Costs Of Any Special Purchases:</b>
<br />
          N/A Equipment already purchased
</p>
<p>
<b>Nature Of Academic Challenge:</b> The nature of this project is to research into the mathematics and work of other people who have followed similar studies into wave simulation on computer hardware in an effort to improve on these methods and effectively optimize these for the CELL processor as efficiently as possible. This will also serve as a basis into researching how effectively the threading capabilities of the CELL processor are compared to the current threading techniques on Dual Core PC architecture.
</p>
<p>

</p> 
      ]]></content>
    </entry>

    <entry>
      <title>4E6 Engine First Alpha Build, Feature Test : January Progress Log</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/4e6_engine_first_alpha_build_feature_test/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.10</id>
      <published>2008-01-31T16:55:00Z</published>
      <updated>2008-02-26T18:34:20Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="4ESix"
        scheme="http://stowelly.co.uk/index.php/site/C3/"
        label="4ESix" />
      <content type="html"><![CDATA[
        <p>Since my last update on the Destinatum Engine project I was recently given an assignment at uni to do pretty much what i was working on but using the Open Source Graphics Rendering Engine (Ogre : <a href="http://www.Ogre3d.org">http://www.Ogre3d.org</a>). in summary it is basically a scene graph for graphics rendering. fortunately the way it works is not too different to that of Destinatum Engine so porting the functionality across has been fairly painless, it was very easy to reintegrate all the work i did with the Newton game dynamics physics api ( <a href="http://newtondynamics.com">http://newtondynamics.com</a> ) through the use of Walaber&#8217;s wrapper for it ( <a href="http://walaber.com/">http://walaber.com/</a> ), meaning i didn&#8217;t have to reinvent the wheel so to speak.
</p>
<p>
in addition to this i have added a number of new features:
</p>
<p>
Scenes are now fully editable in 3D studio Max, where as previously the objects needed to be exported seperately before positioning them in the scene via editable text files. this is carried out using an exporter called &#8220;OgreMax&#8221; which exports to Ogres native mesh format with a lot of scene specific stuff saved into XML format, particularly scene animations, transformations and lighting. making it very easy for me to manage different in game levels. physics data is still edited via text file, but this is flexible enough to group similar objects with similar characteristics.
</p>
<p>
I&#8217;ve been experimenting quite a lot with shading languages looking at different rendering techniques, particularly the use of bump maps, normal maps, and a similar but relatively unheard of technique called parallax mapping, which are all very nice ways to get high quality detail on low polygon meshes using the programmable pipeline of all modern shader capable graphics cards. also demoed in the above video is a demonstration of the use of shaders for applying post effects to the rendering in order to give different looks for different situations i.e under water, behind glass, watching something on a old movie tape. the transition of these is controlled  by the scripting system i developed (which i will get to in a minute). a list of the effects demoed in this are listed below, and have been implemented using Ogres materials / compositor framework.
<br />
Old Tv, Bloom, Glass, Black &amp; White, Embossed, Sharpen edges, Posterize, Laplace, Invert, Tiling, Old Movie, and HDR. these are all really place holders for final effects as im still undecided about a lot of specific elements and reasons for using certain post effects.
</p>
<p>
when eventually starting to bring a lot of elements together such as sound, post effects, video playback, scene animation, various game play tasks i realised that it would be much easier if a lot of the logic was separate from the Engine / Framework. and would allow for easy modification of game play. so i started off writing an event handler which receives input in the form of a string of a commands, this is then processed and passes all its messages to the appropriate game object managers. this has allowed me to develop a very flexible scripting system whereby it is possible to type commands into a console window and execute them, but also assign commands to Newtons material callbacks in order to allow triggers to execute various game play elements such as changing level, playing video / sound, spawning objects etc etc etc.&nbsp; i eventually found i could flexibly execute timed sequences in this way by creating a Script class, that reads in a list of set commands each with a time to execute in the sequence so a trigger can execute a script file and effectively allow for a multitude of game play elements to be triggered from this.
</p>
<p>
Using the scripting system i devised, I&#8217;ve made it possible to attach objects to various nodes of a character, as shown in the video it is possible to pick up an object and throw it (the artwork doesn&#8217;t really do it any justice), and also attach the camera in order to track the thrown object and move the camera back to the player when it lands
</p>
<p>
In the next update I should hopefully be bringing a lot of this together into some basic game play scenarios in order to test that everything works well together and iron out any glaring bugs.
</p>
 
      ]]></content>
    </entry>

    <entry>
      <title>Destinatum Engine Alpha 1.0 First official release</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/destinatum_engine_alpha_10_first_official_release/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.9</id>
      <published>2008-01-29T19:56:00Z</published>
      <updated>2008-01-30T14:53:16Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="Game Development"
        scheme="http://stowelly.co.uk/index.php/site/C1/"
        label="Game Development" />
      <content type="html"><![CDATA[
        <p><a href="#" onclick="showhide('div1');">Read More:</a></p>
<br />
<div id="div1" style="display: none;"><p>
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 <a href="http://newtondynamics.com/">http://newtondynamics.com/</a> it has been rated as one of the best physics engines on the market, and as a free piece of middleware i think this is excellent.
</p>


<p>
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).
</p>
<p>
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)
</p>
<p>
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.
</p>
<p>
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.
</p>
<p>
It is availible for download here: <a href="http://rookie3.co.uk/DestinatumEngineAlpha1.0.exe" title="Destinatum Engine (right click and save as)">Destinatum Engine</a>
</p>
<p>
the bug tracking data base is located here:Mantis please sign up and submit any bugs / feature requests you may find /have
</p>



<p>
Controls
</p>
<p>
The engines basic controls use Direct Input and are as follows
</p>
<p>
W - Move character forward
<br />
A - Strafe left
<br />
S - Move character backwards
<br />
D - Strafe right
</p>
<p>
Left Arrow Key - Rotate left
<br />
Right Arrow Key - Rotate right
</p>
<p>
F2 - Toggle fullscreen
<br />
F3 - Change controls
</p>
<p>
Z - Toggle debug info
</p>
<p>
Left mouse button click - Selects an object (for use when viewing debug info)
</p>
<p>
It is possible to congiure the controls to whatever you want from the menu, it also supports any controller device setup correctly within windows
</p>
<p>
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
</p>
<p>
&#8220;Program Files\Common Files\DirectX\DirectInput\User Maps&#8221;
</p>
<p>
Lighting
</p>
<p>
In the &#8220;data&#8221; 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
</p>
<p>
&#8220;Lights/point.dat&#8221;
</p>
<p>
This MUST point to a valid dat file detailing a light
</p>
<p>
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
</p>
<p>
only is support for 8 lights at the moment, can add as many as you want, but only the first 8 will be displayed
</p>
<p>
eventually it will be possible to switch between these and have multiple light sources
</p>

<p>
Textures
</p>
<p>
ALL textures must go in the &#8220;Textures&#8221; folder and must be in the .bmp format
</p>
<p>
Audio
</p>
<p>
ALL Audio must go in the &#8220;Audio&#8221; directory and is currently only supported in the .wav format
</p>
<p>
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.
</p>
<p>
Adding a mesh
</p>
<p>
in the &#8220;data&#8221; folder is a list of entity&#8217;s to be referenced by the engine in the file &#8220;Entitys.dat&#8221;, list in here all objects to be loaded at startup make sure the filename follows the current format
</p>
<p>
&#8220;media/box2m/box2m.dat = Skinned&#8221; for entitys which are animated using a mesh hierarchy created using something such as biped
</p>
<p>
or
</p>
<p>
&#8220;media/floor/floor.dat = Static&#8221; for non-player controlled entity&#8217;s which although may be textured, have no animations nor are user controlled
</p>
<p>
This MUST point to a valid dat file detailing a mesh
</p>
<p>
The very first mesh in the list will always be the players character object.< /P >
</p>
<p>
in each folder in the media folder is a dat file containing the objects properties
</p>
<p>
All objects should be created using the scale 1 Unit = 1 Meter
</p>
<p>
Currently the only supported mesh type is Direct X&#8217;s .X format, these files can be created in a wide variety of 3D modelling programs including 3D studio Max and Maya.
</p>
<p>
If using 3D studio max there is an exporter availible called &#8220;Panda&#8221; and is availible from the following page
<br />
<a href="http://www.andytather.co.uk/Panda/directxmax.aspx">http://www.andytather.co.uk/Panda/directxmax.aspx</a>
</p>
<p>
There is another application availible by a company called &#8220;Right Hemisphere&#8221; called &#8220;Deep Exploration&#8221;. 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 &#8220;Panda&#8221; for some aspects.
</p>

<p>
Mesh Properties
</p>
<p>
The meshes dat files take on the following format.
</p>
<p>
xPos = 0.0f
<br />
yPos = 250.0f
<br />
zPos = 20.0f
<br />
xScl = 1.0f
<br />
yScl = 1.0f
<br />
zScl = 1.0f
<br />
xRot = 0.0f
<br />
yRot = 0.0f
<br />
zRot = 0.0f
<br />
collisionType = Box
<br />
boundOffsetX = 0
<br />
boundOffsetY = 1
<br />
boundOffsetZ = 0
<br />
boundOffsetRotX = 0
<br />
boundOffsetRotY = 0
<br />
boundOffsetRotZ = 0
<br />
boundX = 1
<br />
boundY = 2
<br />
boundZ = 1
<br />
xFilePath = ./media/box2m/box2m2.X
<br />
static = false
<br />
pinUpVector = true
<br />
Mass = 1.0
<br />
Material = Player
<br />
NULL
</p>
<p>
For more info on these properties check the included documentation, is far too much text and graphic to include in this blog
</p>
</div> 
<br />

 
      ]]></content>
    </entry>

    <entry>
      <title>Destinatum Engine Alpha</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/destinatum_engine_alpha/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.8</id>
      <published>2008-01-29T19:46:00Z</published>
      <updated>2008-01-30T14:56:22Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="Game Development"
        scheme="http://stowelly.co.uk/index.php/site/C1/"
        label="Game Development" />
      <content type="html"><![CDATA[
        <p><a href="#" onclick="showhide('div2');">Read More:</a></p>
<br />
<div id="div2" style="display: none;">
<p>
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.
</p>

<p>
It is availible for download here: <i>File Offline</i>
</p>
<p>
I havent included the source code for this one due to alot of the code still being used in other projects
</p>



<p>
Controls
</p>
<p>
controls reconfigurable in the menu, is possible to add your own devices e.g pad.
</p>
<p>
W,A,S,D control movement
</p>
<p>
Arrow keys control viewing fruitism
</p>
<p>
F2 to toggle Fullscreen (fullscreen cap&#8217;d to 60 fps)
<br />
F3 to configure Directinput devices
<br />
Z to view bounding mesh collision
</p>
<p>
Camera is switchable between 1st and 3rd person by pressing &#8220;1&#8221; on the keyboard
</p>
<p>
Object editor
</p>
<p>
in the &#8220;data&#8221; folder is a list of objects to be referenced by the engine, liSt in here all objects to be loaded at startup make
</p>
<p>
sure the filename follows the current format
</p>
<p>
in each folder in the media folder is a dat file containing the objects properties, it is in the following format
</p>
<p>
xPos
<br />
yPos
<br />
zPos
<br />
xScl
<br />
Y Scale Try and keep these at 1.0 with your modelling or collison wont work
<br />
Z Scale
<br />
xRot
<br />
yRot
<br />
zRot
<br />
xFilePath
<br />
static simple true or false statement to decide wither object is animated or not
</p>
<p>
in the &#8220;data&#8221; folder is a list of lights to be referenced by the engine, liSt in here all lights to be loaded at startup make
</p>
<p>
sure the filename follows the current format
</p>
<p>
in each folder in the lights folder is a dat file containing the lights properties,i have included 3 templates for 3 different
</p>
<p>
types of lights, all of the values can e chopped and change, it will involve alot of tweaking to get right
</p>
<p>
only is support for 8 lights at the moment, can add as many as you want, but only the first 8 will be displayed
</p>
<p>
eventually it will be possible to switch between these.
</p>
<p>
Change Log:
<br />
Version 0.07
<br />
bounding sphere collision working fully
</p>
<p>
Version 0.06
<br />
bounding sphere collision working (fairly buggy in places though)
</p>
<p>
Started the basis of an option file, for startup game parameters
</p>
<p>
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.
</p>
<p>
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
</p>
<p>
made camera switchable from first person to third person
</p>
<p>
made the option file utilise a nameing system to make it easier to read and less prone to mistakes
</p>
<p>
Version 0.05
</p>
<p>
added preset lighting settings that are scriptable via text files
</p>

<p>
Version 0.04
</p>
<p>
-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)
</p>
<p>
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
</p>
<p>
also fixed a number of memory issues with the loading of objects
</p>

<p>
Version 0.03
</p>
<p>
- 0000009: [] Movement: Character jumps - slightly sinks into the floor returning to proper hight after a brief second (mike)
<br />
- 0000008: [] Memory Allocation - Memory leaks in X file loading code (mike)
</p>
<p>
-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
</p>
<p>
Version 0.02
</p>
<p>
Changed far plane clipping value so scene doesnt appear to be engulfed by nasty blueness
</p>
<p>
0000005: [] Object Editor: Rotation parameter is in radians and not degrees (mike)
<br />
working in version 2.0a
</p>
<p>
- 0000003: [] Collision - Bounding boxes incorectly rendered (Anthon - Creative Director)
<br />
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
</p>
<p>
- 0000004: [] GUI - Graphical changes crash the engine (mike)
<br />
written handler for resetting device, now can toggle between display settings and resolutions without crashing
</p>
<p>
- 0000007: [] Texturing: Certain texture formats not rendered (mike)
<br />
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
<br />
</p></div> 
<br />

 
      ]]></content>
    </entry>

    <entry>
      <title>3D Casino</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/3d_casino/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.7</id>
      <published>2008-01-29T19:43:00Z</published>
      <updated>2008-06-21T15:14:25Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="Game Development"
        scheme="http://stowelly.co.uk/index.php/site/C1/"
        label="Game Development" />
      <content type="html"><![CDATA[
        <p><a href="#" onclick="showhide('div3');">Read More:</a></p>
<br />
<div id="div3" style="display: none;"><p>
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.
</p>

<p>
It is availible for download here: <a href="http://stowelly.co.uk...r" title="...">Casino</a> (right click and save as)
</p>
<p>
I havent included the source code for this one due to alot of the code still being used in other projects
</p>

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


<p>
Controls
</p>
<p>
Standard controls are defined for the keyboards, and these involve the use of the W,A,S,D and arrow keys for movement
<br />
Right Shift controls jump
<br />
when in the &#8220;capture&#8221; 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.
</p>
<p>
for blackjack it is &#8220;H&#8221; to hit &#8220;Space&#8221; to stick &#8220;Q&#8221; to quit and &#8220;enter&#8221; to start again
</p>
<p>
control pads can be setup by pressing &#8220;f2&#8221; or by selecting them from the menu
</p>
<p>
Pressing &#8220;Z&#8221; can be used for viewing the entire deck whilest in a game and will also display the bounding spheres used to trigger the game
</p>
<p>
//to do
</p>
<p>
*adjust the rectangle for collecting the card data as there is a very slight overlap
</p>
<p>
*adjust timing in order to cap framerate, on higher spec pc&#8217;s can achive 800+ fps and lower machines as low as 80 - 100. makes control system fairly varied and too fast in some cases
</p>
<p>
*wrap all d3dx functions into a management system in order to protect against memory leaks
</p>
<p>
*update the collision detection system based on the AABB and OBB princilples
</p>
<p>
*include some kind of betting system
</p>
<p>
* fix the restore device objects in order to allow the user to correctly change modes on-the-fly
</p>
<p>
*link support for quake 3&#8217;s bsp level files in order to leave the scene management more in the hands of the artists
</p>
<p>
*create some kind of dynamic lighting system to begin to visualise the look of an actual casino
</p>
<p>
*correctly abstract some members of the XfileEntity class in order to have optimal world objects
</p>
<p>
*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.
</p>
<p>
*using direct input and XAct add some in game music and sound effects
</p>
<p>
* 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
</p>
<p>
*create the following games
<br />
Poker (texas hold em)
<br />
Roulette
<br />
Video Poker
<br />
Slot Machines
<br />
Wheel of fortune type game
</p>
<p>
* add support for multiple players using direct play
</p>
</div> 
      ]]></content>
    </entry>

    <entry>
      <title>Command Prompt Text based game engine</title>
      <link rel="alternate" type="text/html" href="http://stowelly.co.uk/index.php/site/command_prompt_text_based_game_engine/" />
      <id>tag:stowelly.co.uk,2008:index.php/site/index/1.6</id>
      <published>2008-01-29T19:23:00Z</published>
      <updated>2008-02-11T22:22:09Z</updated>
      <author>
            <name>Mike</name>
            <email>napalm_binary@yahoo.com</email>
                  </author>

      <category term="Game Development"
        scheme="http://stowelly.co.uk/index.php/site/C1/"
        label="Game Development" />
      <content type="html"><![CDATA[
        <p><a href="#" onclick="showhide('div4');">Read More:</a></p>
<br />
<div id="div4" style="display: none;">
<p>
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
</p>


<p>
    *
</p>
<p>
      All players and non player characters are able to be edited via text file to change key attributes and items they are carrying
<br />
    *
</p>
<p>
      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.
<br />
    *
</p>
<p>
      All items and there corresponding properties and values can be edited via text file
<br />
    *
</p>
<p>
      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
<br />
    *
</p>
<p>
      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
<br />
    *
</p>
<p>
      its possible to pick-up items
<br />
    *
</p>
<p>
      its possible to drop items
<br />
    *
</p>
<p>
      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
<br />
    *
</p>
<p>
      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
<br />
    *
</p>
<p>
      all text associated with an area is loaded from text file
<br />
    *
</p>
<p>
      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
<br />
    *
</p>
<p>
      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
<br />
    *
</p>
<p>
      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&#8217;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
<br />
    *
</p>
<p>
      killing another character results in them dropping any items contained within there inventory
<br />
    *
</p>
<p>
      its possible to set a characters “player controllable” property in order to let the player control or not control character
</p>

<p>
i have included the source code, feel free to modify / improve wherever you want as long as you send me the results <img src="http://stowelly.co.uk/images/smileys/wink.gif" width="19" height="19" alt="wink" style="border:0;" />
</p>
<p>
</p></div> 

 
      ]]></content>
    </entry>


</feed>