Making a 2D Katamari Damacy in Construct!

For questions about using Classic.

Post » Mon Apr 27, 2009 12:30 am

I'm working on a 2D Katamari Damacy game that mimics this:

http://www.youtube.com/watch?v=oe08F2SX0Ng

I'm using Construct, but I have hardly used it before and I need bigtime help.

Basically, I need to create an engine that allows you to have a physics ball that can jump, roll, pickup objects smaller than it, and stick those objects to it (they need to rotate with the ball)

But I really have no idea where to start. Could anyone help me with this? Seriously, I'm lost.

So can anyone help?

I understand this shouldn't be TOO difficult in construct. But I'd like the camera to zoom out as the ball gets bigger...
B
2
G
3
Posts: 17
Reputation: 884

Post » Mon Apr 27, 2009 3:23 am

k
first, this is a harder project than you think, mainly because I don't think construct physics are stable and refined enough to take center stage on gameplay, you're going to need to be comfortable with construct to make something like this work, let alone playable and fun

that being said, you asked for some help to get started, I have to get to bed, so I can't go into detail of how it works, but you can examine the cap, and if anyone else is awake they can help you as well

this is to help you get started, some ideas of how some things might work
it's a physics ball, with left and right arrow keys to roll, and spacebar to jump
and when you run over things they stick and roll with your ball

http://dl.getdropbox.com/u/1013446/katama.cap

some more info:

I originally tried making them stay real physics objects when you picked them up, using stiff hinges, but they didn't turn with the ball
you'll have to find a way to fix it so your ball rolls differently when things are stuck to it,
one idea which will work fairly well considering how easy, is to make the sprite for your ball not have physics on it, and make your ball sprite always update it's position and angle along with an invisible physics ball sprite of the same size. until you pick something up it would look exactly the same as it does in this example
every time the ball hit's an object, use math to change the shape of the invisible physics ball, so it encircles both the sprite of the ball, and all the things attached to it
if you're using ellipse physics, it will still be able to roll, but it can have a wobblyness to it, as it get's stretched more in certain directions

this should be a pretty good starting point
if you're unclear about the idea of using invisible sprites, a different example is in deadeye's platform school tutorials. I won't post a link, because if you haven't already, you should familiarize yourself with all the help resources

good luck, and welcome to construct
Spriter Dev
B
88
S
21
G
12
Posts: 3,240
Reputation: 16,486

Post » Mon Apr 27, 2009 4:22 am

wow, that was super helpful, thanks tons!!

okay, a couple things. the example looks pretty good. do you suggest the actual ball should grow as more and more stuff is picked up, or just that the stuff is getting more and more?

you lost me on the invisible stuff but it all sounds very good on paper.... also, how will i be able to have the camera zoom out as the ball gets bigger? would there be an easier way to "simulate" this effect? and how will the ball know to only pick up objects that are bigger than it?
B
2
G
3
Posts: 17
Reputation: 884

Post » Mon Apr 27, 2009 8:37 am

[quote="xiao":39ux9du4]wow, that was super helpful, thanks tons!!
[/quote:39ux9du4]
no prob
[quote="xiao":39ux9du4]
okay, a couple things. the example looks pretty good. do you suggest the actual ball should grow as more and more stuff is picked up, or just that the stuff is getting more and more?[/quote:39ux9du4]
I'd suggest the second one, although you might need to do what they did in katamari, and have smaller versions of each sprite that you load up as it gets bigger to save vram, also maybe something using canvas to paste all your sprites to everytime you get a major zoom , so you're not keeping track of the rotations of hundreds of objects
[quote="xiao":39ux9du4]
you lost me on the invisible stuff but it all sounds very good on paper....[/quote:39ux9du4]
imagine that you made the exact same red circle, without physics
and you made a pink circle with physics the exact same size, but set to invisible
every frame you told the red circle to set it's location and angle to the invisible pink circle

