Games > 8 BIT PANDA


A panda platformer
made by Bruno Oliveira
uploaded by btco
added:
download cartridge

51


8 Bit Panda is a classic-style platformer for the TIC-80. You can move, run, jump and get powerups (and occasionally fly planes!). It has 17 levels distributed across 6 major areas (isles). Each area has different enemies and difficulty. The game is saved every time you complete a full area (after level 3 of each isle).

This project is open source and available at:
https://github.com/btco/panda

Follow me on twitter: @btco_code (http://twitter.com/btco_code)

Comments


trelemar

This is really well done! I can see you put alot of time into the world map and menu screens. It really helps make this game shine.

btco

Thanks! It was fun to build :) I almost ran into the 64k limit for code, I'm at 63.5kB!

StinkerB06

How do I move to the next level?

StinkerB06

What part of the code is the number of lives the player starts with?

btco

Line 564 defines the # of lives you start with. Also, there's a cheat code (hold A, then press up 4 times, then 2 twice), it will take you to a debug menu where you can choose "end level" :-)

btco

Sorry, I mean "hold A, press UP 4 times then DOWN twice".

BMyers

I just want to say, this game is great, good job! I really hope you make other games.

AlRado

Good job!

Jackj106_Games

pro tip:
i would use a system like this to make the jumps:
jumpspeed=4
if jump==1 then jumpy=jumpy+jumpspeed jumpspeed=jumpspeed-0.25 end

this makes the player have a more realistic trajectory, as it makes it slow down at the top and speed up as it falls


btco

Thanks!

Has anyone managed to beat the game yet? What level are you on? I'm curious if I made it too easy or too difficult.

Kolp4k0v1ch

Good game man!

Tonic

Okay, we have super mari... I mean 8-bit panda. Now waiting for legend of zola full version.

Matheuz700

Incrível, você é um bom criador de jogos, estou no 3 último nível

btco

@Matheuz700: Ah, sim o 3-3 e' meio dificil, depois vem o mundo 4 que e' divertido, tem avioes. :)

StinkerB06

How the fuck do I remove every single enemy in the ROM?

StinkerB06

How the fuck do I remove every single enemy in the ROM?


StinkerB06

How the fuck do I remove every single enemy in the ROM?


btco

@StinkerB06: If you want to remove the enemies you can go to the map editor and replace them with the empty tile (0). But what if what you want is to be invulnerable to the enemies, there's an easier way: do the debug menu cheat code (hold A, press UP 4 times then DOWN twice), then select "Invulnerable" and press Z. Then close the menu. You will be invulnerable to enemies. But can still fall into pits, so watch out!

StinkerB06

But what point of the game do I go to to enable the cheat code anyways?

Jackj106_Games

@btco, are you going to make your 3d rendering engine available to the public? (i know this is unrelated to this game but i dont have twitter so...)

Moico100

Terminei todos niveis demorou um pouco parabens melhor jogo na minha opinião amo mt esse jogo

Moico100

Deixei meu joinha :)

btco

Yeah, when the 3D rendering engine is stable I'll post it here!

btco

@Moico100: Obrigado!! Parabens por terminar o jogo!

Matheuz700

@ Btco you have other games, if you have other games could show the links thanks :)

btco

I'm working on another game, a 3D FPS, here's a GIF of it: https://twitter.com/btco_code/status/908521605038473216
I'll share it here when it's ready.

Moico100

Enjoyable !!! I like this gif also let me know when it's ready @btco you're good when it comes to creating games :)

Moico100

I'm going to give a taste :)

LlamaLlord

There's seriously a reason why this is the number one game right now! This is amazing!!!

Spacebyte

Really cool game, how much time did you spend with?

Spacebit

Really cool game, how much time did you spend with?

btco

Thanks everyone :-) @Spacebit: I spent about 4 weeks (nights and weekends). About half the time was designing and play-testing the levels. The engine itself was mostly ready in about 2 weeks.

StinkerB06

Will you represent keys Z X A S as buttons A B X Y?

btco

Yeah, this is a bit confusing for people playing the game on mobile. All the keys reflect the desktop key bindings. Hmm maybe the TIC API should have a way to detect what the controls are, so that the right keys could be shown on the screen. I'll see what I can do.

oohun

hey btco plz give me some cheats

