Wednesday, February 27, 2008

How to: Use Irrlicht rendering engine on ps3 Linux using just the framebuffer

Free Image Hosting at <a href=http://www.ImageShack.us” />

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’ve not tried).  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’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)

Also it may even be possible to optimise the software drawing routines for the SPE’s. Maybe someone with a bit more knowledge can shed some light on this?

1: Download Irrlicht 1.4 http://irrlicht.sourceforge.net/downloads.html (the top one 16.1 mb)

2: Extract to a directory then “cd” to the include directory and replace “IrrCompileConfig.h” with the new one.

3 “cd” to the “source” folder and replace “CirrDeviceLinux.h” and “CirrDeviceLinux.cpp” with the replacement files included

4: make.... wait about 5 minutes

5: cd to the examples directory and run ./buildAllExamples.sh

6 cd to the bin directory and test the demo’s out smile

you may need to modify the resolutions of the demo’s to match that of your screen, in the screen shot here I’ve got it running at 1080i

files:  http://stowelly.co.uk/IrrllichtFB-replacement-Files.rar (right click save as)

Posted by Mike on 02/27 at 11:40 AM
PS3 / Cell • (7) CommentsPermalink

Tuesday, February 26, 2008

4E6 Engine First Gameplay Test : Febuary Progress Log


CLICK TO ENLARGE


CLICK TO ENLARGE

Over the last month since my last update I’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.

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:

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 “player” and “floor” so when they collide a flag in the player object is set to “on ground” 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 “floor” 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.

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.

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’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.

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’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.

Posted by Mike on 02/26 at 08:01 PM
4ESix • (5) CommentsPermalink

Monday, February 11, 2008

SDL Shooter


CLICK TO ENLARGE


CLICK TO ENLARGE

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

A top-scrolling shooter made using C++ and SDL, it provides a demonstration of the following technologies:

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

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.


Controls

For optimal playing experience use keyboard and mouse

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.

left mouse button fires, there is no limit to how many times the user can fire

W,A,S,D and the arrow keys are all able to be used to control movement

Esc exits the game


Credits

Programming :

Michael Stowell

Artwork:
http://www.reinerstileset.de/
& SpriteLib GPL

Music : 
Theme tune by Relapse
http://myspace.com/junglenobody

Sound :
http://www.reinerstileset.de/

Posted by Mike on 02/11 at 11:11 PM
Game Development • (9) CommentsPermalink

Final Year Project Proposal

Title: Multi-threaded wave simulation for oceans using the Playstation 3’s Cell Processor
Proposer: Michael Stowell
Degree Pathway(s): Computer Games Software Development BSc
Description:
This project comprises of two main parts:
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
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’s Cell processors SPE’s in order to make them as efficient as possible, this must also be scalable (I.e number of SPE’s responsible for the simulation). Comparing the performance outcomes of each method against that of current PC dual core architecture

Expected Outcome(s):
I predict that with the correct optimizations using the SPE’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.

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’s is greater / lower.

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.

Equipment Required:
Playstation 3 retail console.
Any PS3 compatible Linux Distribution.
HDMI / Component compatible screen.
PC for development.

Staff Expertise:
Andrew Williams : Linux / Multi-threading
Phil Carlisle : 3D Rendering techniques

Estimated Costs Of Any Special Purchases:
N/A Equipment already purchased

Nature Of Academic Challenge: 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.

Posted by Mike on 02/11 at 12:31 AM
PS3 / Cell • (12) CommentsPermalink
Page 1 of 1 pages