[cart]89504e470d0a1a0a0000000d49484452000000a0000000cd08060000003fa57ba9000008b6494441547801ed9da18f63d7f986dff7fb9c6a54b420207f4060aa6eaa85050101050b1604a4ea48b52a4b1d10585855010105810316b892ab8eaa828080828205fb076cabd14f3f1850501050b020aa02ecf3b5a36bcf7a673d335e8f3df68c9fc7b27ccff53de79efb9ee77e877a3038d28ce168349e1da732269ab4f33ff78894348994da449214e1687253bba771389535f1442a4b1161354955d55c0a4748925a5b4f00837ebf777eeb9980c3d1683ce81f6e6bc13d71966a2287435592a4b2cbadbcee007650f8f3e757d8965c52fd6fad741f9f7f383a3997d083c191867ffcd3f8d7bffcb92752cd0760c96aa5fb2ec06b5c78fe6ad5ee7d059c2f8652c8ddcb2fa9d4ba62b02909addec1d62a1fec37c3d189bad206b0ad0d8708000157e4e9f05b561001b724dfa3a1f472a8a7479fb28a0878cbf27dfe5cfa745afddeff404f1f7ccc4a22e0ed71f4f947eabdfc9924e9f79f3fd7d1cb67ace4be0af8f4cb2f5efb5e76eee2f9abfa2f738fc1178ff4c1b377f5cfefeea67c8f3ffee8ad7ee7fbcdbe8bdaf3e72e6b5f35dea2ff16b5afea776b02ce6438facd6f5faf5073edd9f1fcb58bce5d5bf5e6facdf8e9df8ef6b26afcf5d9f3378e67bf8f3ffe487f7df6fc8df6b2e3cdcbf6b6e3ac426f1d835c56b9d621f67c5585d7abe74dfbcecbb5ea8b70d30ab8160197a960371def62d5bc8f225dd7beaa62ad523dd729d256b6e0652ae245619e7ef9c5c273d789bca81f55efd5f9d9ef4ca6f9ebafdb3e2f5ebbea38ab60f50ec683fe21fb1adc3ac3d1c9662a20c056b7600004040404404040400004849da47793cec3d109098206fdc3ed08a8330bc7dfb3027b5dc20ed882e1ee82808080808000080808088080808000080808088080808000080808088080808000080808088080808000080808088080808000080808088080808000080808088080808000080808080808808080800008080808808080800008080808808080800008080808808080800008080808808080800008b802b61496d2b24cfb76db4120b0d5d75fbd83f1a07fb852e7e1e8441a7f7f2f62900a1b5649a377a09bf87327b6e0cd97a9bb25dfa6f3b8cd34d622e07d0a843c6e378fb5088820e4b16a1e3bb90523c8fee4b1928008421eebca63250111843cd695c74e6cc108b2bf79f4960d649393be8b82cce63c7ef9edf5213f786f6ff2785b96aa805490abf3e83d78affb1e1fa9f7dde357edb7146f1f2bea56b6e0fbb6c58c47dd57fd7f69fcec85c623e92f4f1eb1e5ae2ae03e07b26a1e5f7dfd48e3672ff4d5d79d789f3c79b1b484fbbcc32c14902df7edf2f8eaeb47fae4c98b73f16612b2e5eec816bcaf15752625795c23208120c8b6f20802b9b920976dbbbd3e2fcc75f43615c82627bd732fcc936ff5c9937921bbdff1cb3dcde32dfc0802b95905e93d78efda2f3bcce57e6c4440b618f25896b5088820e4b16a1e6b111041c863d53c76720b4690fdc963250111843cd695c74a02220879ac2b8f9dd88211647ff3584a4004218f4de5b1948008421e9bca632b5bf07c2019a1503a6336959495e7f372488e9432a5b41cddb49ddd7f4a2b6c59963324599192d256a61c29db7274ff4996150a4dcf652aa4e93539bd2e9473fd6c2b24458422f2d51384951992ed5476f795a7b14ec749c9caf376584aa514969cca70f768198e6eca8a0c6576f3c9b432d38eae3d9db99cd96570fe998e6b4de71411ea9e61b6d03ebf772a332567d8d3316c5929bbbb36b3cb49b2d3d3df94439ede779afd34d1e9bd1d0e4744373f75eb65cd724b67c4f474976b3a7ef0bb473ff9b12aaca8922214b64aa588941daab24225cd261b2195f48fd3ff9334e95e81b0243ba27b7447751977b1779fecce35c9e970498ab05ccdad244728a3a94256758f5e15524d9c8aacd664a5a5a608ab9a9cca6cd594ee7e9d11adb954e5b4b35593221c552a9733239b9a22239b4a5115cd2e9dad6955b62ad9e1a68933a6d74851b6ec72959d922bc2678b5e65abca529522d45d1c92eaec8f6c91ca2a2bca59e1ca50c54476e84cc956a590d55ab9bafcd45ad85552d94dead268527559750b7dfed2941da1b2edeade8a2ed8ea5ecce8a28cb45a0b2bca727394545639c28a5255379a55b266f72a87a3ba48a2d43a3f9bb354a1a8b2e29df8f0c31f552994592a47c8a598282ba568112da62523549d7b518a167f3ffd7f39def9e1f857fd5f746f71295a543b5bfa6a2a95e43371ab55b54eb270596557abfac3e8cfa5fa8f55670a855c13c929abb94dcae9688a929a5d9d30153151c9d6c49254567353d8d1aad94ab9d4ca8aaa8932349994958aacaa497393a6168753aa8926776c43bc67f40e34e81faed475383a91d53b18df64008dbf67111070657f8204619b2020202020200002020202202020200002020202202020200002020202ac951e11ec06e391a4c7ef778bf2ee375440d88e7c9234fef7ab63040440404040800dd023821d5884be341e7d233d7ebf6bbffb0d02c2ed4b28ed8f786cc1808000080808080808808080800008080808808080800008080808808080800008080808808080800008087797decd47382045d88e8083fe2109025b30202000020202022020202000020202022020ec2ebd9b743e3d3d2541d0c3870fa980c0160c8080808000080808088080808000080808088080808000080808088080808080800008080808808080800008080808b0597aeb1ae8b3cf3e3b3f3e3e3e7ea33d7fcd65edabc6bbea9e8beeb7aef6fcbdafba1fec40059c5f88d9f1bc6cc7c7c76fb4971d6f917cf3e32dbafeaaf92cfbff4cb4cbee877c3b24e07c5558a5efecbbea7817afbf4ef2655e824d3d2f6ca802aebaa0b3be5755b4b7a9c08bb6ca45d7df4472aadf8e09b868a166bfb3c5be58e1aeab50d7c9b3ae2a7471be9755d445551b56c7ea1d8c07fdc3953a9f9e9e9220e8e1c3872bf51b8e4e36570101b6ba05032c436f1ba51760383ad1a0dfef5101616bf2b105c356e54340d8aa7c08085b950f0161abf221206c553e498a41bfdf1b8e4e480a6e5dbef30a8884b00df924e9fc824ec2d198e8f60b4baae9915d0aa52735e94edd8065e43be3bf793c60969abdfde800000010744558744c6f6465504e47003230313130323231e359b6c10000000049454e44ae426082
Hi,
Coroutines are an essential part of my game engines.
However, I don't get how I can do both:
- raise an error when something bad happens
- silently handle proper coroutine termination
coresume returns a pair (is running,exception).
Thing is exception is set even during normal termination!!
note: costatus doesn't help as it immediately flips to "dead" when the coroutine crashes.
Something like that doesn't work, e.g. I get an assert even after genuine termination:
local co function _init() co=cocreate(function() for i=1,10 do yield() end -- syntax error test -- i=k/10 end) end function _update() if co then local r,e=coresume(co) print(costatus(co)) if not r then if(e) assert(r,e) -- never reached co=nil end end end |


