Group Portfolio Project - Side Scrolling Game

A place to show off your latest screenshots and for people to comment on them. Only start a new thread here if you have some nice images to show off!
cycloverid
Greenskin
Posts: 127
Joined: Tue Sep 11, 2007 9:27 am
x 1

Group Portfolio Project - Side Scrolling Game

Post by cycloverid »

Hey everyone, just wanted to post the results of a year long portfolio project my brother and I have been working on - and for the most part have finished ( there's always more that can be done, however :) ). My twin brother and I use this login, and we both worked on this project and posted on these forums. :) I hope you're all thoroughly confused.

Anyways, I'm the programmer and my brother did the artwork ( textures/models/etc) . We had a part-time animator as well.

My brother hand-painted all the textures and did all the models in Maya.

I programmed all the art tools for Maya in MEL and Maya API ( much of it was an extension of LFA - thanks metaldev ). I programmed the collisions and physics, AI, combat system, the shaders, shadows, programmed a weapon trail with a curve-fit algorithm, setup the particles using ParticleAccelerator - thanks Ajare - and improved the ogre wiki animation blender code and much more. (The exact details will be on my website whenever I get around to setting that up :) ).

If anyone wants to see any of the code it's on sourceforge:

SVN:
https://physicsinclude.svn.sourceforge. ... icsinclude

Without further ado, here are some screenshots:

Image

Image

Image

Image

Image

Edit: Fixed the images links. Now they point to the Ogre featured project images.

Most of all I want to thank everyone that helped me along the way, it was a tremendous help. The Ogre community is an invaluable resource.
Last edited by cycloverid on Tue Oct 14, 2008 12:11 pm, edited 4 times in total.
Kaimaru
Gnoblar
Posts: 16
Joined: Tue Aug 28, 2007 3:47 am

nice

Post by Kaimaru »

Very nice. I gave it a whirl. Reminds me of mario (for obvious reasons) and kingdom hearts. Love the art style. I didn't get very far, but everything seemed to work well. The menu's could use some working on though. Also I didn't hear any sound/music, is there supposed to be? I see some volume controls for them.
Oh, now that I've run it a few times, I've noticed that the enemies only spawn every other time I run the application.
If you fix those few things, I think it'll be a great piece in your portfolios!
jjp
Silver Sponsor
Silver Sponsor
Posts: 597
Joined: Sun Jan 07, 2007 11:55 pm
Location: Cologne, Germany
Contact:

Post by jjp »

Looks great :) I like the froggies. One little thing though: the interface is distorted if the game runs in any other aspect ratio than 4:3.
Enough is never enough.
cycloverid
Greenskin
Posts: 127
Joined: Tue Sep 11, 2007 9:27 am
x 1

Post by cycloverid »

Yeah, we designed the game just to show off our inidividual roles on the project. Unforunately we didn't have enough time to write different shader profiles, implement different GUI resolutions, make different levels and tons of other stuff we really wanted to do. Also the textures are washed out in the actual game. We talked about boosting the contrast, but it's really not necessary as it would be a post-process anyway and we just do that in Photoshop or AfterFX. Investing too much more time into this project would be a huge time-sink, and we're ready to just move on - it's been a year! . :) Thanks for the feedback, though.
Last edited by cycloverid on Sat Oct 04, 2008 10:22 pm, edited 2 times in total.
korupt
Gnoblar
Posts: 8
Joined: Sun Mar 02, 2008 2:57 am

Post by korupt »

Looks cool, congrats!
Aiursrage2k
Greenskin
Posts: 120
Joined: Wed May 18, 2005 6:40 pm

Post by Aiursrage2k »

Wow looks great.
User avatar
jorrit5477
Gremlin
Posts: 181
Joined: Thu Feb 09, 2006 1:48 am
Location: The Netherlands

Post by jorrit5477 »

Looking really great! The same yields for me, I missed the music (especially since there volume settings in the menu). And I didn't find a reason to collect the glowing spheres, could be usefull for adding health lost by those frogs trying to eat me. But again, great work!
Baddcog
Halfling
Posts: 62
Joined: Sat Jul 12, 2008 12:16 am

Post by Baddcog »

I does look very nice, but how do you play it? (ogre dummy here)

Do you have to DL everything and compile or something?
User avatar
metaldev
Orc Shaman
Posts: 761
Joined: Thu Mar 17, 2005 11:56 pm
Location: Boston
x 15
Contact:

Post by metaldev »

