News:

The forum has been updated to SMF (2.1.3)!
Please be patient as we work to polish up the place and update features as we can.

Main Menu

Game Maker - Sasaki's Adventure

Started by Charon, 03, April, 2011, 03:00:53 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Charon

So I started to mess around with Game Maker today... I made a very basic demo. If anyone wants to help I'll post the uncompiled files.

The basic idea I have here is just a regular platformer in most respects. You can't hop on enemies but you can collect needles and throw them at enemies. There will be different kind of needles that can throw in different ways, like one that can hone in on enemies or ones that explode once hitting an enemy. You can switch needles if you need to, and it will have a counter for each. In addition, by collecting 5 sheets of fabric in each level you can obtain a different "costume", depending on the key pressed, which can help you reach inaccessible areas. I'm not sure if I want to be necessary to complete the level. The current planned costumes are Suit (lets you go past certain enemies without notice), Snow Gear (makes it possible for her to pass through supercold areas), Water Gear (lets her swim), Yukata (lets her glide). More will be planned. There will probably be 3 hit points...

Also, there will be different monster types of course. Some monsters that can only hurt you from the bottom, some monsters that can only be killed with a certain needle... ect.

I'll make an ingame tutorial probably too.

A few other ideas being thrown around:
- Using car hoods as a spring-device
- Having a bicycle to cruise through certain areas of levels, but when finished, launched off bike, and without jumping at least once you take damage.
- Having additional stages where you play as other characters, or having one of the characters follow you
- Cold Stages - Run between areas of warmth with a "cold meter", if filled, causes 1 hit point of damage.

CURRENT IDEAS:

Needle types:

-Neutral. Just shoots forward. Obtain 2 in a stack.
-Double Side Needle. Shoots both directions. Obtain 2 in a stack.
-Angle Needle. Shoots 5 needles at 45, 22, 0, -22, and 45 degree angles. 5 in a stack.
-Flame Needle. Shoots one needle, explodes on enemy. Hurts Yoshi she's hit by the blast. 1 in a stack.
-Paralyze Needle. Shoots one needle. Stuns enemy for 5 seconds. 1 in a stack.
-Firm Needle. Kills enemies, and passes through them until hits wall. Can be used as a platform. 1 in a stack.
-Homing Needle. Pursues a foe until it is hit. 1 in a stack.
-Sewing Needle. Needed for creating outfits. One per level, lost when outfit is created.

Outfit types:
-Normal. Yoshi in her yellow t-shirt and blue jeans. No effect.
-Suit. Yoshi can get past enemies in dark areas.
-Cold Outfit. Yoshi can go in cold areas without getting hurt.
-Swim Outfit. Yoshi can swim in water without getting hurt. She cannot attack underwater.
-Yukata. Yoshi can use sleeve flaps to glide, thus reducing gravity.
-Float Outfit. Yoshi floats upward, and using the up arrow (jump button) pushes her down. No limit to pushing down, unlike jumps.
-Dinosaur Outfit. Scares enemies away.

Locations:
- Yellow City. A city on the coast, with a lot of mountains ect. Named after the bright sunlight. Yellow City -> Fast Trains! -> Snap Capitol
- Blue City. A city on a river. This city has quite a bit of baddies running around, but the troubles of the city are really its failing infrastructure. Deep Keep -> Icy Forest -> Frozen Wasteland
- Green City. A city with lots of grass and wildlife.
- Red City. A city with lots of old buildings and people. Watch out for the crazy drivers and strange people!
- Orange City. A warm city on the tropics, kinda like Yellow City. It's got lots of fun things for kids. Also known for its space ships. Kiddie Park -> To the Sky -> Borderline Space
- Darkness. Where the aliens live.

Atrius (He/Him)

Quote from: Charon the Ferryman on 03, April, 2011, 03:00:53 PM
If anyone wants to help I'll post the uncompiled files.

*starts waving his hand wildly*  Oooh, oooh, pick me, pick me!

