Log In  

BBS > Community Superblog
All | Following | GIFs | Off-site

Cart #hwd_elite_dock-5 | 2024-07-09 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
16


Cart #hwd_elite_enc-3 | 2024-05-29 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
16

Welcome to Elite for the Pico-8 home console!

This game is intended to be less grindy and slow version of the NES Elite, suited more for an evening of fun rather than a week of space-trucking. If you're wondering how to play, I've written a Game Manual

Before you play: Holding down the (X) button and pressing Left or Right is how you navigate menus. Double-tap (X) to select a menu option.

[ Continue Reading.. ]

16
16 comments


A short little game about eavesdropping on conversations in the park.

Cart #soztasoja-1 | 2024-04-26 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
5

Thanks to my partner for contributing dialogue, and NerdyTeachers for the tutorial on text animations that sparked the idea.

5
2 comments


Cart #marching_squares-0 | 2024-04-26 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

Basically, I’m working on a digging game and am revisiting something I have worked with in the past: marching squares. I recommend looking it up, but basically the way it works in this project is for each “tile” a table of tables is examined and depending on whether each of the tiles coordinates are on or off the algorithm figure out which sides does the line on the square intersect. Sometime marching squares also uses linear interpolation, but since my screen is stored in binary instead of floating point values I am storing intersection points in separate nested tables. The main thing is that each square is checked, and depending on stored values a specific line might be drawn through it.

[ Continue Reading.. ]

2
0 comments


Cart #mapshuffle-0 | 2024-04-25 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
5

I made this tool for myself, for reordering levels to fix difficulty curves. But I thought I'd share it in case anyone else finds it useful.

How it works:

  • Press X to select a room, and then X again to swap the two rooms
  • Press C to preview a room
  • Maps are imported/exported manually using cstore. Cry about it :(

Note: Mapshuffle cannot import/export maps in the web player. You must download the cart and use it in immediate mode.

Instructions:

  • Back up your project in case something goes wrong.
  • Download mapshuffle.p8 and place the cart in the same folder as your project.
  • Open your project, type the following line into the terminal, and hit enter:

[ Continue Reading.. ]

5
4 comments


people often ask about object orientation (OOP) and inheritance, but can get confusing or incomplete guides. I want to help everyone understand how prototypes work!

lua does support object-oriented programming (but does not require it), based on prototype inheritance — not classes.
metatables are part of this but also often misunderstood. this is a complete explainer that I wrote on discord and keep not putting here in a clean way. so I am putting it here as it is!

so what is a prototype?

goblin={
 sp=42,
}

function goblin:new(x,y)
 local obj={x=x, y=y}
 return setmetatable(obj, {__index=self})
end

function goblin:draw()
 spr(self.sp,self.x,self.y)
end

gob1=goblin:new(40,40)
gob2=goblin:new(60,70)

alright so this is like 6 different things working together.

1) table with methods: goblin is a table with property sp and methods new and draw (a method is a function attached to an object)

calling goblin:new(40,40) is the same as goblin.new(self,40,40); self is «the object we are working on»; defining function goblin:draw() is the same as function goblin.draw(self) and the same as goblin={sp=42, draw=function(self) spr(...) end, somethingelse=true}

there is a difference between the two methods in my example: when we call goblin:new, the self param inside it will be the goblin table itself (the prototype), but when we have gob1:draw() then self inside draw will refer to gob1.

2) metatables. there are special methods that lua uses to implement operators (+, /, .., etc). the method for addition for example is __add (we call these metamethods). if I want to be able to do vector1 + vector2for my custom vector tables for example, I need to define a method named __add but I can’t do it in the vector prototype table, lua will not look it there; it is required to define these metamethods in a table’s metatable. (the metatable is similar to a class in other object-oriented languages: it is the template, or the definition, or the model for many tables.) so that’s what happens in goblin:new: I define a metatable with one metamethod and set it on my goblin object.

3) prototype. these are great! if I have 50 goblins on screen and they have different health and coordinates but the same properties for sprite, width, height, etc, and the same methods for update, attack, draw, etc, I would like to define all the shared things in one place, then have custom things in each goblin table. that’s what a prototype is for! here in goblin example we have sp and draw shared, and in a specific goblin table (it starts as obj on line 6, then it’s gob1 or gob2 in my example) we have specific data like x and y.
much more info on this really useful site: https://gameprogrammingpatterns.com/prototype.html

alright so how do I say «gob1 and gob2 should delegate to goblin prototype for some properties»? I define a metatable with an __index property. it is called by lua when I do gob1.sp and sp is not found inside gob1. it can be a function (can be useful to have a dynamic property that’s computed from other properties) or another table: the prototype!
more: https://www.lua.org/pil/13.4.1.html

now this is the cool thing with prototype-based object-oriented language that you don’t have in such a nice way with class-based OO languages
what if I want 40 goblins on screen and 10 archer goblins? these should have a different sprite and different attack method.

archer=goblin:new()

archer.sp=52

function archer:attack(target)
 --use the bow
end

arcgob1=archer:new(20,50)
arcgob2=archer:new(40,70)

look at this from bottom to top:

  • arcgob1.x will be 20, y 50
  • arcgob1’s and arcgob2’s prototype is archer, because when we call archer:new, self on line 6 of my first code block points to archer
  • arcgob1.sp is 52 (the value comes from the prototype)
  • arcgob1:attack(hero) will use our archer:attack method.
  • arcgob1:draw() will use goblin:draw! archer itself is a table that has goblin for prototype
    draw is not found in arcgob1, look at its prototype archer, not found, look at its prototype goblin, found! call it with self pointing to arcgob1.