Wow looks awesome! :o

im really happy that the LFA tools helped you get where you wanted to go!! ^_^
im curious as to what features you added - PM me if you want to respond so that we dont go off topic!

great job though, this is a sweet portfolio piece for sure! Great attention to the feeling of depth, consistent color palette, attention to integration, consistent level of detail and pixel density... very nice.

the frogs remind me of one of the final bosses from 'Contra - Shattered Soldier'
sweet.
User avatar
NoodlesOnMyBack
Goblin
Posts: 200
Joined: Tue Feb 05, 2008 4:14 am
Location: Buenos Aires, Argentina
Contact:

Post by NoodlesOnMyBack »

Looks great indeed, plus for a 2 people team its very impressive...
Congratulations!
cycloverid
Greenskin
Posts: 127
Joined: Tue Sep 11, 2007 9:27 am
x 1

Post by cycloverid »

metaldev wrote:Wow looks awesome! :o

im really happy that the LFA tools helped you get where you wanted to go!! ^_^
im curious as to what features you added - PM me if you want to respond so that we dont go off topic!

great job though, this is a sweet portfolio piece for sure! Great attention to the feeling of depth, consistent color palette, attention to integration, consistent level of detail and pixel density... very nice.

the frogs remind me of one of the final bosses from 'Contra - Shattered Soldier'
sweet.
LFA pretty much did everything we needed. The code I added was just a modification to allow placement of game-specific objects and controls for adjusting their properties. I also added a Maya API tool that converts a 3D mesh into a 2D spline sliced along the Z-axis. It then converts this spline into a minimal set of convex polygons and outputs it to a data file to be read in by the game for collisions. All of that code is on sourceforge if anyone is interested in making a game with 2D collisions -- it's located in the folder: buildCollisionMeshAPI.
User avatar
sinbad
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 19269
Joined: Sun Oct 06, 2002 11:19 pm
Location: Guernsey, Channel Islands
x 66
Contact:

Post by sinbad »

Fantastic work, especially for 2 people!

Easily deserving of a featured project spot, and thanks for releasing the source code.
tourist
Gnoblar
Posts: 9
Joined: Wed Jun 11, 2008 7:52 pm

Post by tourist »

Awesome work!
Thanks a lot for releasing the source!
User avatar
nikki
Old One
Posts: 2730
Joined: Sat Sep 17, 2005 10:08 am
Location: San Francisco
x 13
Contact:

Post by nikki »

Looks very nice! Hand painted textures look cool it seems... Even Team Fortress 2 has some, and they look good.
User avatar
my.name
Goblin
Posts: 222
Joined: Tue Aug 08, 2006 2:58 pm
Location: Moscow
x 1

Post by my.name »

oO
Image
Image
JeDi
Gnome
Posts: 351
Joined: Thu Oct 21, 2004 1:34 pm
Location: Diepenbeek, Belgium
x 3
Contact:

Post by JeDi »

Look great! I really like the visual style you used. Your image hosting bandwidth seems to be exceeded though. Maybe edit the post so the images link to Ogre's image gallery?

Could you maybe elaborate a bit about the development work flow? I think a lot of people would be interested in that. So what modeling applications did you use, how did you setup the materials, what external libraries did you use, etc.

Greetz,
JeDi
cycloverid
Greenskin
Posts: 127
Joined: Tue Sep 11, 2007 9:27 am
x 1

Post by cycloverid »

Thanks sinbad for featuring this project!
JeDi wrote:Look great! I really like the visual style you used. Your image hosting bandwidth seems to be exceeded though. Maybe edit the post so the images link to Ogre's image gallery?

Could you maybe elaborate a bit about the development work flow? I think a lot of people would be interested in that. So what modeling applications did you use, how did you setup the materials, what external libraries did you use, etc.

Greetz,
JeDi
Thanks JeDi. We actually didn't use a single external library besides, of course, Ogre. Our goal was just to build a game from the ground up. For example, I built the 2D physics and collisions using things I read from David Eberly and Christer Ericson's physics/collisions books "Game Physics" and "Real-Time Collision Detection" as well as what I followed on the Bullet forums and physics examples by Olivier Renault and Erin Catto. This enabled me to simulate convex polygon rigid bodies. For the ropes I used a simple algorithm Eric Jordan proposed which is to use Verlet integration with position constraints with a fixed time-step and state interpolation.

