Log In  

BBS > Superblog
Posts: All | Following    GIFs: All | Postcarts    Off-site: Accounts

Recently I have been busy porting my PICO-8 Bumble Bots game to the Gamebuino game console. Gamebuino resembles PICO-8 in that it is also a console for making and playing retro-games with the emphasis on making them. Unlike PICO-8, the Gamebuino is a physical console based on an Arduino board. Here is a picture of a Gamebuino featuring my Bumble Bots game. (Btw, I "shopped" the picture to increase the brightness of the screen, but it's not a mock-up. This is a picture of the game actually running).

Porting my game has been a fun project. So far, I have ported all the game-play elements, and re-created nine of the sixteen levels. The coding is effectively done. The main work pending is porting the last seven levels. I am sharing my experiences here, as I hope that some of you find them interesting.

Gamebuino's resource limitations follow from its physical implementation and are mostly more tight than PICO-8's artificial limitations. The screen resolution of the Gamebuino is 80x64. Although it also supports 160x128, this resolution is not recommended. The details would be too small and drawing to the screen would require more CPU. CPU speed is anyhow a limiting factor. Just drawing an empty screen of 80x64 pixels at 25 FPS loads the CPU for 50%. On the PICO-8 I had no problem achieving 30 FPS, but realizing 25 FPS on the Gamebuino (with a more limited resolution) required a few optimizations. Also, unlike PICO-8, RAM-memory is scarce and you cannot really dynamically allocate memory. You are effectively restricted to global variables and the stack. This requires you to be more conscious of memory usage while you develop. Similar to the PICO-8, there are also limits to the size of the program, but Gamebuino games can be a bit larger. My game is near PICO-8's token limit, but will be less than 50% of the maximum size on the Gamebuino.

I found it very useful to first have created the game on the PICO-8 and then port it to the Gamebuino. For prototyping the PICO-8 is a much more friendly environment. PICO-8's code-run-debug cycle is faster. Lua is also a friendlier language than C/C++ which you need for the Gamebuino. A silly mistake in the C/C++ code can easily lead to a crash or (undetected) memory corruption. Also PICO-8's built-in sprite, sound and music editors make it easy and quick to create and adapt graphics and sounds. Creating images and sounds on the Gamebuino is more cumbersome. Fortunately, it was quite easy to port PICO-8 images to the Gamebuino. I was also able to port the sound effects I created, although this required a bit more work as Gamebuino's sound effect support is a bit more primitive.

In short, I found PICO-8 and Gamebuino to nicely complement each other. PICO-8 is an excellent environment to quickly prototype and evolve a game idea, and to get it out on the web. However, after that, it's great to port it to a physical device that you can hold in your hands and hand-over to friends to let them try it out.

See my post on the Gamebuino site for more details about the porting process.

[ Continue Reading.. ]

3
4 comments


Cart #51603 | 2018-04-14 | Code ▽ | Embed ▽ | No License
1

1
3 comments


Cart #ouch-1 | 2018-12-05 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
6

(binaries)

Controls:

left/right = move
z = pull down
x = push up

Idea:

Pull down dice and convert/clear them by pushing them up again. Much like Money Idol Exchanger.

Conversion logic:

2 x 2 = 3
3 x 3 = 4
4 x 5 = 5
5 x 5 = 6
6 x 6 = clear
2 x 1 = clear all connected

Present:

General game progression, chain conversion, color matching, etc. Some early music testing (disabled). Runs at 60 fps in native mode.

Future:

Better HUD, scoreboard, more music/sfx, specific game progression (goals, challenges etc). More things as I come up with them.

6
16 comments


Pico 8 needed a mini version of this classic!

Levels/Waves are generated procedurally- see how long you can last and how high you score.

Use the keyboard or joystick, move the cursor to collect sun and plant your plants.

Includes a seed system, so if you enjoyed a particular game, note the seed down and share it. You can also replay it easily if you wanted to try to get further.

Beware while it's endless, and you don't restart each level, your plants remain, there are acts of nature that hit your garden keeping you on your toes.

V1.2:

  • Added a 35 second timer after level 2 when only a few zombies left before next level starts.

V1.1:

  • Updated controls, see below.

Instructions:

  1. Plant a few sun flower plants early. Move the cursor to collect sun. Sun is used to grow plants and fight the zombies.

  2. New plants introduced as you advance. To plant press the Z on the keyboard or A button on the controller. This will allow you to select the plan you'd like to plant there. Press Z again to plant. To exit without planting, press X or B button, or move down off the plant selection bar.

  3. Hit the B button or X on the keyboard to pause/resume or quit at any time.

  4. A few hints - get lots of sun early and build your defences strong early while you can, after about level 5 to 6, the waves start getting pretty big with new zombies appearing such as the Football Zombie, Miner, Newspaper Zombie, Trash can, and the Pole Vaulter.

[ Continue Reading.. ]

22
11 comments


Cart #51584 | 2018-04-13 | Code ▽ | Embed ▽ | No License
5

5
1 comment


Well It's really annoying to me
Fxxxxxx annoying

I am currently making a HP bar which decreases when user and monster collide

I have been trying to solve problem more than 5 hours but nothing worked.

   enemies={}
   enemyAttackdelay = 1;
   function _draw()
      --[[codes]]
      hpstatus(0);
   end
   function enemies.move(e)

   end
   function hpstatus()
   end
3 comments


Cart #51555 | 2018-04-12 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4


Introduction

The entire game was done in PICO-8 ( altrought I used Visual Studio Code for the code)

The game takes place in the sky,

You're a little ball, a gladiator, and your purpose is to push your opponents off the plateform. For that, you need to get the right angle, adjust your power and rush toward the ennemies.

You have 3 powerups to help you:

  • Attacks: you are charging your power faster
  • Defense: when you're pushed, you are more stable
  • Life: you get +1 life

Controls

The game can be played by 4 players simultanousely (on the same screen).

  • You can choose up to 4 real players
  • Or you can choose up to 3 bots

The controls are a little bit messy, but it's due to the limitation of PICO-8 assigned keys. The keys are for QWERTY but you can also play with AZERTY

  • Player 1:
    • turn left: down key
    • turn right: right key
    • charge: up key
  • Player 2:
    • turn left: D
    • turn right: F
    • charge: E
  • Player 3:
    • turn left: N
    • turn right: M (or , for AZERTY)
    • charge: up key
  • Player 4:
    • turn left: <TAB>
    • turn right: Q (or A for AZERTY)
    • charge: S

Unfornatly, I didn't put musics, because i'm litteraly too bad to make a decent one.

I hope you'll enjoy it!

Have a nice day.

Link to the itch.io: https://lebug.itch.io/skygladiators

4
2 comments


My second game this week!

I found out it was possible to get the mouse co-ordinates, so tried to make something that uses them - try it out 😄

I've reused the raindrop sprite from my previous game, Rainman but everything else is new - including the mechanics and sound effects - I've also programmed increasing difficulty as you collect more yellow drops.

I hope you like it, and share your high scores!

Cart #51538 | 2018-04-12 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

1 comment


I am creating smart monsters which can detect obstacles. Objects in yellow circles are obstacles. Red circles are where they can jump

Ignore two yellow circles on both left and right sides of the map
When user is in higher place than monster, monster should find place which they can jump. If monsters are under obstacles, they should not jump.

These obstacles(floors) are drawn so.

Unfortunately, I don't know how to do that. I know how to detect enemies' position but not position of obstacles.

I am not asking do that for me. I am just wondering what should and what can I do!

Any help, advice, tip will be grateful!

8 comments


Cart #51513 | 2018-04-11 | Code ▽ | Embed ▽ | No License

0 comments


Cart #51596 | 2018-04-13 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4


Cart #51505 | 2018-04-11 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

Like some sort of cross stitching Etch-a-Sketch! And like Etch-a-Sketch, mistakes are forever...

Press Z to change thread color
Press X to open menu

4
1 comment


Cart #waddleball_revision-0 | 2024-07-12 | Code ▽ | Embed ▽ | No License
24

It's the Waddleball Grand Championship! Competitors must master the art of The Waddle if they hope to emerge victorious!

Left arrow key: Waddle left
Right arrow key: Waddle right
Alternate arrow keys: Waddle straight
Press and hold either key to dash
X or Z: Choose or exit level

You are Waddleduck, a chubby duck with the heart of a champion! Prove your mettle in 6 minigames by booting moles, stomping on tiles and destroying asteroids! Or, relax in free-play mode and kick some balls around.

Waddleball V1.2 fixes some stability issues in the Mole Whacker and Duck Defender modes, and also fixes a sprite sizing bug at the start of each level.

24
17 comments


Cart #51485 | 2018-04-10 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
3

This is a simple mouse over text detection example.
Made it to help someone else's question but figured I'd post it here.

Also this isn't optimized, I tried to make it more for learning than optimization.
For instance:

function _mot(_t) 
--if mouse is within the text
-- boundaries then set that 
-- text.over to equal true
 if(_mx>=_t.x and _mx<(_t.x+(#_t.str*4)-1) and _my>=_t.y and _my<(_t.y+5) ) then
  _t.over = true
 else
  _t.over = false
 end
end

Could be easily simplified to:

function _mot(_t) 
--if mouse is within the text
-- boundaries then set that 
-- text.over to equal true
 _t.over=(_mx>=_t.x and _mx<(_t.x+(#_t.str*4)-1) and _my>=_t.y and _my<(_t.y+5) )
end

[ Continue Reading.. ]

3
1 comment


Cart #51474 | 2018-04-10 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

Hi everyone, I've been lurking here for awhile but I finally decided to make something! I built a retropi awhile back but recently I realized that I could make arcade games for it using Pico8, so today I decided to set aside some time to finish a small project.

Cooptris is a cooperative Tetris clone. Same rules as the original: don't let blocks reach the top of the screen! Both players share the same hold space which is useful for trading pieces. Your current piece can get in the way of the other player, so good communication is required!

Player1 (red)
Left/Right/Down: Move
Up: Rotate
X: Swap Held
Z: Drop

Player2 (green)
S/D/F: Move
E: Rotate
Q: Swap Held
Tab: Drop

2
0 comments


I'm trying to make a bunch of rectangles that rotate around a given point, my code so far is this

function _update()
	timer+=0.01
	velocity_x=cos(timer)
	velocity_y=sin(timer)
	for vect in all(rotographic) do
		vect[1]+=velocity_x*radius
		vect[2]+=velocity_y*radius
		vect[3]+=velocity_x*radius
		vect[4]+=velocity_y*radius
	end
end

function _draw() 
	cls(0)
	for v in all(rotographic) do
		rectfill (v[1],v[2],v[3],v[4],flr(rnd(15)+1))
	end
end

"rotographic" is a table in which each cell contains a 4 value vector with the x and y positoins of origin and destnation to feed to rectfills. So far this works fine making the squares, however, all they do is rotate together, around their own center if I am not wrong.

What I want to achieve, is for the each rect to rotate around a given center (let's say 64,64 to exemplify) so in the given example, what would happen is, the outer rects will rotate around a bigger radius than the inner ones.

I know I'm failing at math here (no surprises) so I hope you guys can nudge me in the right direction!

I read this very helpful article, but I am failing to figure out how to apply its logic to more than one element in the data structure I have.
http://endlessillusoft.com/rotating-around-a-point/

2 comments


Cart #52078 | 2018-04-27 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

V1.1.0 Trees!!!!
New to 1.1.0:

TREES!
Horizontal snow
Clean up in the code here and there

Enjoy :)

Cart #51463 | 2018-04-09 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

An old school button masher game!

Needing a few tweaks here and there, although suggestions are kindly welcomed!

--IF YOU COULD BE SO KIND--

This game is part of my Extended Project Qualification (EPQ), and would be so grateful if you could spare 2 minutes to fill out a quick survey about the game to help me push my project further!

https://www.surveymonkey.co.uk/r/Y72WJD5

Thank you!

[b]--CONTROLS--

[ Continue Reading.. ]

1
4 comments


Cart #51460 | 2018-04-09 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

My first project, started out just trying to make an 8-bit version of The Preset's "This Boy's In Love" and then I realized I couldn't just put it online without a visualizer, so I coded one. :) Peeking around in system memory was pretty fun! I was planning on making music_events:update() generate a list of "note on" and "note off" events, but for now it just calculates the current volume of the different channels.

4
3 comments


Cart #51455 | 2018-04-09 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

0 comments


Built my first game with pico8 and it was super fun! I followed this tutorial for ~30 minutes and then tweaked it.

I was able to add a title screen, horizontal raindrops, sprite switching, poison switching and movement all around in just an hour :)

It'll be fun to host a small game jam at my school with pico8!

Cart #51450 | 2018-04-09 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

2 comments


Cart #51423 | 2018-04-08 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

This is a playable game concept from my step-daughter Corinne.

Guide the octopus through the caverns, avoiding the edges, collecting fish, and eliminating creatures with your laser.

Each level gets a little faster. Compete for the highest score.

Beta: The creature cavern avoidance needs more finesse, and I'd be open to any suggestions about that or any other improvements.

4 comments




Top    Load More Posts ->