Hi! I used this for as the theme for the green grassland levels in my game The Adventures of Yulpers! which I made for the OpenGameArt Summer 2018 Game Jam.
@VimmNo.0: The submission page for the art asset you used.
For example, I used Snabisch's song 'What a nice surprise' as the title music Yulpers, so you can see the comment I added to it's submission page here:
You don't have to prattle on as much a I did, just a quick 'I used this! Check it out: (insert link)' is fine.
And again, it's not at all required, just a nice to do, I know I personally love checking out the things people have done with the works I've sumbitted to OGA.
@Spring: I think I got what you are saying. Basically the tiles are treated as solid blocks. That's the same way I do it for Yulpers and most of my other projects. That should work just fine. The only reason you'd need to do anything more would be if you had sloped tiles or tiles with holes in them or something like that.
I'll say implementing #2 and #3 was the thing that flipped my own tile based collision tester from 'sometimes it breaks' to 'rock solid'. Can't say which was more important. If I had to guess I'd say it was #2 that really mattered. I think maybe #3 just made the code simplier to write and understand and so cleared out whatever bugs I had with my previous approach. BTW my earlier approach was basically a ray cast between the start and end points.
@spring: Well, it's all custom home grown code for me, so I don't know how applicable this would be to anyone else, but bits of advice I was going to impart were:
1) it helps to structure your code as test and then move. Perhaps that's obvious, but I used to do it the other way around, move an object and then see if it hit anything and that's definitely a recipe for trouble! The particular form I use for this is a method that takes a desired movement as input and returns what the resultant movement would be. If the path is clear, you get back what you put in. If not, you get back the portion of the distance you could move before a collision would occur.
2) Test the whole object for collisions, not just the center. Again, maybe that's obvious, but it wasn't always so obvious to me! Also, depending on your collision system, it may already handle this for you. You can start just testing all four corners of a box around the object and get more granular from there. I have had good luck testing the four corners plus four midpoints of a box around objects. For larger objects you may need to subdivide more.
3) I've found it simplifies things substantially to divide your movements into separate horizontal and vertical components and test them separately. So first test/do your horizontal movement and then test/do your vertical movement. By only testing along the cardinal axis, it makes testing for collisions pretty trivial, you just pop your starting point into tile map coordinates and step left,right, up or down to the end point checking if you hit an impassable tile along the way. Technically this means you are moving in a stair step or zig zag pattern but unless your character is moving more than a tile at a time it's a very useful approximation.
4) Divide your movements and test incrementally. Instead of trying to test a move all at once pick some maximum delta size and test that much movement at a time. For example, instead of doing one test of 100 pixels at once, do 100 tests of 1 pixel each, or 10 tests of 10 pixels each. (hint: half your tile size is a good starting poing for a max delta size). I know this should be completely redundant for any proper collision system (a good collision system would do this for you), but if you're having trouble it can help by minimizing the size of error that can occur (your maximimum delta). And trust me, unless your testing thousands of objects, a modern CPU can handle the extra work load of subdividing your movements a little.
5) Finally, don't test the starting point of your movements. This might seem odd, but it helps by allowing the player to move if they do get stuck in a wall, giving them some hope of escape.
@Saliv: Thanks! It was definitely close but I had about 3 hours to spare which IIRC is better than I did last year. Of course, working right up to the end is probably just my natures. Resisting the temptation to go back and make more changes in those last 3 hours was probably the hardest part of the whole thing! ;)
@all: I posted this in the main OGA Jam #2 thread but I figure it bears repeating here as well...
do consider commenting on the submission page for each asset you used in your game. Not required but it's always nice to let people know how you used there stuff, and it doubles as a nice way to promote the Jam. :)
oh and of course... Thanks again to ChasersGaming for organizing everything! You did a great job again this year!
Let me know if you want my help verififying assets for all the entries this year. I can just double check them myself as I play through them all and let you know what I find as I find it, or you can send me a list of specific entries to check.
Wednesday, August 1, 2018 - 07:34
Now that I've had some sleep and am back on terra firma, just want to send my own Congratulations! to every one who entered the Jam. Looks like we got a lot of good entries this year, can't wait to check them all out!
To everyone who entered, do consider commenting on the submission page for each asset you used in yuour game. Not required but it's always nice to let people know how you used there stuff, and it doubles as a nice way to promote the Jam. :)
Took some serious midnight oil but I just barely made it, even with a last minute patch to make the menus respond to all the face buttons instead of just B.
Anyway, I gave it my all this year. Don't know if Yulpers has got what it takes to compete with VinnNo.0's master work, but hopefully it'll at least make some folks smile.
ps
Sorry for the test post, wanted to make sure OGA would take a post from my phone as I've been having trouble with that lately. Well it took the test post but sure enough after I'd pecked out my full on mangum opus on the tile based collision it failed to take so that one will have to wait for another day. Right now I'm going to go get some sleep. :)
Hi! I used this for the theme for the volcano/boss levels in my game The Adventures of Yulpers! which I made for the OpenGameArt Summer 2018 Game Jam.
You can check out Yulpers at:
https://withthelove.itch.io/yulpers
And all the OpenGameArt.org Summer 2018 Game Jam entries at:
https://itch.io/jam/opengameart-game-jam-2/entries
I chose this tune because it had a driving beat and slightly ominous under tone to it.
Hi! I used this for the theme for the seaside levels in my game The Adventures of Yulpers! which I made for the OpenGameArt Summer 2018 Game Jam.
You can check out Yulpers at:
https://withthelove.itch.io/yulpers
And all the OpenGameArt.org Summer 2018 Game Jam entries at:
https://itch.io/jam/opengameart-game-jam-2/entries
Something about this one just felt right for a day spent relaxing and yulping stuff at the seaside. :)
Hi! I used this for as the theme for the green grassland levels in my game The Adventures of Yulpers! which I made for the OpenGameArt Summer 2018 Game Jam.
You can check out Yulpers at:
https://withthelove.itch.io/yulpers
And all the OpenGameArt.org Summer 2018 Game Jam entries at:
https://itch.io/jam/opengameart-game-jam-2/entries
Thanks again for sharing! You're stuff is the best! :)
Hi! I used this for as the theme for the forest levels in my game The Adventures of Yulpers! which I made for the OpenGameArt Summer 2018 Game Jam.
You can check out Yulpers at:
https://withthelove.itch.io/yulpers
And all the OpenGameArt.org Summer 2018 Game Jam entries at:
https://itch.io/jam/opengameart-game-jam-2/entries
Thanks again for sharing! You're stuff is the best! :)
@VimmNo.0: The submission page for the art asset you used.
For example, I used Snabisch's song 'What a nice surprise' as the title music Yulpers, so you can see the comment I added to it's submission page here:
https://opengameart.org/content/what-a-nice-surprise-nes-version#comment...
You don't have to prattle on as much a I did, just a quick 'I used this! Check it out: (insert link)' is fine.
And again, it's not at all required, just a nice to do, I know I personally love checking out the things people have done with the works I've sumbitted to OGA.
@Spring: I think I got what you are saying. Basically the tiles are treated as solid blocks. That's the same way I do it for Yulpers and most of my other projects. That should work just fine. The only reason you'd need to do anything more would be if you had sloped tiles or tiles with holes in them or something like that.
I'll say implementing #2 and #3 was the thing that flipped my own tile based collision tester from 'sometimes it breaks' to 'rock solid'. Can't say which was more important. If I had to guess I'd say it was #2 that really mattered. I think maybe #3 just made the code simplier to write and understand and so cleared out whatever bugs I had with my previous approach. BTW my earlier approach was basically a ray cast between the start and end points.
@spring: Well, it's all custom home grown code for me, so I don't know how applicable this would be to anyone else, but bits of advice I was going to impart were:
1) it helps to structure your code as test and then move. Perhaps that's obvious, but I used to do it the other way around, move an object and then see if it hit anything and that's definitely a recipe for trouble! The particular form I use for this is a method that takes a desired movement as input and returns what the resultant movement would be. If the path is clear, you get back what you put in. If not, you get back the portion of the distance you could move before a collision would occur.
2) Test the whole object for collisions, not just the center. Again, maybe that's obvious, but it wasn't always so obvious to me! Also, depending on your collision system, it may already handle this for you. You can start just testing all four corners of a box around the object and get more granular from there. I have had good luck testing the four corners plus four midpoints of a box around objects. For larger objects you may need to subdivide more.
3) I've found it simplifies things substantially to divide your movements into separate horizontal and vertical components and test them separately. So first test/do your horizontal movement and then test/do your vertical movement. By only testing along the cardinal axis, it makes testing for collisions pretty trivial, you just pop your starting point into tile map coordinates and step left,right, up or down to the end point checking if you hit an impassable tile along the way. Technically this means you are moving in a stair step or zig zag pattern but unless your character is moving more than a tile at a time it's a very useful approximation.
4) Divide your movements and test incrementally. Instead of trying to test a move all at once pick some maximum delta size and test that much movement at a time. For example, instead of doing one test of 100 pixels at once, do 100 tests of 1 pixel each, or 10 tests of 10 pixels each. (hint: half your tile size is a good starting poing for a max delta size). I know this should be completely redundant for any proper collision system (a good collision system would do this for you), but if you're having trouble it can help by minimizing the size of error that can occur (your maximimum delta). And trust me, unless your testing thousands of objects, a modern CPU can handle the extra work load of subdividing your movements a little.
5) Finally, don't test the starting point of your movements. This might seem odd, but it helps by allowing the player to move if they do get stuck in a wall, giving them some hope of escape.
@Saliv: Thanks! It was definitely close but I had about 3 hours to spare which IIRC is better than I did last year. Of course, working right up to the end is probably just my natures. Resisting the temptation to go back and make more changes in those last 3 hours was probably the hardest part of the whole thing! ;)
@all: I posted this in the main OGA Jam #2 thread but I figure it bears repeating here as well...
do consider commenting on the submission page for each asset you used in your game. Not required but it's always nice to let people know how you used there stuff, and it doubles as a nice way to promote the Jam. :)
oh and of course... Thanks again to ChasersGaming for organizing everything! You did a great job again this year!
Let me know if you want my help verififying assets for all the entries this year. I can just double check them myself as I play through them all and let you know what I find as I find it, or you can send me a list of specific entries to check.
Now that I've had some sleep and am back on terra firma, just want to send my own Congratulations! to every one who entered the Jam. Looks like we got a lot of good entries this year, can't wait to check them all out!
To everyone who entered, do consider commenting on the submission page for each asset you used in yuour game. Not required but it's always nice to let people know how you used there stuff, and it doubles as a nice way to promote the Jam. :)
Alright, Yulpers is a go!
Took some serious midnight oil but I just barely made it, even with a last minute patch to make the menus respond to all the face buttons instead of just B.
Anyway, I gave it my all this year. Don't know if Yulpers has got what it takes to compete with VinnNo.0's master work, but hopefully it'll at least make some folks smile.
ps
Sorry for the test post, wanted to make sure OGA would take a post from my phone as I've been having trouble with that lately. Well it took the test post but sure enough after I'd pecked out my full on mangum opus on the tile based collision it failed to take so that one will have to wait for another day. Right now I'm going to go get some sleep. :)
Pages