The water uses a highly modified version of the fresnel demo, with a fairly efficient depth implementation and faked specular reflections for the wisp particles ( both features I completely designed myself ). The background water sources actually use a technique I concocted myself to warp static depth-reflection maps into the current camera frame. This greatly sped up multiple planar reflections. Unfortunately, there are significant artifacts at the moment because of my inability to finish the algorithm due to time-constraints and because of the immense complexity of it. It would work really well if I could finish it, however. Overall it was just for fun and is too bothersome to implement for general use.

The shadows were really easy to do. We have static lighting that we baked in with Maya and read in as a separate map. And then we have a dynamic light component that I implemented with additive integrated shadow maps and a simple custom camera class that is optimized for the 2D nature of the game.

The shaders took a bit of time. We designed a few generic shaders and "inherited" from those for all the objects in the game. We have a multi-texture shader for the terrain, a prop shader, a water prop shader, and a character shader as well as the water shader mentioned above. This saved a lot of time when applying shaders to certain materials. The major time sink was just learning all the ins and outs of shader programming, such as material definitions, and learning to use CG, and binding shader parameters at run-time.

I also made a curve-fit algorithm to smooth out the weapon trail using a lagrange interpolating polynomial equation. This guarantees that the trail is smooth at low frames or if the weapon is moving quickly. The implementation can be found in CWeaponTrail.cpp in UpdateSegmentCount( ... ). There is still a glitch with it due to the fact that the polynomial expression needs to be a 1-to-1 function and that isn't always satisfied in the current implementation.

As far as work-flow, I started work on the engine a couple months before any artwork was done. My brother couldn't start because at this point we didn't have the actual format of art assets figured out yet. While I was working on the game engine, it was a good time for my brother to design the assets: i.e. the overarching style/color scheme/characters/props... etc. We both put our heads together on this one. We really wanted to do a lot more elaborate things at first but we cut back all of our plans as we went due to the lack of manpower. This was only to be expected, though.

If you are going to work on a project with multiple people, use version control. You'll waste way too much time if you don't. And making games takes a ridiculous amount of time anyway. Some weeks I never saw the light of day. This really made working on things at the same time a breeze, which is often necessary.

When I was done with the game engine, I made the level tools by expanding/customizing LFA to fit the needs of the game. We use Maya so this was done in MEL and Maya API. My brother was then able to model assets in Maya - paint textures in photoshop with a Wacom tablet. Painting the textures took countless hours. There's not really an easy way to do it from what I could see. It just takes a lot of love. :) When those assets were done we were able to just export and play the game and I would tweak and add features as we saw fit.

You can view the textures and other assets @ http://www.justinkenneallyart.com

The whole project took an incredible amount of time and commitment - mainly because a lot of the aspects of the game were new territory for both of us. From custom collision, physics, effects, shaders, AI, factory management/custom object scripts, to designing and optimizing game assets. We set out to make this game as a means of studying the process of making games, not really as something that would be overly impressive to look at. Of course we wanted it to look good, but that wasn't our major focus. I'm glad we got a really well-rounded project out of all of this, that was both a major learning experience as well as a semi-successful "proof-of-concept" game.
Ogre was a great foundation for us to learn on and had a great community to help us when we ran into road-blocks.
User avatar
NoodlesOnMyBack
Goblin
Posts: 200
Joined: Tue Feb 05, 2008 4:14 am
Location: Buenos Aires, Argentina
Contact:

Post by NoodlesOnMyBack »

Thank you so much for releasing the source, and all the explanations, i think this is very usefull, im definitely going to dig this...
Image
wq11
Gnoblar
Posts: 1
Joined: Tue Oct 21, 2008 1:40 pm

flopper cannot run!

Post by wq11 »

I recompiled the code with vs2005. but when I click "start game",flopper crash! how can I make flopper go.

the ogre.log writes:
......
21:00:20: Added resource location '../../media/packs/OgreCore.zip' of type 'Zip' to resource group 'Bootstrap'
21:00:20: Added resource location '../../media' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/fonts' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/materials/programs' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/materials/scripts' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/materials/textures' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/materials/textures/MULTI' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/materials/textures/ReflMap' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/materials/textures/RTT' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/models' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/models/Item' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/models/flower' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/models/frog' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/models/kid' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/models/Sword' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/models/Level1' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/overlays' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/particle' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/gui' of type 'FileSystem' to resource group 'General'
21:00:20: Added resource location '../../media/scene' of type 'FileSystem' to resource group 'General'
21:00:20: D3D9 : RenderSystem Option: Allow NVPerfHUD = No
21:00:20: D3D9 : RenderSystem Option: Anti aliasing = None
21:00:20: D3D9 : RenderSystem Option: Floating-point mode = Fastest
21:00:20: D3D9 : RenderSystem Option: Full Screen = Yes
21:00:20: D3D9 : RenderSystem Option: Rendering Device = ATI MOBILITY RADEON X300
21:00:20: D3D9 : RenderSystem Option: VSync = No
21:00:20: D3D9 : RenderSystem Option: Video Mode = 800 x 600 @ 32-bit colour

