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
[ :: Read More :: ]

TF88
TF88 FootBallApril 27, 2024
Chào mừng thành viên đến với TF88, một trong những nhà cung cấp cá cược trực tuyến hàng đầu và có tầm ảnh hưởng nhất trong ngành giải trí trực tuyến, TF88 cung cấp các sản phẩm đa dạng đến người chơi từ Thể Thao, Thể Thao Điện Tử đến Casino Trực Tuyến, Quay Hũ, Xổ Số cho hầu hết các sự kiện.

CHI TIẾTĐịa chỉ : 51 Võ Nguyên Giáp, Bắc Mỹ An, Ngũ Hành Sơn, Đà Nẵng 550000, Việt Nam

Điện thoại : +84912126721

Email : [email protected]

website: https://tf88.football
https://tf88football.blogspot.com/
https://telegra.ph/TF88-04-27
https://band.us/band/94726129
https://leetcode.com/u/tf88football/
https://www.elephantjournal.com/profile/tf88/
https://vocal.media/authors/t-f88-foot-ball
https://www.metal-archives.com/bands/TF88_FootBall/3540543879

P#147417 2024-04-27 05:24
[ :: Read More :: ]

Bsport – Trang chính thức thể thao trực tuyến uy tín số 1, Bsports pro với hàng ngàn ưu đãi tặng và nạp mỗi ngày. Nhà cái đảm bảo sự đa dạng kèo cược, thể loại game, uy tín và hợp pháp.
Website : https://bsport.kim/
SĐT 0984422442
Địa chỉ 134/109/37A Lý Chính Thắng, Phường 7, Quận 3, Thành phố Hồ Chí Minh, Việt Nam
Hastag #Bsport #bsport.kim

P#147405 2024-04-27 00:14
[ :: Read More :: ]

32 synthesized instruments for your composing pleasure.

#able_ipack_01-1

If you've got requests for the next instrument pack, let me know!

P#147400 2024-04-26 21:42
[ :: Read More :: ]

There is no asin()

P#147398 2024-04-26 21:17
[ :: Read More :: ]

hi, i wrote an interactive error screen for picotron! on error, it lets you explore the stack, local variables, and shows the source location where the error occurred. use arrows to go up and down the stack, the mouse wheel to scroll, and click on table variables to expand them. you can also press space or x to toggle small-font mode.

Cart #error_explorer_example-0 | 2024-04-26 | Embed ▽ | License: CC4-BY-NC-SA
4

download: https://github.com/snowkittykira/picotron-error-explorer

to use it, download error_explorer.lua and include it after defining your _init, _update and _draw functions.

it replaces these functions which wrappers that call them in a coroutine, so that when errors happen the coroutine can be inspected. on error, it does its best to reset the graphics state, but there might still be cases where this fails so let me know if you run into any issues!

it relies on the following functions from lua's debug library, so i hope they will continue to be available:

  • debug.traceback
  • debug.getinfo
  • debug.getlocal
  • debug.getupvalue