Not too bad for a first attempt at GM.  It's weird though, sometimes I can triple jump, but sometimes I can only double jump.  And the collisions, bleh, those are always tricky for beginners though.
[sprite=220,4,0]I'm shaking my head in general disapproval of everything[/sprite]

Charon

Hahaha, yeah, the collisions suck xD

lol I honestly don't know how to deal with that weird jumping mechanic... @-@ Basically I set it up like a counter and every time you press the jump button it goes up, and once it reaches 3 you can't jump anymore. So that's why probably because for some reason it doesn't count a jump, probably because of that wonky hit detection...

Also, I posted the .gmk, so if that'll help :)

Atrius (He/Him)

Mmm... First of all, name your resources!  Once your game starts getting big it'll be too confusing having just object#, and sprite# to go by.  Folder/Groups are also your friend for keeping things organized.

One of the big problems people have with collisions is understanding, and using collision masks properly.  By default all sprites have a precise collision map that's pixel-perfect using the transparency of the sprite.  This is a BAD thing, you do not want that.  The problem with that is that your sprites are pretty much always going to be animated, and every time the image changes so does your collision mask.  Any little movement the character does could potentially stick an arm/leg into a wall sticking their collision mask into that wall too.  What you want is for all of your sprites to have the exact same collision mask (Okay, you can have different ones for crouching, and other positions where they're supposed to be able to dodge hits or access smaller areas, but you have to do extra collision checking when switching positions like that to make sure they're not standing up and sticking their head into a low ceiling or something like that.)

An easy way to fix this is to go to your character's sprites, click modify mask, and set the bounding box to manual.  Make sure you use the same settings for every sprite.  If you want to get more advanced, there is a way to use a separate sprite as your collision mask in your object's settings.  I usually use a rectangle with beveled corners at the bottom because combined with good collision handling code it can produce a nice effect when you slide off the edge of a platform.


As for collision detection code itself...  Hmm...  It get's pretty advanced.  I have never been able to produce satisfying collisions through Drag & Drop code, or the basic events GM provides.  I always find myself coding it all in GML so that I don't have to fight with the order the events are executed in order to produce something that feels, and works 100% the way I want it to.  I've tried before to do it with GM's events, but my code ended up way larger than it should have been because it was filled with little tricks to work around oddities produced by the order GM's events were executed in.  You can produce decent collisions with them, but if you really want to fine tune them, and make them feel tight and professionally done there's really no other way than handling it all manually through GML.
[sprite=220,4,0]I'm shaking my head in general disapproval of everything[/sprite]

Charon

#4
Thanks, I'm going to experiment with those now. Although that last part... sounds not fun @-@

EDIT: It seems like we get stuck when I jump but don't go left or right... hm

Atrius (He/Him)

#5
Oh, but it is fun.

For example, I've attached a platformer engine I did where the collision detection for the movement (on the ground, it has separate code for in the air) is handled by about 30 lines of GML code.  I can't provide the source for this, because a lot of the resources are were created by someone else who wouldn't want me distributing them.  It was supposed to be for a game he came up with, but he decided to cancel the project pretty early on.

One thing I did for this that I highly recommend is using a variable that keeps track of the player's current action (Standing, Walking, Jumping, Falling, Attacking, Rolling, e.t.c.)  Whether or not the player can perform a certain action is pretty much always going to be dependent on their current action, so it's great to have somewhere you can find that out without checking all sorts of other things to calculate it.  A good rule is that if it has it's own sprite animation it should have it's own action ID, you should be able to set the player's current animation based on this variable alone.  In fact, this is all the code that handles the player's sprites in the attached tech demo:

if action!=actionp
{
    sprite_index=anim[action,0]
    image_index=0
    image_speed=anim[action,1]
    actionp=action
}


Where anim[x,y] is an array containing sprite IDs for each action, and the speed that animation should be played at.



Z button attacks in the attached demo.

EDIT:

Here, I've attached a modified version of your game.  I changed the sprite masks, and some code in the player's step & collision event.  There are still some issues from the left/right movement though.
[sprite=220,4,0]I'm shaking my head in general disapproval of everything[/sprite]

