2d skateboard game
-
@waldron Thanks, the way I'm doing it still experimental and I'm not sure if its best practice but as everything is carried out sequentially, I try to take advantage of that.
Example:
// Call my intro/title function before the main game loop // Once this breaks, it then moves into the main game loop doIntro() // Main game loop loop .. Main game code goes here update() repeat // All my functions live at the bottom of the code function doIntro() loop clear() .. .. Do your fun title code here .. c = controls( 0 ) if c.a then break endif update() repeat return void
-
This post is deleted! -
Update, more tricks, more level drawn and forward motion roll thanks to tratax!
Lots more moves/tricks to come. -
I am impressed, reminds me of California Games. Also it was a BMX discipline there. It looks like this will be as fun as well.
-
This is looking AWESOME. Keep up the good work!
-
so im at the point where im updating this whole game with every thing iv learnt so far anything i learn after i will make a 2nd game in the series but for this one im wanting to add 2 other elements im not sure on how to implement..
1.entering end of level - to level 2, entering house/shop screen
kind of know how to do it but is there a better way?House()
Endlevel1()
Shop()
thinking of creating an item that il mask in the screen so... black door way with black item
collect = said item then house.2.slopes collision edge detection so player can move diagonally on a 2d game
-
You don't necessarily need to create an item to collect to go to the house. You cold simply add a door sprite and check if the player collided with the door. Then you know you'll need to load / display your house.
-
@waldron I just implemented board switching in my game last night! What I did was define each board in an array, with a sub-array containing all of the sprite definitions for that level. By "definitions", I mean the X and Y coordinates of each sprite, the type (such as "teleporter"), and (for teleporters) the destination board and X-Y coordinates, for when the player touches the teleporter.
I have a function called "switchMap()", which grabs the appropriate board element, loops through the definitions for that stage, and populates the level. It does this by creating and adding sprites to an "actors" array, mapping over the properties from the definition to the sprite (so the teleporter sprite will have properties like "targetX", "targetY", "targetBoard", etc.).
This all makes my "draw()" function trivial; it just loops through the "actors" array and draws each sprite according to the properties. Adding a new element to a board takes like ten seconds: just copy and paste an array entry in the board's "definitions" sub-array. Done!
In my main game loop where I'm checking for sprite collisions, if the 'currentSprite.type == "teleporter"', I call my "switchMap()" function, which unloads the current map, loads the "sprite.targetBoard" one, resets the player's X and Y coordinates to "sprite.targetX / sprite.targetY", and boom-- the player is now on the new map, in the correct spot.
I even have "switchMap()" switch the background music to the correct song, which I have in a property in my "boards" array. I have a working transition between a city "overworld" and a sewer "dungeon", and it was really gratifying the first time I could leap between the two at will.
Hope that helps at least somewhat!
-
@Spacemario wow thankyou so much for the detailed comment great help thanks
-
@waldron Sure thing! Let me know if you run into any questions.
Incidentally, I'll be working on my game tonight-- I found a bug yesterday, where I am accidentally doing an operation on an unloaded sprite in my "actors" array (crash!), but only after switching boards 3-4 times. I'm sure it's a simple bug in my logic, but it's odd that I need to switch boards multiple times for it to manifest. Weird!
-
@Spacemario cheers im reanimating my character atm but might start laying down framework for the level switches sure il be needing your help again haha thanks man
-
@waldron I fixed my weird bug a couple of hours ago! I had code something like this:
for i = 0 to len(actors) loop curSprite = actors[i].sprite removeSprite(curSprite) …. repeat
For some reason, that "curSprite" variable was referencing a sprite other than "actors[I].sprite", because the crash error was telling me, "you can't remove a sprite which has already been removed, you dolt!"
So, I replaced all references in my loop to "curSprite" with "actors[i].sprite", and the code worked.
Next step: the HUD.
-
@Spacemario glad you got it working man,
I'm trying to get y axis movement atm but character vibrating on the collision map lol -
This post is deleted! -
@Spacemario Want to be able to move up and down y axis but hitting collide map. Want it like the simpsons game style.
Ignore background still building the level. -
This post is deleted! -
just like this
-
@waldron I think I might know what the problem is! In my game, I was setting player speed to 0 when they collided with the map hit boxes. Then, when the player would overlap such a hit box, they'd be "stuck". So, I added some code to set their speed to like 10, and reverse their angle, so they'd "bounce" off the hit box-- and that gave me the desired effect.
At one point, I had the "rebound speed" too low, and they would "vibrate" on the collision box and be stuck-- does any of this apply to your game, maybe it's a similar issue?
Your game reminds me most of "Skate or Die 2"-- back in like first grade, my best friend and I used to play the heck out of it on his NES. Looking back now as an adult, it's a pretty evocative game-- very atmospheric, and the Rob Hubbard soundtrack is great!
-
@Spacemario instead of the bounce effect, I think you can use the player coords (player.x, player.y) and their last position. something like (oldPlayer.x, oldPlayer.y) and if the player collides with an axis, just set the location of the player to the old coordinates.
if collision on x axis then
player.x = oldplayer.x
endifand at the end of your instructions for drawing the sprite have:
oldplayer.x = player.x
oldplayer.y = player.ySomething along those lines i think...
-
@Spacemario that could actually work for me if i applied up and down with their own properties /gravity
il have a mess