so far it behaves the same, but when you pick things up, you figure out a math formula that will change the shape of the invisible pink circle so that it circles the redball and the junk, and you'd have to find other formulas and expressions to position the ball on this new pink one, but the idea would be something like this:

[quote="xiao":39ux9du4].... also, how will i be able to have the camera zoom out as the ball gets bigger? would there be an easier way to "simulate" this effect? and how will the ball know to only pick up objects that are bigger than it?[/quote:39ux9du4]
really, before you tackle this you should go through all the tutorials and the wiki, there are zoom commands here for layers: [url:39ux9du4]http://apps.sourceforge.net/mediawiki/construct/index.php?title=Layer_Properties[/url:39ux9du4] these might affect physics...not sure
and as for the size of the objects, you say
[code:39ux9du4]On collision with PickUpableObjects
System-Compare-If PickUpableObject.x*PickUpableObject.y is less than or equal to [the total size of your ball+junk]
then stick things to it[/code:39ux9du4]
gotta go, gonna be late to work
but seriously, I know construct is superfun and easy, but, play around with all the tutorials, and read the wiki, construct has a lot of awesome stuff to make things easier

have fun
Spriter Dev
B
88
S
21
G
12
Posts: 3,240
Reputation: 16,486

Post » Mon Apr 27, 2009 11:51 am

Hmmm this might be doable with straght physics objects... using two hinges per object instead of one would effectively "weld" it to the new object... in theory.

I might have a tinker later with some ideas and see if I can figure something out. I love the Katamari games (no pun intended), so it would be fitting to have a Katamari clone made with Construct.

~Sol
Tired of crappy file hosts that are crappy? Get DROPBOX - https://db.tt/uwjysXJF
Moderator
B
45
S
17
G
37
Posts: 2,853
Reputation: 25,966

Post » Mon Apr 27, 2009 2:56 pm

[quote="lucid":27pv2kv1]I'd suggest the second one, although you might need to do what they did in katamari, and have smaller versions of each sprite that you load up as it gets bigger to save vram, also maybe something using canvas to paste all your sprites to everytime you get a major zoom , so you're not keeping track of the rotations of hundreds of objects

imagine that you made the exact same red circle, without physics
and you made a pink circle with physics the exact same size, but set to invisible
every frame you told the red circle to set it's location and angle to the invisible pink circle

so far it behaves the same, but when you pick things up, you figure out a math formula that will change the shape of the invisible pink circle so that it circles the redball and the junk, and you'd have to find other formulas and expressions to position the ball on this new pink one, but the idea would be something like this:
[/quote:27pv2kv1]

Yeah, I was thinking the same also with the smaller versions of sprites. If this is anything like what I want it to be like, there's going to be hundreds of objects and I'm not sure if people's computers could handle it. But I am very new to construct and I have no idea how to use canvas to "take a screen shot" of the katamari when it goes through the zoom process so that we're not rolling the actual ball anymore.

I'm very new to Construct but I'm well-versed in MMF2 and I've been using it for years. I very recently switched to construct because it seemed much more powerful.

The pink ball is a great idea, but I'm not well versed enough in Construct to even start thinking about how to code something like that... I'm sure someone could do it though. I need a team of people for this game, I'm thinking.

[quote="SoldjahBoy":27pv2kv1]Hmmm this might be doable with straght physics objects... using two hinges per object instead of one would effectively "weld" it to the new object... in theory.

I might have a tinker later with some ideas and see if I can figure something out. I love the Katamari games (no pun intended), so it would be fitting to have a Katamari clone made with Construct.

~Sol[/quote:27pv2kv1]

That was my initial thought, although I couldn't find a way to get the objects stuck to the katmari stick to each other. See, an object that is stuck to the katamari needs to pick up other objects that it touches. But the objects can't stick unless one of them is stuck to the katamari, otherwise you'd have objects stuck together everywhere. So we need something like this...

If the katamari touches an object...
If object is smaller than katamari...
Stick the object to katamari
Turn on variable "stuck" to object