Hey this is the platformer engine that i created
i will be happy if i can help
more happy if you can help
Only thing wrong about the code is i got verticalspeed and horizantalspeed variables mixed up
so 'vsp' vertical speed is left and right 'hsp' horizantal speed is up and down
download the code here from
githubIt's been a while since I've made a game so I'm running into questions I probably had answers previously...my apologies if this is a rerun.
I typically use a table for each type of object - enemies, bullets, powerups, etc. - and then loop over each table checking to see if the collide or whatever. Something like...
for bk,b in pairs(bullets) do for ek,e in pairs(enemies) do if collide(e,b) then ...do something... end end end |
And then there could be several of these depending on which objects interact with each other.
But I've also seen where you use one table for all objects and then check object types to see if they should interact.
for bk,b in pairs(bigtable) do for ek,e in pairs(bigtable) do if e.type==1 and b.type==2 then ...do something... end if e.type==3 and b.type==4 then ...do something... end end end |

Controls
Menu: Z to start game.
Game: Left/right arrows to move fan. Z to blow puffs of air, X to add more seeds (falling from above).
Mechanics
Dandelion seeds are falling and you can decide how you want them to land! Blow them directly up by sending puffs of air from right below them, or move them left and right by blowing air past one side! When they land they will turn into lovely dandelions. You start with 5 seeds and you can add more any time by pressing X.
Commentary
I've worked on no fewer than 4 projects this month, I think. But I'm really happy I got this one done in the end - it was a bit last minute as many months go, but it feels so pure and nice to play with the dandelion seeds and get your little garden just so. I also decided quite late on that it would be a #nogameovers game. At first it was going to be that the first dandelion seed landing would freeze the game, play the growth animation and then take you to a game over screen, but this version is way more fun. And anyway, what would be the point of a game over?
itch.io page: here.
This is a small game (more like a demo) that I made. I'm still learning how to use PICO-8, but I've done some good progress already.
I decided to go for isometric style, because these sort of pseudo-3D games fascinate me. Sure, there's lots of room for improvement, but I think it looks pretty cool! The movement is currently grid-based, but that may change in the future.
I would be glad to hear comments and suggestions for improvements! Just keep in mind that I'm still getting used to the PICO-8 and don't know how to do some advanced stuff. Anyway, have fun!
UPDATE [10.6.2018]
I've updated the game. Hooray!
Now the game has way more depth thanks to the inclusion of different sorts of terrain (like brick walls) and also ladders. You can climb ladders with X. I also added buttons that can have lots of different uses. Currently they're used to disable roadblocks, but it's just a start. I also changed how signs work. Now you have to stand in front of them and press X to interact with them. The signs also have a collision so that you can't just walk through them!
I'd appreciate any sort of feedback! Thank you in advance!





