Log In  
BBS > Lexaloffle Community Superblog
This is a combined feed of all Lexaloffle user blogs. For Lexaloffle-related news, see @zep's blog.

All | Following | PICO-8 | Voxatron | General | Off-site
:: Unfold ::

This thread is for ideas for my game.
The main character is a lil bird that changes color but I don't know what color he should turn with 1 dash and then again with 2 dashes.
This game is a Celeste type mod.

I don't know if he should have a scarf that changes color or if his body should so I need ideas.

P#134861 2023-09-25 01:25
:: Unfold ::

Cart #pico1kmatch-0 | 2023-09-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Controls

cursor / dpad - move the reticle around the play area
z / O - hold and press a direction to shift rows and columns of tiles
x / X - after the timer reaches zero press to start again

About

This is my second entry into the #pico1k 2023 jam. This is a "match 6" puzzle game where you try and clear as many lines as you can in 100 seconds. Featuring hand coded sprites inspired by Columns on Sega Megadrive/Genesis and a smooth addictive control style.

P#134855 2023-09-24 22:11 ( Edited 2023-09-24 22:12)
:: Unfold ::

hello everyone, I'm Osis, and I'm new to Pico 8 as well as coding, but when I found some pixel art of some Risk of Rain characters with the Pico 8 palette and most of them being 8 x 8 (a link to their work https://www.reddit.com/r/pico8/comments/mw40ui/risk_of_rain_1_characters_in_pico8_style/ ) I thought that it might be fun to try and make a game, which I have done most of it, the problem is I have a set of animations that should be playing when the player shoots, which at one point worked, however, it now no longer does I have tried going over it many times and still can't find what might be wrong

controls:
Jet pack is Up
Place Turret Is Down
Left Is left
Right Is Right
Z Is Shoot

any help with this problem or anything else you can spot in my code would be very helpful,

here is the problem code:

--

if shooting2 == true and mag >= 1 then
s_timer+=1 --shooting timer

if d == 2.8 and pushing == 0 then
if (s_timer < 4) plr.s=5 spr(6,plr.x+8,plr.y) -- this is here as one spr is more the 8x8
if (s_timer > 6) plr.s=7
if (s_timer > 8) plr.s=8
if (s_timer > 10) plr.s=1 s_timer=0 shooting2=false mag-=1
end

--

note there is this same code copied a few times but just looking for if the player is facing a different way
but even if it was just this bit it should still work I believe.

and here's the cart in full:

Cart #risk_of_rain-0 | 2023-09-24 | Code ▽ | Embed ▽ | No License

P#134828 2023-09-24 21:32 ( Edited 2023-09-24 21:42)
:: Unfold ::

Cart #jimmac_skulls-1 | 2023-09-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Thanks to the great tutorial series by Krystman, I was able to finally create a game. It only took 40 years. Initially I planned to learn the basic concepts but ended up invetsing a lot of time polishing this basic shmup. Enjoy!

P#134852 2023-09-24 19:42
:: Unfold ::

Cart #dopofewidu-0 | 2023-09-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Follow me? See if you can keep up with this sequencing game of colors and sound. How much memory can you store? Share your scores in the comments!

CONTROLS

X = Start/restart the game
UP ARROW = top square
DOWN ARROW = bottom square
LEFT ARROW = left square
RIGHT ARROW = right square
Z = center square

This game was made for the 2023 PICO-1K Game Jam, where the goal is to create a PICO-8 game in under 1KB of compressed memory.

P#134851 2023-09-24 19:29
:: Unfold ::

Cart #fakinoghu-0 | 2023-09-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
Designed for Concord. Glyph interpretation up to user.

Cart #fakinoghu-1 | 2023-09-25 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
0.5 Added category tool

P#134846 2023-09-24 17:14 ( Edited 2023-09-25 00:20)
:: Unfold ::

Captain Harlock, Battle against the Armada (THE ENGLISH TRANSLATION CAN BE INCOMPLETE. IF YOU SEE ANY BUGS OR MISTAKES, PLEASE CONTACT ME.)

Cart #harlock-0 | 2023-09-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

Albator, Bataille contre l'Armada (ATTENTION, LA TRADUCTION ANGLAISE PEUT ÊTRE INCOMPLÈTE. SI VOUS VOYEZ DES BUGS OU DES ERREURS, MERCI DE ME CONTACTER.)

Cart #albator-1 | 2023-09-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

How to play ?

ENG: Press X to shoot and press C to switch weapons.
FR: Appuyez sur X pour tirer et C pour changer d'armes.

Mazone ships | Les vaisseaux Sylvidres

The Zoness | Destructeur

Battleship | Vaisseau amiral

Fighters | Vaisseaux de combat

Pickups | Collectables

Weapons | Armes

What is this game ?

ENG: This game was created for a contest. The theme was “Create a mini-game about audiovisual creations”. Because I did not want to create a game with a camera flying around and shooting lasers, I chose to do a Schmup (Shooting game) based on Captain Harlock (called Albator in French). I tried to be as close to the original design as possible with the Pico8 limitations.
This project was fun to make. It was not easy, for sure, but I think I managed to do something great. I hope you will like it!

FR: Ce jeu a été créé pour un concours de création de jeux vidéo. Le thème était : « Créer un mini-jeu autour de l’audiovisuel ». Comme je ne voulais pas faire un jeu avec une caméra qui vole en tirant des lasers, j’ai préféré faire un jeu sur Albator (Captain Harlock est le nom original, en japonais). J’ai essayé de respecter les designs originaux au mieux, avec les limitations Pico8.
Le projet a été vraiment fun à réaliser. Ce n’a pas été facile, c’est sûr, mais je pense avoir réussi à faire quelque chose de bien. J’espère que vous allez l’apprécier !

Where to find me!

berry_sauvage on Instagram, Discord and Youtube.

Credits

ENG: Game and Pixel Art by Berry’ (me).
I used tutorials by Lazydevs and Game Dev Alliance. (https://www.youtube.com/@LazyDevs | https://www.youtube.com/@GameDevAlliance)
Music by Robby Duguay. (https://www.lexaloffle.com/bbs/?tid=2619)
SFX by Gruber. (https://www.lexaloffle.com/bbs/?pid=64837)
Captain Harlock’s rights are owned by Leiji Matsumoto.

FR: Jeu et PixelArt par Berry’ (moi).
Avec l'aide des tutoriels par Lazydevs et Game Dev Alliance. (https://www.youtube.com/@LazyDevs | https://www.youtube.com/@GameDevAlliance)
Musique par Robby Duguay. (https://www.lexaloffle.com/bbs/?tid=2619)
SFX par Gruber. (https://www.lexaloffle.com/bbs/?pid=64837)
La Licence Albator appartient à Leiji Matsumoto.

P#134831 2023-09-24 09:36
:: Unfold ::

Cart #show_book_function-0 | 2023-09-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

This is a function that draws a book with some custom content to the screen. My inspiration was morrowind and its plethora of books. All this function needs to work is an external,global page variable.

How to use:

  • copy this function to your code
  • declare a global page variable (that starts at -1, which is the cover page)
  • keep in mind that it resets camera() to print the book on screen regardless of the camera offset, so use it after you already printed you game with desired offset
  • add your book as a pair of title and a long content string like this: {"Title","Super long and cool content"}, to the books table
  • consider using P8SCII to achieve certain effects cheaply - it breaks the function in fun, weird ways
function show_book(title)
    camera()
    local given_title=title or "how to use show_book"
    local books={
            {"how to use show_book",
            "this book will teach you how to use the show_book function in pico-8. the show_book function takes a given title and displays the book content on the screen. you can use the⬅️ and ➡️buttons to turn the pages, and the 🅾️ button to exit the book. you can also add your own books to the books table, as long as they have a title and a content string. the function will automatically split the string into lines and pages, and draw the book cover and pages for you. you can also change some variables in the function, such as the maximum length of a line, the maximum number of lines per page, and the colors and positions of the book elements. to use the function, you need to call it with a title argument, like this: show_book ('how to use show_book'). have fun reading and writing books with pico-8!"
         },
            }
        local function split_str(str,length)
            local max_length=length or 13
            local strings=split(str," ",false)
            local result={}
            local cur_str=""
                for i in all(strings) do
                    if #cur_str+#i<max_length then
                        if #cur_str!=0 then
                        cur_str=cur_str.." "..i
                        else
                        cur_str=i
                        end
                    else
                        add(result,cur_str)
                        cur_str=i
                    end
                end
            add(result,cur_str)
            return result
        end
        --end split_str

        local function draw_cover(tit)
            local title=split_str(tit,11)
            local line_nr=0
            rectfill(64,25,117,100,2)
            line(118,25,118,100,15)
            rect(66,27,115,98,15)
            for i in all(title) do
                line_nr+=1
                print(i,70,35+line_nr*6,15)
            end
        end--draw_cover_end
        local function give_book(tit)
        local title=tit or "the hanging tree"
            local book_lines={}
            local lib={}
            local ret={}
            --lookup the book and split
            --the strings
            for i in all(books) do
                if i[1]==title then
                    book_lines=split_str(i[2])
                end
            end 
            for i in all(book_lines) do 
                add(lib,i)
                if #lib==10 then
                    add(ret,lib)
                    lib={}
                end
            end
            if(#lib!=0)add(ret,lib)
            return ret
        --
        end--give_book end

        local content=give_book(given_title)
        --dislay background
        fillp(▒)
        rectfill(0,0,127,127,0)
        fillp()
        if page>0 then
            --draw the book itself
            rectfill(10,25,117,100,7)
            line(10,24,118,24,2)
            line(118,25,118,100,15)
            line(64,25,64,100,15)
            --page numbers
            print(page,64-print(page,0,-1000),95,4)
            print(page+1,66,95,4)
            --print left page
            trash=0
                for i in all(content[page]) do
                    trash+=1
                    print(i,12,24+trash*6,13)   
                end
            if#content+1>=page then
                --print right page
                trash=0
                for i in all(content[page+1]) do
                    trash+=1
                    print(i,66,24+trash*6,13)   
                end
            end
        elseif page==-1 then
            --draw the book cover
            draw_cover(given_title)
        end 
        --controls
        print("🅾️",111,115,4)
        if page+1<#content then
            print("➡️",111,95,4)
            if(btnp(➡️))page+=2
        end
        if page>-1 then
            print("⬅️",11,95,4)
            if(btnp(⬅️))page-=2     
        end
end

401 tokens

P#134830 2023-09-24 09:23 ( Edited 2023-09-24 10:21)
:: Unfold ::

Cart #spirograph_cg_43-0 | 2023-09-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

My submission for code guessing round #43. It's a visualisation of a spirograph with adjustable parameters:

  • R1: radius of the blue, centered circle
  • R2: radius of the white, rolling circle
  • D: length of the drawing rod coming from the rolling circle

Edit it online!

Controls

  • Up/Down: select the parameter to adjust
  • Left/Right: decrease or increase the parameter by 10 (or 1 if circle is held)
  • X/M/Cross: flip sign of R2 (change between hypotrochoid and epitrochoid)
  • Z/C/N/Circle: hold to change the parameter step from 10 to 1

About the implementation

Curve drawing stumped me for some time: they have infinite smoothness and calculating every pixel they go through sounds like an absolute pain and efficiency disaster. With parametric curves, like spiros and beziers, you can't even do that well, you can only make your parameter step as small as possible and hope it hits all the pixels. This is not a usable approach.

Then I realised: curves may be smooth, but PICO-8 display is not. I can approximate them with straight lines, which PICO-8 calculates for me! The only thing needed is a bunch of points on the line dense enough to create an illusion of smoothness, which PICO-8 doesn't require a lot of. In addition to that in most parametric curves go "slower" at sharp turns (have low derivative w.r.t. parameter) focusing the detail there, and approximating less curved sections with longer line segments.

You can see the function that calculates the points in tab 1 function curve(). It's calculated once every parameter change because it is a fair bit more resource intensive than just drawing it. i parameter indicates how far did the rolling circle roll around the centered circle, and based on that calculates angles and positions of the rolling circle and the drawing line, and the tip of the drawing rod is added to the list of points. Exactly the same approach is shown in the _draw function but split into steps: for a given t (how far the circle rolled) it calculates cx and cy (position of the rolling circle) and from that dx and dy (tip of the drawing rod).

P#134827 2023-09-24 06:57
:: Unfold ::

P#134824 2023-09-24 05:20
:: Unfold ::

PICO-8 print behavior is inconsistent with Lua standard:

mmt={}
mt=setmetatable({},mmt)
t=setmetatable({},mt)

function mmt:__index(k)
 print('mt.'..k)
end

print(t)

This code should not output mt._tostring as, per language manual, I quote: "the access to a metamethod does not invoke other metamethods". You can check it on the official Lua demo too.

P#134816 2023-09-24 00:49 ( Edited 2023-09-24 16:32)
:: Unfold ::

Just kicked off my Let's Play series on youtube where I do what I can to complete PICO-8 games 100%. Not sure there is much else than that to say I guess :) Check it out!

https://www.youtube.com/watch?v=KUBOCoZi3Jo

P#134810 2023-09-23 21:49
:: Unfold ::

Cart #ginekameh-0 | 2023-09-23 | Code ▽ | Embed ▽ | No License

P#134752 2023-09-23 20:18
:: Unfold ::

Cart #jawoyajire-0 | 2020-05-09 | Code ▽ | Embed ▽ | No License
Designed for Concord (Uploaded several years ago)

P#134805 2023-09-23 18:17
:: Unfold ::

Cart #chinaminer-1 | 2023-09-23 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
8

Controls:

⬆️⬇️⬅️➡️ move
⭕️ [Z] Jump
❎ [X] Skip / continue

Remake:

The original game for Commodore 64 "China Miner" by Ian Gray.
(c)1984 Interceptor Software.

How to play

Miner Wally is the only person to know the location of the Jade Mines belonging to the Pong Dynasty in China. On each of the 30 screens you must collect four objects (pickaxe, candle, lantern and jade vase) before collecting the key to move onto the next stage. As well as the platforms to negotiate you must also avoid the various creatures that populate the mine and if you touch any of them then you lose one of the nine lives, are sent to the start of the screen and all objects reappear. There are various obstacles to avoid or use like lasers, moving platforms and platforms that disintegrate when stepped on. Falling from heights also loses you a life.

As in the original, the game starts immediately hard and in the first stage you quickly have to make a few steps to the left and jump UP to avoid the creature coming straight towards you (and you can't jump up or diagonal due to the lethal stalactites above you).
Here's a short gameplay video that should help you figure out how to beat the first stage and play in general.
For reference and hints on how to beat any stage there's this China Miner Longplay of the original C64 version.

Differences with original:

  • The original game was notoriously difficult and brutal, you started from the first level and had to redo everything after game-over. In this remake you can select the starting stage, so you can train and find the best strategy to finish each level (why not, in the shortest time, see Stats and Achievements);
  • You start with 9 lives instead of 5 (you still gain an extra life every 1250 points / 5 stages as the original)
  • Some collisions with blocks have been simplified and made less frustrating: for instance you can jump diagonally without hitting the head on platforms higher than 2 blocks from your ground (unless it's the stage ceiling);
  • You cannot get stuck jumping up over the stage ceiling as it happened in the original;

Stats page:

⬅️ from title screen.
Aside from the high score, it keeps track of your best performances:

  • Longest Run: how many stages you've managed to complete in a single game and the timing of the best run;
  • Total Time: (not to be confused with the best run time) this is the sum of all best times recorded for each of the 30 stages;
  • Average Time: is simply the above (total time) divided by the 30 stages, see Achievements;
  • Take-Away: how many jade vases you managed to carry home; in other words how many stages you've completed in a single game and reaching the exit the cave (finishing 30th stage, e.g. for a takeaway of 5 you might want to start from stage 26);

While in this page press ⬆️⬇️ to select the starting stage (this option is saved).

Achievements page:

➡️ from title screen.
Move ⬆️⬇️ for info on each achievement:

  • Hard stages: simply complete stage 1, 5, 12, 21, 28 earning a yellow star each.
  • Take-Away: as explained above for the Stats page, reach the exit after completing 3, 5, 7, 10 or 15 of the last stages;
  • Average Time: in seconds, to earn the first star you need an average of less than one minute, this should be pretty easy although this row of achievements will likely to be still all greyed-out until you play each of the 30 stages at least once (default time is 15 minutes for an unbeaten stage!); while an average under 40 seconds is more challenging but still doable as you improve your strategy during the training on each stage;
  • Longest Run: earn a star for each milestone (3, 5, 10, 20 and 30) of your game progress. These are the toughest stars of course since they need to be achieved in a single game, fifth star
    Upon reaching the "Reset" you still need to move up other 4 steps to enable the "Reset progress" command which is confirmed by pressing the ⭕️ [Z or C] button. This will wipe any saved progress, score, timing and preferences.

Features:

Pixel-perfect collision with the creatures;
P8scii for extra gfx (see post: One-Off GFX);
SFX bank swap (see Music below);
Options:

  • Flicker (off by default, turn it on only on executable, on webplayer/browser it'll flash inconsistently) 60fps flickering effects for colour blending and transparency; if enabled it'll try to emulate the C64 colour palette, Pico-8 has no cyan and purple;
  • Music (on) you can turn the music off at some point;
  • Particles FX (on) collapsing floor and colliding with baddies;
  • Classic Moves / New animation: the Classic mode will animate Wally as in the original, facing you when idle, while activating "New animation" Wally will move more or less like in Manic Miner holding the pose, a little step while jumping, coming down the slides etc.

Music:

The background music "Maple Leaf Rag" composed by Scott Joplin (in the original China Miner by Chris Cox).
The Pico-8 version used in this remake is by @ericb and his player cart is available: Player Piano: Maple Leaf Rag. Fun fact: see my comment there about "China Miner flashbacks"

Credits:

Thanks to:
@thisismypassword for creating Shrinko8;
again to @ericb for the music;
feedback/proofreading: @bikibird, @SmartAlloc, @merwok
you for playing the game!

P#134801 2023-09-23 18:16 ( Edited 2023-09-24 00:26)
:: Unfold ::

So I wanted to experiment with Pico-8's bitplane drawing features (see https://www.lexaloffle.com/bbs/?tid=54215) and specifically to see if I could make a palette that worked sort of like the idea behind 16-color CGA: four-channel (one bit per channel) RGBI color. (Pico-8 doesn't have quite enough blue for this to work comfortably but I'll keep experimenting.) But to play with it, I wanted to be able to scribble with the palette, drawing "with specific bits".

So I threw together a thing!

Cart #bitplane_toy-0 | 2023-09-23 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

This mouse-driven cart lets you scribble using a velocity-sensitive pen. Left four checkboxes in the tool panel set the high four bits of the palette mask, right four set the low four. (For some reason this made more spatial sense to my brain for where "color" and "mask" go even though it's backwards from the bits.) Click the "explosion" button to clear the drawing area. I have been too lazy to implement a KABOOM sound effect but patches are welcome.

Left click to draw, move faster for a thicker line. It's not a real art app, so the lines are really blobby. X/Z to cycle palettes (both buttons do the same thing) -- additive experiment, subtractive experiment, classic palette, secret palette; palette changes will overwrite the top 8 pixels of the drawing area with a display of the current palette.

No save feature, this is literally just drawing to VRAM (with some save-to-sprite-sheet shenanigans to restore stuff otherwise overwritten by the cursor).

Feel free to use this as a crude basis for other mouse driven drawing apps, make it do interesting things with the other mouse buttons, try more palettes, just experiment with bitplanes, etc. Code is un-minified so it should be reasonably legible.

P#134796 2023-09-23 07:08
:: Unfold ::

Cart #orbwinder_quoridor-0 | 2023-09-23 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

Quoridor: Apples VS Oranges

This is my port of the board game Quoridor created by Mirko Marchesi.
In my version of the game, the pawns are replaced with "fruit" because it works better with the color palette. All of the rules are programmed into the game logic to prevent any illegal moves. Unlike other online versions of the game, the fruits start on the sides of the board, rather than on top and bottom. I think this makes it much more comfortable to play in local multiplayer.

There are a few more features I want to add, but this version is basically complete. Have fun!

The physical game is published by Gigamic Games and is available from many stores. Check out the Board Game Geek site for purchase links.

P#134792 2023-09-23 03:05
:: Unfold ::

Exporting worked earlier but now when I attempt it I get this response.
Not Writing Properly

Not passed limit

Uncomplete installs

P#134779 2023-09-22 22:03 ( Edited 2023-09-22 22:03)
:: Unfold ::

Hello Lexaloffle community, I have spent a couple of days learning Picotron. Figuring out how to modify files etc. I was wondering if anyone would be interested in me writing a full tutorial/documentation on how to use it, containing a full list of terminal commands (not only the ones specified by using the help cmd) and a full list of commands for the programming language. Containing information about each command. If anyone is interested in this please tell me.

Best Wishes, @grandel234

Picotron Playground:
https://www.lexaloffle.com/picotron.php?page=playground

All Official Documentation:
Gfx Pipeline: https://www.lexaloffle.com/dl/docs/picotron_gfx_pipeline.html
Picotron Pod: https://www.lexaloffle.com/dl/docs/picotron_pod.html
Picotron Usr Data: https://www.lexaloffle.com/dl/docs/picotron_userdata.html

P#134771 2023-09-22 16:31
:: Unfold ::

Cart #catsitting-2 | 2023-09-22 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

Here is my first attempt to program a game with Pico-8. The goal is to drive 3 cats to the 4 marked fields in the left center. They will only go to these fields if Luna, the shepherdess and heroine, is at this moment at most 2 fields away. There are 3 levels in total. And if you complete all 3 levels in a short enough time, you get to enter a high score list. Attention: In the last level you can be run over by 2 vehicles!

P#134769 2023-09-22 16:26 ( Edited 2023-09-23 08:19)
View Older Posts
Follow Lexaloffle:          
Generated 2023-09-25 03:16:27 | 0.232s | Q:94