Ponykart

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!
User avatar
duststorm
Minaton
Posts: 921
Joined: Sat Jul 31, 2010 6:29 pm
Location: Belgium
x 80

Re: Ponykart

Post by duststorm »

The artwork is really good.
And now, also the gameplay mechanics seem to fall in place.

What approach to pathing are you using exactly? I take it you were using a waypoint system.
I can see the carts swaying in curvy bends on the video, which fits the cartoony look quite well (but care must be taken not to make the opponents too easy to beat).
Ofcourse you could make difficulty levels in it, so small kids can attempt to beat the wobbly swaying opponents.

Did you have a look at recast/detour for pathfinding. It's crowd pathfinding might have what you need. If you're familiar with opensteer you will get a hang of it quickly. There's even an ogre sample project for it.
Developer @ MakeHuman.org
User avatar
Pyritie
Gnome
Posts: 363
Joined: Wed Feb 25, 2009 6:15 pm
Location: UK
x 8

Re: Ponykart

Post by Pyritie »

duststorm wrote:The artwork is really good.
And now, also the gameplay mechanics seem to fall in place.

What approach to pathing are you using exactly? I take it you were using a waypoint system.
I can see the carts swaying in curvy bends on the video, which fits the cartoony look quite well (but care must be taken not to make the opponents too easy to beat).
Ofcourse you could make difficulty levels in it, so small kids can attempt to beat the wobbly swaying opponents.

Did you have a look at recast/detour for pathfinding. It's crowd pathfinding might have what you need. If you're familiar with opensteer you will get a hang of it quickly. There's even an ogre sample project for it.
Waypoint combined with a system that tries to keep karts to their side of the road. It's still a work in progress and the karts tend to start steering too late, which is why they "wobble" side to side.

I'll need to add "biases" to the "checkpoints" so they try to take the turns sharply instead of going really wide.

I can't say I've heard of recast, detour, or opensteer, but I can give them a look
I use Mogre, BulletSharp, LuaNetInterface, irrKlang, and Miyagi! | Ponykart (Showcase)
Image
User avatar
duststorm
Minaton
Posts: 921
Joined: Sat Jul 31, 2010 6:29 pm
Location: Belgium
x 80

Re: Ponykart

Post by duststorm »

Recast is a wonderful open-source but commercial quality implementation of navigation mesh pathfinding. The thing that SHOULD be used in every modern game for pathfinding (classic waypointing is passé).
Have a look on this forum for some interesting topics about it:
http://www.ogre3d.org/forums/viewtopic.php?f=11&t=57487
http://www.ogre3d.org/forums/viewtopic.php?f=16&t=52455
http://www.ogre3d.org/forums/viewtopic.php?f=5&t=62079

This is the project page:
http://code.google.com/p/recastnavigation/

And this is the developers blog:
http://digestingduck.blogspot.com/

As you can see it's still alive and active.

A video that shows what the detour crowd algorithm is capable of (it replans the route when the road gets blocked):
[vimeo]27143809[/vimeo]
Developer @ MakeHuman.org
User avatar
Pyritie
Gnome
Posts: 363
Joined: Wed Feb 25, 2009 6:15 pm
Location: UK
x 8

Re: Ponykart

Post by Pyritie »

oh wow, neat
I use Mogre, BulletSharp, LuaNetInterface, irrKlang, and Miyagi! | Ponykart (Showcase)
Image
User avatar
Pyritie
Gnome
Posts: 363
Joined: Wed Feb 25, 2009 6:15 pm
Location: UK
x 8

Re: Ponykart

Post by Pyritie »

Overhauled background ponies some more so now they're colored almost entirely through shaders. This way we don't need to make separate textures for each one.

Threw together this little program about two days ago for tweaking combinations and stuff. Downloads are here: http://ponykart.net/node/32

Also we finished some more karts: http://ponykart.net/node/31 and http://ponykart.net/node/29
You do not have the required permissions to view the files attached to this post.
I use Mogre, BulletSharp, LuaNetInterface, irrKlang, and Miyagi! | Ponykart (Showcase)
Image
User avatar
duststorm
Minaton
Posts: 921
Joined: Sat Jul 31, 2010 6:29 pm
Location: Belgium
x 80

Re: Ponykart

Post by duststorm »

Nice little tool.
I did a similar thing to color the cylinders I'm using in the recast demo I did. I only have two greyscale textures, and I multiply them with a color to create variations. Only I didn't use a shader but a simple material script.

I assume that since you are passing different shader params to each different pony you will still have at least one batch for each color of pony?
Developer @ MakeHuman.org
User avatar
Pyritie
Gnome
Posts: 363
Joined: Wed Feb 25, 2009 6:15 pm
Location: UK
x 8

Re: Ponykart

Post by Pyritie »

duststorm wrote:I assume that since you are passing different shader params to each different pony you will still have at least one batch for each color of pony?
I... guess?