Hi
I'm a newbie to PICO-8. I'm not a coder at all but I dabble in chiptune. I purchased PICO-8 last night and I've been having a blast making tunes and teaching myself how to use the music editor!
I have one question though and I was wondering if anyone knows the answer. Is it possible to delay or offset the playing of an sfx in the music editor?
I'll try and explain why I'm asking and hopefully I can articulate it in a way that makes sense! 😅
the reason I ask is if, for example, I'm making a song where most of the sfx are speed 16, the only way to increase the resolution of notes is to double the speed of an sfx, to say, 8. But if I want a drum fill to play at the end of a bar there's no way I can delay the playing of that sfx so that it plays at the end.
If I'm playing a speed 8 sfx concurrently with a speed 16 sfx, they both start at the same time. I can loop the speed 8 sfx but then I'll get my drum fill twice.
I hope that makes sense. If anyone knows the answer to this I'd be really grateful. The ability to play sfx at different speeds seems to me a like a very powerful tool for music making and a lot of potential for some fun polyrhythmic stuff, but would be a lot more powerful if you could control WHEN each sfx begins playing.
Thanks,
GB ^_^


I really need some help with making 2 songs for (PicoPico Rocket) I have the songs in mp3 form, but I have no clue how to get them translated for PICO-8. Any help would be appreciated. I can send you the songs if you're interested.



Made for Magazine Jam https://www.lexaloffle.com/bbs/?tid=28950
Controls: x to start, left and right to move
Feel free to reuse the code
Cart is under 65 lines (with a few comments and empty lines added), 333 tokens and 1200 chars










So i have a make actor function which creates a circle random in the screen and adds it to actors table i have the keyboad mouse enabled, so lets say i generated 2 circles on screen what i wanna do is when clicked first it should draw a line between mouse and the circle object(i have sucsesfully implemented this) what i wanna do now click the second object and stop drawing line between circle1 and mouse and draw a line between circle 1 and circle 2 (kinda like circ1.connected =circ2 and circ2.connected=circ1) but they are generated through out the game so i cant put their names in like that
