In Great Bee, you play a bee that have to forage all the flowers in every level. The frog and the sun are your enemies. Colliding with them kills you. The sun is moving slowly, but the frog is accelerating over time. The sun can also be helpful because when it touches a flower, it will turn it into a strawberry. When you eat a strawberry, you become a super bee for a few seconds and you can slap the frog to reset its speed.
If you are interested in following my work, here are a few links:

Hi there,
I'm looking to make a procedurally generated level using chunks of the map (16x16 cells per chunk).
I've basically added a random number from 1-3 (the amount of chunks i currently have made) into a table, which I'm then calling later with a for loop and the map function.
Something's not going right, the chunks are completely out of whack :(
There's some initial code in the _init at the top for the table, but the problem (I think), lies in the _draw code at the bottom (clearly labelled as problematic).
Any clues?
Cheers
Tim

This is a short snippet showing how the water reflection effect is implemented in Pilot8.
Here is the code:
local g_rnd=nil
local g_clk=0
function _init()
init_rnd()
end
function init_rnd()
g_rnd={}
for i=1,64 do
add(g_rnd,flr(rnd(32)))
end
end
function _update()
g_clk+=1
end
function render_water(water_y)
local addr_w=0x6000+64*water_y
local addr_r=addr_w
local rip_c=0x11
memset(addr_w,rip_c,64)
for y=water_y+1,127 do
addr_w+=64
addr_r-=(y%2)*64
local offset=1+(flr(g_clk/4)+y)%#g_rnd
local prand=g_rnd[offset]
if 0~=band(prand,30) then
memcpy(addr_w,addr_r+prand%2*64,64)
else
memset(addr_w,rip_c,64)
end
end
end
function _draw()
cls(0)
map(0,0)
print("pilot8 water effect",
band(g_clk,127),88,7)
render_water(96)
end
|
[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.





0 comments