result:

[ Continue Reading.. ]

24
5 comments


Cart #dashplus1-0 | 2024-04-25 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

1 comment


Cart #bad_rooms_ld55-2 | 2024-04-28 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
3

Ludum Dare 55 entry

X/C cycle spells + Arrow keys to move
1-4 players vs 0-3 CPU players (max 4)

3
9 comments


Cart #rebooter_-0 | 2024-04-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
9

--REBOOTER--

Ordered by Elevated Recovery
Made by Charlie Boudchicha (https://www.fiverr.com/charlie_boud)

You need to complete every achievements to win the game :

  • make a bad decision
  • make a productive decision
  • do something to rest
  • unlock the 4 blue rooms
  • go through 15 rooms
  • survive 3 trap rooms
9
6 comments


Cart #basic_platformer_mecanics-0 | 2024-04-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

2
1 comment


Cart #duwiramope-0 | 2024-04-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
3


jus a little wip game

3
2 comments


Cart #dashlessplus-0 | 2024-04-23 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

2 comments


Cart #dualnback-0 | 2024-04-23 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
3


n-back (Wikipedia, Gwern)

How to play:

1-Back: Remember whether the position or color (or both) is the same as in the previous round, press the according button/buttons if they match.

2-Back: Remember whether position or color are the same as 2 rounds ago.

N-back: Remember whether position or color are the same as n rounds ago.

Controls:

Z or <- for a position match

X or -> for a color match

P to pause (+ additional menu)

Tips:

Try playing in standard mode to understand how the game works, in endless the game ends when you make a mistake or miss a match.

[ Continue Reading.. ]

3
0 comments


Cart #cascade_cascade-2 | 2024-04-27 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
9

Cascade Cascade

A game somewhere in the space between a breakout clone and a puzzle bobble clone, inspired by a half-remembered game I played on an airplane seatback.

Controls

  • Aim with left and right arrows
  • Press [x] to fire

Or, as of 2024.04.27, point and click with the mouse to aim and fire.

Rules

This is an endless arcade game. Your goal is to survive by keeping the blocks from reaching the bottom.

  • Each hit reduces a block's strength by one. When a block's strength reaches zero, it's destroyed.
  • Powerups (white concentric circles) increase the number of balls you can accumulate for your next shot.
  • The number of balls you'll fire next shot is indicated by the combo meter on the right side of the screen. It increases by one-half for each block you hit.

[ Continue Reading.. ]

9
3 comments


Cart #donarumobraingames-0 | 2024-04-23 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
10


Welcome to Brain Games. A collection of puzzles and game to test our logic and puzzle-solving skills. Take your time and have fun in these 6 different games.

Jumps
Use peg solitaire rules to solve these puzzles. Use one chip to jump over another and remove the jumped chip from the board. The puzzles get more difficult as the levels get higher! Can you get the board down to one chip?

Dice
Can you get all the dice to the six face? These puzzles start out easy but increase in difficult as you level up. You'll need to use Rubik's Cube like logic to solve the more complex levels.

[ Continue Reading.. ]

10
4 comments


Mate-in-2 Volume 2. 33 more puzzles. White to move.

Cart #matein2vol2-0 | 2024-04-22 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

2
1 comment


Cart #stellae-0 | 2024-04-22 | Code ▽ | Embed ▽ | No License

This is a Space Invaders clone that I was making some time last year. Maybe I'll continue with the project.

0 comments


Cart #rfidezaro-0 | 2024-04-22 | Code ▽ | Embed ▽ | No License
1

1
2 comments


Cart #picojoe-0 | 2024-04-22 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
6

Controls:

Movement

Shooting

Interactions

About :

Pico joe is a remake of the classic video game Communist joe created to celebrate its 5 year anniversary a bit later than I would have liked. The story is a retelling / retexturizing of the original, following the protagonist joe through the events of the first game in a new light chasing after an ever better bottle of sweet, sweet vodka, destroying planet after planet collecting bounty after bounty and building up a stack of cash bigger than the Eiffel tower just to endorse your habits, you must fight your way to the top and ensure the universes safety whilst your there, good luck and what not.

[ Continue Reading.. ]

6
0 comments


Due to how tabs are saved in the .p8 file format, they can cause overflows into the sprite sheet. Each tab is saved as 6 characters in the .p8 file. However, those are not counted as part of the character limit until the cart is run or saved. If you have a cart that has multiple tabs and is at or just below the character limit, trying to run or save the cart will cause part of the code to overflow into the sprite sheet before giving an error, either "**** save failed ****" when saving or "program exceeds char limit" when running. In testing I've also had Pico-8 completely crash when trying to run a cart whose tabs push it over the character limit, but I was unable to replicate this.

(pico-8 version 0.2.6b)

The best way to solve this in my eyes, is to have each added tab of code add 6 to the character count in the code editor. That way, in the same way it's impossible to type over the character limit, it'd also be impossible to have tabs push over the character limit and overflow into the sprite sheet.

[ Continue Reading.. ]

5
0 comments


Hi, i have come across pico 8 recently and messed around with the edu version. But today i remembered that like 3 years ago i bougt the full thing, i still got all of the files (i found them on my laptop) and it works on my new pc. But i wanted to run pico 8 games on my miyoo mini + (this little linux handheld). There is an emulator for it but its not the best in quality. Oh, and i created this account now becasue i didin't have one, there is no emails from lexaloffle on any of my gmail accounts with the purchase code or something like that. Can anyone help?

3 comments




Top    Load More Posts ->