If variable "stuck" is on...
On collision with new object...
If new object is smaller than katamari...
Stick new object to object
Turn on variable "stuck" to new object

I'm actually working on a lot of art and sound for this game and it's going to have an interesting paper cutout style, or perhaps a retro one. But if anyone is interested in joining the team with me and helping with coding, I'd love it.

Another important feature is that every object is assigned a size, and that the katamari automatically picks up anything smaller than it. This way you don't have events for EVERY OBJECT that the katamari picks up. Something like this.

(Object is 5cm, size is a variable. Katamari is 55 cm.)
If Katamari size is > than object size, pick up object.
On collision with object smaller than katamari...
Stick object to katamari
Add object size variable to katamari size variable.

So the katamari should now be 60cm.

However there is a problem with this too (other than the fact that I don't know how to code it.) The katamari needs to only pick up objects that are at least 40% or maybe 50% smaller than it. You don't want a 200cm katamari picking up a 199cm object.
B
2
G
3
Posts: 17
Reputation: 884

Post » Mon Apr 27, 2009 5:19 pm

[quote="xiao":38sm9kw8]
The pink ball is a great idea, but I'm not well versed enough in Construct to even start thinking about how to code something like that... I'm sure someone could do it though. I need a team of people for this game, I'm thinking.


That was my initial thought, although I couldn't find a way to get the objects stuck to the katmari stick to each other. See, an object that is stuck to the katamari needs to pick up other objects that it touches. But the objects can't stick unless one of them is stuck to the katamari, otherwise you'd have objects stuck together everywhere. So we need something like this...

If the katamari touches an object...
If object is smaller than katamari...
Stick the object to katamari
Turn on variable "stuck" to object

If variable "stuck" is on...
On collision with new object...
If new object is smaller than katamari...
Stick new object to object
Turn on variable "stuck" to new object

I'm actually working on a lot of art and sound for this game and it's going to have an interesting paper cutout style, or perhaps a retro one. But if anyone is interested in joining the team with me and helping with coding, I'd love it.

Another important feature is that every object is assigned a size, and that the katamari automatically picks up anything smaller than it. This way you don't have events for EVERY OBJECT that the katamari picks up. Something like this.

(Object is 5cm, size is a variable. Katamari is 55 cm.)
If Katamari size is > than object size, pick up object.
On collision with object smaller than katamari...
Stick object to katamari
Add object size variable to katamari size variable.

So the katamari should now be 60cm.

However there is a problem with this too (other than the fact that I don't know how to code it.) The katamari needs to only pick up objects that are at least 40% or maybe 50% smaller than it. You don't want a 200cm katamari picking up a 199cm object.[/quote:38sm9kw8]
im in a bit of a rush, so im probably answering in the wrong order, but the last thing you said, to code stuff, just learn to say the problem in construct:make a family-pickupables
on collision with pickupable, if pickupable.size, is less than katamari.size/2...then do whatever.

soldjah boy is right, i had done that by mistake, and didnt think of the usefulness at the time..double hinging will stick the object.

theres a solution to the other thing too, but breaks over
gotta get back to work
Spriter Dev
B
88
S
21
G
12
Posts: 3,240
Reputation: 16,486

Post » Mon Apr 27, 2009 6:46 pm

Okay, got the family thing down. Although will this method work?

Say the katamari is 5 cm. you pick up a 2cm object and now your katamari is 7cm.

Will construct still think the katamari is 5cm, because the katamari and the object are only hinged together, but not considered the same object? In MMF2, I'd fix this with flags.

Also, what do you mean double hinging? I know how to hinge, but the object doesn't roll with the katamari once hinged, it just makes it drag awkwardly.

Right now, it's like this:



All I changed was the grouping thing, no hinging or anything fancy. It only picks up things at least half as small as it is, which is good. But it's still far from what we're trying to achieve - the ball needs to roll on what it's picked up, not just pasting images of what it's picked up to the outside of the ball.
B
2
G
3
Posts: 17
Reputation: 884

Post » Mon Apr 27, 2009 7:47 pm

ok, did the double hinging thing (thanks soldjah boy)
there are much fewer events and objects now
[url:2u37aa4z]http://dl.getdropbox.com/u/1013446/katama2.cap[/url:2u37aa4z]

there's a problem now
it should be easy to say, if you're stuck, and you collide with them, they get stuck to you
however, if they're both the same family, it won't be easy to make events
that say hinge one to two, and two to one, because they'll both be picked and they'll both be the same family

there's a hacky way out of it, which is to do kindof what we were doing before, which was to replace the physics one, with a nonphysics one
this time, it would be to replace the physics one, with anotherphysics one
but from a different pickedup family
that way we can instruct construct about them separately

maybe soldjah or someone can come up with a better way than that. I suspect there might be, but it would definitely work, and I'll try to whip it up before my kids get home

[quote:2u37aa4z]Will construct still think the katamari is 5cm, because the katamari and the object are only hinged together, but not considered the same object? In MMF2, I'd fix this with flags.[/quote:2u37aa4z]

you can use private variables in the katamari to update it's size, by adding together the size of everything that's on it.

but seriously, I know it's getting annoying by now, but read some of the tutorials and the wiki, you should really have known about private variables at least before you started this project. I'm not discouraging you from doing it, or even doing it now. I'm just saying at least one wiki page or tutorial a day. they don't take long, and you'll feel more comfortable. I don't mind helping, and I'm sure neither does anyone else. but at this point you're not going to learn as much as you would if you had some more of the basics down. and you're having other people develop your game, when it starts turning into a real game with your own graphics, and your own custom features, it's going to get bigger and bigger, and you're not going to want to give up just because you don't understand all the code so far, or because you can't recruit coders. construct is really easy, but different from other languages and dev packages. just make it a point to learn at least one thing a day, and then when you have a question of how to do something, you'll at least know where to look in the wiki for the basic stuff. know what I mean? :wink:

so...your first assignment is: http://apps.sourceforge.net/mediawiki/c ... _Variables
Spriter Dev
B
88
S
21
G
12
Posts: 3,240
Reputation: 16,486

Post » Mon Apr 27, 2009 9:42 pm

Okay, checked out the example (and I've been reading the wikis.)

This is closer to katamari goodness, however the ball has now become a nightmare to control and sometimes has a habit of just shooting off into the distance at top speed.

Also, the grouping thing will also be a problem.

I think I can think of a way to solve a few things.

Referencing the original katamari video I posted, the ball seems to move as an invisible circle like you mentioned, not literally moving using every object as an actual attatchment. See how lots of the objects on the ball lay behind the floor background? So it seems that your first example would work better.

Perhaps there is a way to simply "paste" on anything you pick up to the ball, and have an invisible ball that follows your visible ball. This invisible ball, if say, is 5cm, picking up a 2cm object, no matter its shape, will become 7cm, but the original ball does not grow. So you have a "pickup area" ball and the physical ball that the player sees. I think this would also take care of your grouping problem, as no object would have to stick to itself - everything is sticking to the ball, creating the illusion that the things that stick to the ball are sticking to the other things on the ball, but really they're just sticking to the ball. And you wouldn't have to deal with a lumpy, erratic moving ball (which would be cool because it's like that in katamari, but not so cool in this version because construct's physics aren't entirely stable.)

Perhaps if there was some way to make the inivisible ball stretchy, or liquidy, odd objects would cause a satisfying limp for the ball - but this is probably more effort than it's worth

So theoretically, nothing has to have physics except the ball. Everything else can be moving on its own path or whatever. Watching the 2d katamari video, I don't think anything but the katamari has physics (although I may be wrong, I wasn't looking out for it when I watched it.)

Does that make any sense?
B
2
G
3
Posts: 17
Reputation: 884

Next

Return to Help & Support using Construct Classic

Who is online

Users browsing this forum: No registered users and 2 guests