The overhaul was to speed up the creation of additional bg ponies rather than increase rendering speed
I use Mogre, BulletSharp, LuaNetInterface, irrKlang, and Miyagi! | Ponykart (Showcase)
Image
User avatar
duststorm
Minaton
Posts: 921
Joined: Sat Jul 31, 2010 6:29 pm
Location: Belgium
x 80

Re: Ponykart

Post by duststorm »

Batching only becomes an issue when you have a very large amount of background ponies.
Each entity in the scene manager adds a new batch to the render process (or multiple, if it has more than one submesh).
Using geometry instancing you can group repeating meshes together in one single batch (which is what the instancing manager and for example paged geometry does). Using instancing you could reduce the batch count to one batch per pony color, where all ponies with the same color are rendered in one single batch.
But, like I said, unless you intend to create a stand full of 100s of ponies it's probably not an issue.
Developer @ MakeHuman.org
User avatar
Pyritie
Gnome
Posts: 363
Joined: Wed Feb 25, 2009 6:15 pm
Location: UK
x 8

Re: Ponykart

Post by Pyritie »

each one is made of 5 meshes (6 if they have wings or a horn) - body, hair, mane, tail, and eyes. There are stands for them to sit on but they won't be that packed. I was going to spread them around the track more.

Also had an idea where the pegasi could respawn item boxes by dropping them down or something
I use Mogre, BulletSharp, LuaNetInterface, irrKlang, and Miyagi! | Ponykart (Showcase)
Image
User avatar
duststorm
Minaton
Posts: 921
Joined: Sat Jul 31, 2010 6:29 pm
Location: Belgium
x 80

Re: Ponykart

Post by duststorm »

Pyritie wrote:each one is made of 5 meshes
Watch your batch count then. This means that 20 ponies already make for 100 batches if you're doing it naively.
Given the fact that recent GPU's can crunch really a lot of verts, batch count is a lot more important than vertices count these days. I would not let the batch count (= the number of drawcalls) get over 500 (ballpark number) in total. If you're using something like the sample application with SDKTrays, under the FPS counter you see vertices count and batch count. Keep an eye on them ;)
Developer @ MakeHuman.org
User avatar
Pyritie
Gnome
Posts: 363
Joined: Wed Feb 25, 2009 6:15 pm
Location: UK
x 8

Re: Ponykart

Post by Pyritie »

So even though they share a lot of the same meshes I couldn't really instance them very well (especially if I want them to be animated well)?
I use Mogre, BulletSharp, LuaNetInterface, irrKlang, and Miyagi! | Ponykart (Showcase)
Image
User avatar
duststorm
Minaton
Posts: 921
Joined: Sat Jul 31, 2010 6:29 pm
Location: Belgium
x 80

Re: Ponykart

Post by duststorm »

You can if you instance them.
All parts that have the same material can be rendered in one batch.
The resulting number of batches when instanced will be the number of material instances (a material instance is one material or shader with set parameters). This means that, for example, if you manage to reuse the same material for all different types of tails, you will only need one drawcall (batch) to draw all the tails.
It's the same as they do on Bigfly Baseball.
They randomly generate characters out of separate parts. But all parts with the same color or texture are rendered in one batch, which might even be better in terms of batchcount than if characters were just made of one single part. Because you don't really notice that the same head (or one with the same texture) is reused a lot, as long as the combination of character parts differs.

About color variations within one shader, maybe you could drop the shader parameters and assign all color parameters as vertex colors? This way all materials that have the same texture, even if they have different colors, can be rendered in one batch if instanced.
The negative side of this is that you cannot share the same mesh for all ponies, as the vertex colors need to differ. I think this will only increase the CPU RAM usage, as once the geometry is offloaded to the GPU all shared meshes are duplicated (I could be wrong on this one, though..) Also, I would probably assign these vertex colors using code so that you don't need to create duplicate .mesh files just with different vertex colors. Unfortunately you will not be able to store the color information in the material properties anymore, but if you are using ogre's .scene format you could add them as custom parameters to your mesh.

With a lot of animated ponies I would also add hardware skinning.
Last edited by duststorm on Sun Jun 10, 2012 7:37 pm, edited 1 time in total.
Developer @ MakeHuman.org
User avatar
Pyritie
Gnome
Posts: 363
Joined: Wed Feb 25, 2009 6:15 pm
Location: UK
x 8

Re: Ponykart

Post by Pyritie »

duststorm wrote:You can if you instance them.
All parts that have the same material can be rendered in one batch.
It's the same as they do on Bigfly Baseball.
They randomly generate characters out of separate parts. But all parts with the same color or texture are rendered in one batch, which might even be better in terms of batchcount than if characters were just made of one single part. Because you don't really notice that the same head (or one with the same texture) is reused a lot, as long as the combination of character parts differs.

About color variations within one shader, maybe you could drop the shader parameters and assign all color parameters as vertex colors? This way you could use one pony material instance (at least per body part) for all parts, which if instanced results in just one single batch!
I'm not sure if that would work for me though - I have to recolor an AO texture and add an outline as well
I use Mogre, BulletSharp, LuaNetInterface, irrKlang, and Miyagi! | Ponykart (Showcase)
Image
User avatar
duststorm
Minaton
Posts: 921
Joined: Sat Jul 31, 2010 6:29 pm
Location: Belgium
x 80