......
21:00:25: Info: Freetype returned null for character 127 in font BlueHighway
21:00:25: Info: Freetype returned null for character 128 in font BlueHighway
21:00:25: Info: Freetype returned null for character 129 in font BlueHighway
21:00:25: Info: Freetype returned null for character 130 in font BlueHighway
21:00:25: Info: Freetype returned null for character 131 in font BlueHighway
21:00:25: Info: Freetype returned null for character 132 in font BlueHighway
21:00:25: Info: Freetype returned null for character 133 in font BlueHighway

......

21:00:25: Error at line 1 of animations.material: parent material: KGSpec not found for new

21:00:25: Error at line 26 of animations.material: parent material: KGSpec not found for new material:kidfinal78865_KidAlpha

......

21:00:25: OGRE EXCEPTION(2:InvalidParametersException): Parameter called texelOffsets does not exist. in GpuProgramParameters::_findNamedConstantDefinition at ..\src\OgreGpuProgram.cpp (line 883)
......

21:00:26: Error at line 37 of WaterWave.material: Invalid param_named attribute - you need 4 parameters for a parameter of type float2
21:00:26: OGRE EXCEPTION(2:InvalidParametersException): Parameter called waveSize does not exist. in

......
User avatar
hagish
Kobold
Posts: 30
Joined: Wed Jul 25, 2007 2:34 am
Contact:

Post by hagish »

@cycloverid
i couldn't find infos about the used license in the repository.
under which license did you release the source and the media of the game?
is only the code free or the media too?
cycloverid
Greenskin
Posts: 127
Joined: Tue Sep 11, 2007 9:27 am
x 1

Post by cycloverid »

I believe that all content on sourceforge is licensed under LGPL or GPL. In our case it was LGPL. This information is listed on the main project page.

http://sourceforge.net/projects/physicsinclude/


I probably should have put headers on everything, but I'm not all that concerned about the code getting "hijacked" because this project was just for fun. If you can find use for any of it, by all means go ahead and use it - just give credit where it is due. There are remarks in the code where I modified other people's code, so please be wary of that.

Same goes for the artwork - Don't pass it off as your own and please give us credit if you decide to use it, otherwise yes it is completely free.
User avatar
hagish
Kobold
Posts: 30
Joined: Wed Jul 25, 2007 2:34 am
Contact:

Post by hagish »

great :)
i thought about adding it to the free content search tool
http://search.freegamedev.net/
User avatar
test84
Gremlin
Posts: 159
Joined: Fri Nov 14, 2008 8:23 pm

Re: Group Portfolio Project - Side Scrolling Game

Post by test84 »

Forgive my ignorance but
Where can I download the binaries? I went to its Sourceforge page but there was nothing to download. Then I went to its SVN page and there was lots of things to get, which directories should I download?

Thanks :)
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: Group Portfolio Project - Side Scrolling Game

Post by jacmoe »

test84 wrote:Then I went to its SVN page and there was lots of things to get, which directories should I download?
Use a SVN client, like TortoiseSVN (if on Windows) and enter the URL into it. (Right-Click, SVN Check-out).
Then build it. :wink:
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
test84
Gremlin
Posts: 159
Joined: Fri Nov 14, 2008 8:23 pm

Re: Group Portfolio Project - Side Scrolling Game

Post by test84 »

Thanks jacmoe for your reply,
I made a folder and after right click on it I selected svn-check out and they put the url of https://physicsinclude.svn.sourceforge. ... icsinclude there but it returned this error:

Checkout from https://physicsinclude.svn.sourceforge. ... icsinclude, revision HEAD, Fully recursive, Externals included
OPTIONS of 'https://physicsinclude.svn.sourceforge. ... icsinclude':
could not connect to server (https://physicsinclude.svn.sourceforge.net)
Finished!

What am I missing?

BTW, Since I'm on dial up, I wondered how big is the download.

Thanks again.
Post Reply