btco

@oohun: To get to the cheat menu: hold A, press UP 4 times then DOWN twice. This will open the debug menu, where you can get invulnerable, fly around the level, warp to arbitrary levels, etc, etc.

gemSquared

Wait... so this guy even adds a cheat code to his already amazing game... * facepalm * Why didn't I think of making a warp command... debugging would've been so much faster xD

btco

The cheat codes were there since the beginning, that's how I debugged stuff. I also have "editor-only" code, stuff that only gets triggered through the debug menu to help me with level editing (packing and unpacking levels, for instance). I think having a debug menu since the beginning helps a lot with development.

BabyGhast6

lol best game


Moico100

@btco você é brasileiro?

btco

@BabyGhast6: thanks!!
@Moico100: sim, sou brasileiro!

StinkerB06

@btco https://tic.computer/play?cart=386

Ornitorrinco

Me ensina a criar um jogo
Ou faz um vídeo pro YouTube

StinkerB06

For people who are used to gamepad buttons ABXY instead of keyboard keys ZXAS

Hold X, then press up 4 times then down twice.

StinkerB06

I covered the Level 1 theme on Atari PoKey: https://www.youtube.com/watch?v=HgXDGv1yRV4

snrf

Very nice, but jumping is a bit floaty!

btco

True! A lot of people brought this up. It's too late to fix now but if I ever do 8-bit Panda II, I'll improve the jump :) Maybe use acceleration on the way down.
PS: the reason I didn't do it is because I use the fact that the player falls only 1 pixel/frame as a hack for a bunch of physics things.

btco

What would be a cool set of features if I were to do 8 Bit Panda 2?

StinkerB06

Probably bosses and bonus levels. 8-bit Panda 1 (i.e. this cart) is a bit lackluster in my opinion.

Also, since TIC-80 is a step closer to being a "16-bit" fantasy console, why not call it 16-bit Panda? There's a $5 (i.e. pro) version of TIC-80 that has 8× the room of assets due to bankswitching.

CameramanTv

Good job!

CameramanTv

3000+ linhas de codicos e para poucos hein!

btco

Thanks!
Yeah, in the end I was constantly running up against TIC-80's 64k code size limit.

StinkerB06

@CameramanTv What brings you to TIC-80?

DanAtuch

How do you stop players from getting to the next level without finishing previous?

StinkerB06

@DanAtuch Any level can be finished at any point from the red (or gold if you're on the last level) finish or the debug screen. The more leaves and food you eat, the greater the score gets.

I mean, those "leaves" should've been called bamboo. Because they're green and a panda's most iconic food of that color is bamboo. They do even look like it shining.

@btco There's a $5 version from Nesbox on itch.io. You can have 512 kilobytes broken up into 8 blocks of 64k each. There's also 8 different banks for everything else, and only one of each can be used at a time per frame.

btco

@DanAtuch: you mean on the world map? I store (in PMEM) the highest level that the player has cleared. Then when the player moves on the map I just compare to that number. If the level the player is on is greater than that number, then they can't proceed and can only return from when they came, not continue on to the next level.

btco

@StinkerB06: true! the leaves should have been called bamboo and the bamboo should have been something else, but it's too late to change now :)

Does bank switching allow for more than 64k of code? No, right?

Sammy6

Awesome game! I'm actually making a similar game, and I was wondering how you detected where the enemies are and when you hit them. If you could tell me that would be awesome.

btco

The core logic to hit enemies is rectangle intersection. If you know the player's position and you know the enemy's position, then you check if those two rectangles intersect. If they do, the player hit the enemy. Here's the function in the 8-bit panda source that does this (RectIsct):

https://github.com/btco/panda/blob/master/source/panda.lua#L3265

Notice that it takes two rectangles, each of which has x,y,w,h. These rectangles are generated by starting with a collision rectangle and then calling RectXLate on it to translate it to the right position:

https://github.com/btco/panda/blob/master/source/panda.lua#L3260

The collision rectangles for the various types of things are in the CR global:

https://github.com/btco/panda/blob/master/source/panda.lua#L288

So for example, the player's collision rectangle is CR.PLR. So I translate it with RectXLate to the player's position, then do the same with the enemy's rectangle, then call RectIsct on those two, and that lets me figure out if the player was hit or not.


Post comment