(note: please use the github version and not the one in the example cart, as it'll be more up to date)

P#147383 2024-04-26 17:36 ( Edited 2024-04-26 17:37)
[ :: Read More :: ]

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

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

Welcome to hwd2002's Elite for the Pico-8 home console!

This game is intended to be less-grindy and slow re-imagining of the old Elite, suited more for an evening of fun rather than a week of space-trucking.

I'd recommend a 80's style synthwave playlist to go along with it. My personal choice is Soundscape by Savii

Game Manual

I should mention this out of the gate: This isn't a faithful port of the original Elite. This is just my own idea of what makes a fun game. If you want a completely faithful port, see Jamesedge's Picolite.

About Development: Four months ago I downloaded the NES Elite. While it was very fun, I desperately wanted a higher framerate. Now here I am, with a 60fps version that I made myself! Since I ran out of space on my cartridge I am going to bite the bullet and call the project finished.

I'm 100% sure there are weird bugs I've never even thought of, so please ask where the bathroom is.

About Worlds: Trade will affect the prices of certain commodities, as well as the Tech Level of the systems traded with. Additionally, Bounty Hunting and Pirating will affect the Piracy level of a system.

About Trade Items: Every trade item now grants a good amount of profit, if you know where to buy and sell. Missiles are also doubly useful as a trade item and a way to re-arm your ship cheaply.

About Ship Stats: I tried to make each ship's characteristics match the original game's as much as possible, but it isn't perfect as the stats aren't 1-to-1. Ships now have shield, pitch, roll, and yaw values as well as their base energy, speed, and weapon stats. Most ships can't yaw anymore, so dogfights are more interesting IMO.

About Encounters: There is not one, not three, but two special encounters in the game. These are slightly different from other Elite versions as they both use mechanics unique to this game. There are also about 7 minor special encounters, such as Rock Hermits and Ace Pirates.

About NPC AI: As with all of my games, it seems I overcomplicate my NPCs. There are a significant number of variations an NPC pilot can have. The same type of ship might fight differently depending on the pilot's stats.

About Secrets: There are a few unique and bizarre things found in the game. There are no hidden quests or special things you need to do in these cases. Pico8 just doesn't have space, sorry!

About Post-Game:

The ability to buy ships was added later in development and doesn't work well with the progression I wanted. Therefore I've hidden it behind the Elite Rank.

P#147375 2024-04-26 17:18 ( Edited 2024-04-26 19:56)
[ :: Read More :: ]

this crashes picotron when run:

function _init ()
  clip()
end
P#147388 2024-04-26 17:12
[ :: Read More :: ]

Been playing with modifying Picotron instruments, and sometimes we'd like to add a second carrier oscillator to an existing one while feeding it through the same filter/echo/shape effect. Right now, the only way to do that is to remake the effect manually after the new oscillator and then delete the old one.

P#147378 2024-04-26 14:52
[ :: Read More :: ]

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

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

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

P#147376 2024-04-26 14:23 ( Edited 2024-04-26 14:25)
[ :: Read More :: ]

Cart #livesabeach-1 | 2024-04-26 | Code ▽ | Embed ▽ | No License
1

P#147373 2024-04-26 13:26
[ :: Read More :: ]

EthosLab on Hermitcraft is making a clone of Frogger in Minecraft, so I thought why not make a clone of Etho's minecraft frogger in Picotron.
(Very early wip)

Cart #ethofrogger-0 | 2024-04-26 | Embed ▽ | No License

P#147365 2024-04-26 09:57
[ :: Read More :: ]

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.

This is a basic proof of concept editor, and next up I will probably start to face the horror of adding collisions to this bendy abomination. Also note that my code is probably poorly written so if you want to use it for something you may consider changing some of it to make it take up less valuable space.

Controls:
Directions move the cursor
X implements the current mode
O changes the mode
0-add points of binary
1-delete points of binary
2-edit left side intercept
3-edit top intercept

P#147358 2024-04-26 07:02 ( Edited 2024-04-26 07:07)
[ :: Read More :: ]

Cart #pix-0 | 2024-03-11 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

P#147341 2024-04-25 22:26 ( Edited 2024-04-25 22:26)
[ :: Read More :: ]
P#144895 2024-04-25 22:15 ( Edited 2024-04-25 22:15)
[ :: Read More :: ]
P#147334 2024-04-25 21:53 ( Edited 2024-04-25 21:54)
[ :: Read More :: ]

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


based on Sebastian Lague video on how to read a font.
still very early, but got to at least render a missing character glyph.
currently just drag and drop ttf font file onto window.

P#147324 2024-04-25 20:40
[ :: Read More :: ]

Cart #colours-1 | 2024-04-26 | Embed ▽ | No License
3

A simple and small colour reference utility intended to be ran as a widget, but can still be ran windowed.

To add to your tooltray as a widget add the following line to the /appdata/system/startup.lua

create_process("/filepath/to/Colours.p64",
{
    window_attribs = {workspace = "tooltray", x=0, y=0},
})

change "/filepath/to/Colours.p64" to wherever you save the cart on your system.
I would recommend saving it as /appdata/tooltray/Colours.p64

This cart doesn't have a license because it's so simple that I don't think it feels right to require any attribution to me if you ever re-work this cart into something of your own.

Changelog:

v1.1

  • Changed the font to the Pico 8 font to slim it down a bunch more. If you want the older slightly chunkier version load #colours-0 instead. Other than the font and size changes, there's no other difference between the two.
  • also covered up the instructions on the cart image like an idiot, but I guess that will just have to rectified in the next version.
P#147325 2024-04-25 20:33 ( Edited 2024-04-26 21:24)
[ :: Read More :: ]

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

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:
    cstore(0x0000, 0x0000, 0x3000, "mapshuffle.p8")
  • Now open mapshuffle.p8. The map and sprites should be copied over.
  • Shuffle the map to your heart's content.
  • Once it's done, type this line into the console of mapshuffle.p8, replacing "yourcart.p8" with the name of your project.
    cstore(0x1000, 0x1000, 0x2000, "yourcart.p8")
  • Finally, open your project back up and the shuffled map should be imported.

Also, credits to Maddy Thorson and Noel Berry for making Celeste Classic, which is the default map used in MapShuffle.

P#147322 2024-04-25 19:26 ( Edited 2024-04-25 19:34)
[ :: Read More :: ]

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

My Apple II to #picotron glorious arcade smooth 60fps power portation of this 1981 Nazir Gebelli's classic.

Watch attract mode for instructions!

Ejoy!

rev 2:added gameplay demo to attrack. Humans show up in radar.

P#147314 2024-04-25 16:45 ( Edited 2024-04-26 16:01)
[ :: Read More :: ]

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:

the confusion is that we often see code like this to explain prototypes (or «class», but lua doesn’t have classes):

goblin={sp=42}

function goblin:new(obj)
 setmetatable(obj, self)
 self.__index=self
 return obj
end

why do we need to add goblin.__index = goblin?? it’s its own prototype? but it’s a metatable? both?!
the thing is, we don’t need that. a metatable is only strictly required to implement metamethods to define what operators do. when we want a prototype, {__index=proto} is the metatable, and proto the prototype. clarity at last!)

hope this helps! please ask follow-up questions if needed, try to implement your own cart and share it!

P#147311 2024-04-25 16:35
View Older Posts