Rolina

So... this has been bugging me for a while now... Why "Yoshi"?  It makes me think of a certain green dinosaur with his own game of similar name...

Daddy Poi's Oily Gorillas

#7
Oh wow, sweet. I first learned how to use Game Maker on Youtube. I forget, but I think the user was nintendopower123 or something... And later on.. I use to visit Kinsures (This was like years ago.) (that same user on youtube was tophunter7 on Kinsures) Kinsures isn't very active anymore, though.. (Well, I think? I haven't been there recently.. soo...)

Anyway, what do you think about having coins and a bank? (You could have it so you lose all your money if you die.. but what is in the bank is safe... think of it like robbery.) And you could have a shop for buying needles.
Also, how about a Pause Menu? You should atleast Display the number of your needles...
(Later on, you can add Debug Features like Warping to any room.)
You could even do cutscenes/dialogue.



Also, if you are going to DRAW the number of lives.. It should be done in the DRAW event, I think. If you do this from the player, you will need to draw the sprite as well.


Hmm, everything seems so... I guess I prefer using the Execute Code option a bit more, I guess.
Golden Sun Docs: Broken Seal - The Lost Age - Dark Dawn | Mario Sports Docs: Mario Golf & Mario Tennis | Misc. Docs
Refer to Yoshi's Lighthouse for any M&L hacking needs...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

Charon

#8
Quote from: Role on 14, May, 2011, 04:47:36 PM
So... this has been bugging me for a while now... Why "Yoshi"?  It makes me think of a certain green dinosaur with his own game of similar name...
Because it's also the name of a seamstress that the character was inspired by. Which explains her sewing powers and her needles. Interestingly enough she alternates between spelling her name as Yoshi or Yoshie, I pick the former mainly because people will be like "why the hell are you romanizing that "e" at the end". She's one of those people that you've got enough ground basics (such as her perky personality, her failure at computers and her sewing prowess) but enough that isn't really known to build your own character without making a totally replica of her. If you still don't believe me on this I really don't mind posting pics (she looks nothing like her bird form obviously though xD). An expy (and more accurate) portrayal of the character also appears in Simurgh, albeit much later than I've written.

Anyways I haven't worked on this at all lately... funny how it was revived. I might as well post this though, its more music from the game, for "The Yellow City".

Rolina

Ah, I see.  Thanks for clearing that up.  Still, though, be mindful of the One Mario Limit rule.  You may want to change it to another historical/mythological figure known for sewing, to prevent similar confusion.  I thought it was some tribute to Sala when I first saw the title.

Charon

#10
I could probably run away with calling her Naomi, which is the name of the referenced person's daughter, but that miiight be stretching it, especially that she too was going to be a character. But probably not a goddess just because she's kind of a badass normal in a way lol

It's a weird personal thing, I can't really describe it :P

Rolina

Well, if you do go ahead with Yoshi, just remember all the people who are going to try and 'ride' her.  A lot of unfortunately dirty jokes because of the name...

Charon

#12
I could go with her full name, Yoshi Sasaki. But I think that'd be a bit long. Or maybe spelling it with an extra "e" at the end.

Yes... such unfortunate implications... ;-; believe me, I would know! xP Just imagine the thoughts I had when I heard that Yoshi is ridden on and eats people and poops them out as eggs at school, and imagine the weird stares I got when I told them that Yoshi sews clothes and sends us pears @-@ at home we call Nintendo's Yoshi "yoshisaurus" just to avoid unfortunate implications if my mom's in the room.

Still, calling her anything else would just sound wrong...

Rolina

If she's Japanese, go with her family name.  They refer to each other by their family name all the time in japan, so Sasaki-san might be a better reference... so instead of Yoshi's Adventure, it'd be Sasaki's Adventure.

Charon

#14
She likes us to call her Yoshi XD Serious! XD I didn't even know her last name until maybe a few months ago lol

But you've got a good point. That's actually a better name for the title. It'll have less unfortunate implications too, and not everyone should be calling her Yoshi because they're not like best friends with their families too xD