Re: Ponykart

Post by duststorm »

Maybe it's really overkill.
You're probably not going to have hundreds of different pastel color schemes anyway. The fact that they are all separate parts can even help as you can recombine them in different ways without upping the batch count (just like in BigFly).
Just make sure all parts that have the same texture and color are instanced as one batch. (so you make only one drawcall for all pink tails, for example).
Developer @ MakeHuman.org
User avatar
Pyritie
Gnome
Posts: 363
Joined: Wed Feb 25, 2009 6:15 pm
Location: UK
x 8

Re: Ponykart

Post by Pyritie »

and then there's their butt symbols as well...
I use Mogre, BulletSharp, LuaNetInterface, irrKlang, and Miyagi! | Ponykart (Showcase)
Image
User avatar
duststorm
Minaton
Posts: 921
Joined: Sat Jul 31, 2010 6:29 pm
Location: Belgium
x 80

Re: Ponykart

Post by duststorm »

Yes, I noticed in the editor screenshot.
How do you create them currently? As a separate submesh of the torso bodypart with transparent texture?
Developer @ MakeHuman.org
User avatar
Pyritie
Gnome
Posts: 363
Joined: Wed Feb 25, 2009 6:15 pm
Location: UK
x 8

Re: Ponykart

Post by Pyritie »

second set of UV coordinates

source is here if you want to take a peek http://ponykart.svn.sourceforge.net/vie ... materials/ :D

I didn't want to divide the meshes because the model's already a bitch to animate with all of the attachments (or so my modeler says)
I use Mogre, BulletSharp, LuaNetInterface, irrKlang, and Miyagi! | Ponykart (Showcase)
Image
themean
Greenskin
Posts: 104
Joined: Wed Feb 29, 2012 11:50 am
x 1

Re: Ponykart

Post by themean »

It's looking awesome but why pony :)
User avatar
Mind Calamity
Ogre Magi
Posts: 1255
Joined: Sat Dec 25, 2010 2:55 pm
Location: Macedonia
x 81

Re: Ponykart

Post by Mind Calamity »

themean wrote:It's looking awesome but why pony :)
Because to many people ponies are awesome, and friendship is magic! ;)
BitBucket username changed to iboshkov (from MindCalamity)
Do you need help? What have you tried?
- xavier
---------------------
HkOgre - a Havok Integration for OGRE | Simple SSAO | My Blog | My YouTube | My DeviantArt
User avatar
Pyritie
Gnome
Posts: 363
Joined: Wed Feb 25, 2009 6:15 pm
Location: UK
x 8

Re: Ponykart

Post by Pyritie »

themean wrote:It's looking awesome but why pony :)
Really easy to get artists and promote the game

but oh god don't even start with the fanbase
I use Mogre, BulletSharp, LuaNetInterface, irrKlang, and Miyagi! | Ponykart (Showcase)
Image
themean
Greenskin
Posts: 104
Joined: Wed Feb 29, 2012 11:50 am
x 1

Re: Ponykart

Post by themean »

But ponies are for girls and cart are for boys. What is the prime target of this game.
User avatar
Pyritie
Gnome
Posts: 363
Joined: Wed Feb 25, 2009 6:15 pm
Location: UK
x 8

Re: Ponykart

Post by Pyritie »

The prime target is FUN
I use Mogre, BulletSharp, LuaNetInterface, irrKlang, and Miyagi! | Ponykart (Showcase)
Image
User avatar
areay
Bugbear
Posts: 819
Joined: Wed May 05, 2010 4:59 am
Location: Auckland, NZ
x 69

Re: Ponykart

Post by areay »

themean wrote:But ponies are for girls and cart are for boys. What is the prime target of this game.
Boys + Girls ?
Yati
Greenskin
Posts: 115
Joined: Thu Jun 09, 2011 5:41 am
Location: Melbourne, Australia
x 5

Re: Ponykart

Post by Yati »

Wowee! :D Looks really polished.

We're making a "toony" game for school, Did you guys use any special shaders? Or is it done using textures? A mix of both?
I've been looking into how to get that look by looking at Torchlight's media, they seems to have just used textures to get their look.

For what parts are you using Lua?
User avatar
Pyritie
Gnome
Posts: 363
Joined: Wed Feb 25, 2009 6:15 pm
Location: UK
x 8

Re: Ponykart

Post by Pyritie »

Yati wrote:We're making a "toony" game for school, Did you guys use any special shaders? Or is it done using textures? A mix of both?
An edge shader (like mario galaxy has) combined with colored AO
For what parts are you using Lua?
A whole bunch of unrelated things but mostly stuff associated with game object spawning. Like when one of those apple containers is spawned, a lua script fills it with apples.
I use Mogre, BulletSharp, LuaNetInterface, irrKlang, and Miyagi! | Ponykart (Showcase)
Image