Hi,
just want to show my work of the last week /maybe I will start a dev blog here...
I am trying to create a complete super mario bros. remake in pico-8, with all the 32+levels.
Most of the functionality is already implemented:
|
Looking forward to put everything together and show a playable demo soon. Just a few little things for the first world are missing:)
Any feedback or criticism is highly appreciated!
Maybe someone can contributing sound effects/music..
That would be great, because midi to pico8 sounds weird: \
Holy cow! :D
I like doing remakes, but this looks amazing!
Great effort!
This looks genuinely amazing! The spritework is easily one of the best on PICO-8 I've seen! It's weird being hyped for a PICO-8 game!
As a suggestion, since the levels will be compressed (and I'm not familiar with the px8 library), how about publishing some kind of level editor & packager with developer mouse support like Super Mario Maker?
Keep up the good work!
Thank you for the comments, everyone!
>> how about publishing some kind of level editor & packager with developer
>> mouse support like Super Mario Maker?
I try to keep things simple. Currently I create one cartrige per level and using another that loads all the maps and compresses them to a single file.
Enemies are placed by hand in code, but I will encode this in strings, due to the token limit.
btw: added moving turtle shell collisions
I'm really excited to see this happen! Not only does it look completely kickass, but I have a design doc (for future work) that maps out 4 layouts and uses scripts to give them variation, and I'd like to see how it plays out on this engine.
Looks excellent!
looks great! Loving the animations and art. Btw that Mario Maker idea would be awesome even if you release it as a separate cart. Excited! :D
Duuuude I want to play this so bad, hurry uuuuup! Just kidding (actually, no I'm not - hurry up :P)
missing tiles for level 3 added... it becomes tight :| everything needs to be more packed and the title screen needs to be moved to source.
How are you storing the levels? If it's just the normal map data, I'm assuming this is very shortened.
The maps are reproduced 1:1, that's why I store the data in tables.
Rendering is done manually:
function draw_map(scroll_x) local fx = scroll_x /8 local startx = max(1,flr(fx)) local endx = min(tilemap_width,startx+17) for iy = 1, 15 do for ix = startx, endx do local i = tilemap[iy][ix] if i > 0 and i < 255 then spr(i, ix*8-8, iy*8-8) end end end end |
problem is the enormous size of all 32+ levels... I think overall there are ~500 screens. The plan was to use the whole 8kb of map memory , but now are only 4kb left... seems I have to use strings in the source code.
The size of the mapdata of all levels might be around 100kb, compressed are still ~18kb left
He's using the px8 library for the level data. https://www.lexaloffle.com/bbs/?tid=3930
You can probably remove about half of the tiles needed for the fnish castle. There're a lot of duplicates/very similair tiles in there.
yes... castle is a placeholder(snes rip).
just made a new one.
Only 10 of 24 tiles, and with modular design:
Hmm, the darkened areas above the entrance look wrong :\
last but not least
Looks very good! But isn't the big N very adamant with copyright control nowadays? I don't know if there is room for "fair use", like with Lucasfilm and Star Wars fan movies...
Thanks.
I think it's no problem as long as the game contains no ripped content....
I made a collage from the first world:
I'm starting to like to create pixel art with pico-8...
At the beginning the background looked like this, but I decided to remove the background, because of the restricted palette and because of performance
Someone told me that this would not look good.. can not judge that.
What do you think?
btw: I am a programmer, not an artist ;)
It is a very detailed background, but it's also noisy. Not saying you're bad at art (better than me XD), but Super Mario Bros. does benefit from a "clean" background.
As for any issues from the Nintenders (Nintendo Defenders? I'm bad at combining words), worst case scenario, you'd have to change the art/music.
yes, it's probably all the dithering that looks weird...A few more shades of blue would make it easier :\
Looking pretty sweet. I think the color choice is the odd thing; the magenta bleeds in with Mario, where golds would make him stand out better. Greens could too, but then there's Koopa Troopas.
A little update here:
I created a little map editor, which stores compressed levels using a custom RLE compression... I am using only the first 93 Tiles for mapdata, in order to save the data without overhead in strings... One level is compressed to ~500 from 2400 byte(4800 when using the whole byte range), for example.
~]!78~&!78~%!78~/!78~+!78~/!78~D!78~.!78~:!78~7!GH~&!GH~%!GH~/!GH~+!GH~*!78~$!GH~D!GH ~.!GH~:!GH~L!78~>!GH~,!78~6!78~.!78~L!78~@!GH~,!~$B~=!GH~6!GH~.!GH~3!78~8!GH~,!~*B~$!~$BA~ (!A~x!A~+!GH~l!BAAB~~!~~!~~!~O!A~–!A~$!BABAB~;!56~0!BAB~0!A~&!A!A!A~&!B~)!BB~'!C!!C~+!C!!C~5!BA AB~I!56~)!EF~b!CC!!CC~)!CC!!CC~W!56~(!EF~)!EF~$!)*+~5!)*+~0!)*+~-!)*+!!~$C!!~$C!!)*+!~$C!!~$C~ (!)*+56~&!)*+~*!56~7!EF(!EF~)!EF~$!9:;~5!9:;~0!9:;~-!9:;!~%C!!~%C!9:;~%C!!~%C~'!9:;EF~&!9:;~*!EF~ V1~$!~*1~$!~Y1!!~x1~$!~*1~$!~Y1!!~C1 |
The decompression routine consumes only 61 tokens.
Little update:
I am currently fighting against compressed code size. It's really annoying, that a lot code obfuscation is necessary in order to make space free.
Tokens: 6909/8192
Program chars: 4072/65536
Compressed: 15209/15360
I will add more levels the next days. You will prbably need a gamepad... at least I can only play with gamepad;)
btw: how do I add a title??
Looking good so far! Is it just the one level right now? To add a title, I think you can do that when you submit the cartridge, there's a textbox that asks about the title.
happens to me every time...
edit your post, then edit the cart name at the bottom and click "submit".
Thanks. Yes, just one level.... Compressed code size was exceeded :(
Before I add more levels, I have to remove all comments and rename all identifiers. Unfortunately picoTool's luamin does not work.
But I will implement the missing features first. Next points on todo:
- pipes
- paratrooper movement controller
- pulley platforms
Apart from that, pretty much everything is implemented. Creating levels is really fast and straight forward, using my level editor.
This is really impressive for the Pico 8. And you're definitely right, I couldn't play it with my PC and a keyboard, or my PocketCHIP and the clicky keyboard...had to use a USB SNES controller to get anywhere.
Can't wait to see this go further.
Thanks for playing!
I am very interesting in feedback regarding the controls. I increased the gravity a little bit, and compared to super mario world it feels all a little more direct... the original is really very spongy.
I don't know whether I should recreate the SMW physics 100%, or a simplified custom one ??
btw: added crouch animation & pipes:
I'm cool with the simplified physics. They aren't 1:1, but this doesn't need to be perfect to be a valid engine.
There's also this thing called "cart linking;" so you can link up to 16 carts together. That said, you can take this (the first world), and use it as a template to construct the other worlds, and just "link" from one cart to the next. Now it's just levels, and even 6 of those are copypastes, right? Plus you can squeeze in Lost Levels.
Multiple carts do not work on BBS... There is enough memory for at least 10 levels, when using luamin.
Dont know what you mean with copypastes...
I think I've totally underestimated this. Always one more triviality needs to be implemented... looking forward to put everything together
token limit is very annoying.
using
array"1,2,1,2,1,2,3,1,2,3,1,3" |
instead of
{1,2,1,2,1,2,3,1,2,3,1,3} |
and changing constants from
entity_type{item=1, enemy=2,...} |
to
tentity_item = 1 tentity_enemy = 2 ... |
this one is nice
local newAnim = mp.level == 0 and (e.vx == 0 and mp.anim_stand_small or p.anim_walk_small) or (mp.duck and mp.anim_duck or (not e.grounded and mp.anim_jump_big or (e.skidding and mp.anim_skidding_big or (e.vx == 0 and mp.anim_stand_big or mp.anim_walk_big)))) |
also had to remove running across narrow pits... saves ~150 tokens
10 levels sounds quite good actually. Love the artwork!
I noticed it's better to create your cart by first making the engine, creating the start and end and only then gradually filling all the sprites, levels, AI etc until you reached the limits of your cart.
What tool are you using there? Or is that custom?
What did you use to create that map editor? I've been interested in making one for a while and any information on yours would be helpful.
I used BlitzMax + MaxGui... Bad idea at all. If you are on Windows, I whould recommend c# + Winforms;
Dropping by to leave a word of encouragement. If Nintendo comes after you with a C&D (cease and desist), be sure to have backup assets to work from!
I like the smooth camera panning. Very slick. :D
This has been about as far as I've gotten on a thing before, when the token or code limit kills me. This is a VERY ANNOYING PLACE to get killed by the token/code limits.
It's unbelievably frustrating.
I think that instead of doing a recreation you should do your own levels. This way it's like the original, but it feels new.
Was HERE:
https://www.lexaloffle.com/bbs/?cat=7
Clicked the rocketman icon, brought up PICO, brought up the PICO initialization screen, then PICO said "Could not access cart."
And ... what happened to PHG user above ?
[Please log in to post a comment]