This game was made for the Minigame A Month May 2024 for theme WIZARDS!
Gameplay:
Move around on the field to avoid the relentless attacks of the mages.
⬅️⬇️⬆️➡️ - Move around on the board.
❎: X - Activates Currently held Item.
🅾️: C or Y/Z - Switch your current color.
Stand on appearing attack spots with the right color to hurt the mage of that color.
Items:
Sands of Time: Freezes time for the world. You are allowed to move, but nothing else.
Chromatic Star: Allowes you to become invulnerable, and hurt any mage while stepping on attack spots.
Wizards:
Each wizards has a unique logic behind their patterns as three distinc phases with them. Figure out who does what an plan ahead!

I've struggled with collision for a long time, but I've discovered/learned two collision types that can be implemented into just about any game genre.
This is my first time writing a tutorial so please any advice or mistakes a must.
Some background:
PROBLEMS AND SOLUTIONS OF THESE COLLISIONS WILL BE LOCATED AT THE BOTTOM
OBJECT-TO-OBJECT COLLISION
This collision type involves four to eight parameters.
- A first X value (
x1)
Knucklebones



Controls
⬅️⬆️➡️⬇️ Move cursor ❎/X or 🅾️/Z Select
Rules
Each player has a 3x3 grid, organized into three columns. They take turns rolling a die and placing it into an open spot in their grid. If there is a matching die in their opponent's matching column, the opponent must remove all matching dice in that column. When one player's grid is full, the game is over and the player with the highest score is the winner.
Scoring
Each column is calculated separately, then added to the player's total score. If there are matching dice in the column, their values are added together and multiplied by the amount of matching dice.

I am working on compressing .p8 files.
That's all you need to know.
Currently it is only saving characters by only advancing tokens once.

As far as I know, every variable is returning as nil. That doesn't mean that it is. I cant get far enough into my game to figure out more
I am unsure what i did. I have gone through my code multiple times and i am just done currently. Any help or advice would be greatly appreciated.
[hidden]
-- game loop
function _init()
gamestart()
_upd=update_game()
_drw=draw_game()
end
function _update()
frm+=1
_upd()
end
function _draw()
_drw()
end
function gamestart()
frm=1
col=false
----------------
--menus
----------------
men_main={
items={"start game","controls"},
menx=10,
meny=10,
curx=2,
cury=10,
menoff=7
}
----------------
--player
----------------
p={
sp=1,
x=48,
xo=0,
y=40,
yo=0,
w=8,
h=8,
ymt=0,
spd=1,
flp=false,
dx=0,
dy=0,
--gravity/collision stuff
hbx1=1,
hbx2=6,
hby1=7,
hby2=1,
grv=0.2,
acc=0.5,
landed=false,
jumping=false,
running=false,
falling=false,
dashing=false,
rolling=false,
attacking=false,
itemgrab=false,
--animation (in sprite #)
frame=0,
anim_idle=1,
anim_walk={1,2,3,4},
anim_jf=5,
anim_atk={1,4,6},
anim_dashing=8,
anim_rolling={9,10,11,9},
anim_attacking=6,
anim_itemgrab=7,
--game stats
mhp=10,
chp=10,
atk=1,
def=1,
agi=1.1,--1.1 beacuse fucking math
}
inv={}
abilities={}
----------------
--tiles
----------------
--collision
t={--x1=l x2=r y1=t y2=b
wall={x1=4,x2=6,y1=0,y2=7},
floor={x1=0,x2=7,y1=4,y2=7}
}
end
-->8
-- updates
function update_game()
--player---------------------
-----------------------------
p.frame+=1
if p.frame==5 then
p.frame=1
end
if (btn(⬅️)) then
p.dx=-1
p.flp=true
p.running=true
elseif (btn(➡️)) then
p.dx=1
p.flp=false
p.running=true
else
p.dx=0
p.running=false
end
--collisions & gravity
local ly=p.y
p.dy+=p.grv
--check collision left and right
if p.dx<0 then
if collide_map(p,"left",0) then
p.dx=0
end
elseif p.dx>0 then
if collide_map(p,"right",0) then
p.dx=0
end
end
--jump
if btnp(⬆️)
and p.landed then
p.dy-=2
p.landed=false
end
--check collision up and down
if p.dy>0 then
p.falling=true
p.landed=false
p.jumping=false
if collide_map(p,"down",0) then
p.landed=true
p.falling=false
p.dy=0
p.y-=((p.y+p.h+1)%8)-1
end
elseif p.dy<0 then
p.jumping=true
if collide_map(p,"up",0) then
p.dy=0
end
end
p.x+=p.dx
p.y+=p.dy
--animation
if p.jumping or p.falling then
p.sp=p.anim_jf
elseif p.running then
if frm%5<=4 then
p.sp=p.anim_walk[p.frame]
end
elseif p.attacking then
p.sp=p.anim_attack
else --player idle
p.sp=1
end
end
function update_mm()
upd_menu(men_main)
end
-->8
-- draws
function draw_game()
cls()
map()
spr(p.sp,p.x,p.y,1,1,p.flp)
camera(p.x-60,p.y-60)
print(p.dx,1+p.x-59,1+p.y-59,8)
print(p.dy,9+p.x-59,1+p.y-59,8)
end
function draw_mm()
cls()
menutext(men_main.items,men_main.menx,men_main.meny,8)
drw_menucur(men_main)
end
-->8
--functions
function does_tile(flag,x,y) -- bool
tile=mget(x,y)
has_flag=fget(tile,flag)
return has_flag
end
function collide_map(obj,aim,flag)
--obj = table needs x,y,w,h
--aim = left,right,up,down
local x=obj.x local y=obj.y
local w=obj.w local h=obj.h
local x1=0 local y1=0
local x2=0 local y2=0
if aim=="left" then
x1=x-1 y1=y
x2=x y2=y+h-1
elseif aim=="right" then
x1=x+w-1 y1=y
x2=x+w y2=y+h-1
elseif aim=="up" then
x1=x+2 y1=y-1
x2=x+w-3 y2=y
elseif aim=="down" then
x1=x+2 y1=y+h
x2=x+w-3 y2=y+h
end
--pixels to tiles
x1/=8 y1/=8
x2/=8 y2/=8
if fget(mget(x1,y1), flag)
or fget(mget(x1,y2), flag)
or fget(mget(x2,y1), flag)
or fget(mget(x2,y2), flag) then
return true
else
return false
end
end
-->8
--menu
function startmenu(menutable)
end
function menutext(menutable,x,y,off)
for i=1, #menutable do
print(menutable[i],x,y+menutable.off*i)
end
end
function drw_menucur(menutable)
local x1 = menutable.curx-8
local y1 = menutable.cury-10
local x2 = x1+12
local y2 = y1+6
rectfill(x1,y1,x2,y2,7)
end
function upd_menu(menutable)
if btnp(⬆️) then
menutable.cury-=7
end
if btnp(⬇️) then
menutable.cury+=7
end
-- if btnp(❎) then menuacc(menutable)
-- if btnp(🅾️) then menuden(menutable)
end |

I've been trying for a day to figure this out and I can't. There's barely any information online about this. Although it feels like everyone knows it but me.
My idea is on initialize to run a nested for loop and add any enemies to a list. And in the update move them.
I did this and it worked! But it incremented in grids. There's no actual code of this since I deleted it, but I could easily reprogram it, if someone asks what the block was.
This game is a WIP prototype with a few known (but rarely game-breaking) bugs.
Progression is not persisting between sessions here on Lexaloffle, so I updated the game to unlock level select. I recommend trying to beat each level before progressing, but not everybody has time for that!
Concept
Spoiler alert: these billiards are not regular (and they certainly aren't perfect). I wanted to take the game of billiards, which I've always enjoyed both in real life and in video game form, and turn it on it's head a little. As you play through the 25 levels in this prototype, you will encounter more and more... irregularities.
Story
Bill Iards is a perfectly regular person. He is perfectly happy with his perfectly regular life. One day, a man in a suit knocks on his door, bringing news of the passing of his estranged Uncle Whiz. Bill had no recollection of such a relative, but in any case, Uncle Whiz had willed to him one item: a billiards table.

This is my second 3D game demo. But I am not finished it yet.
control:
common mode:
press ⬅️ to turn left
press ➡️ to turn right
press ⬆️ to move forward
press ⬇️ to move backward
press 🅾️ to shift to left
press ❎ to shift to mouse mode
mouse mode:(only available on splore)
use your mouse to turn around
press Key_S to shift to left
press Key_F to shift to right
press Key_E to move forward
press Key_D to move backward
press ❎ to shift to common mode
Done:
--basic raycasting
--textured wall
--static sprite
plan:
--animated sptite
--moving enemies
--shoot game
--dialogue
Bite-sized Celeste Classic mod.
Requires no tech.
Intermediate-Advanced difficulty. Designed with non-linearity in mind.
The character featured is Cash, designed by Lash sleeper. I do not own them.
This card was designed under 3 days for the artfight 2024 event.
v1.2 : Changed menu music (again)
v1.1 : Changed menu music
v1.0 : Initial release

Bomber for Picotron is an enthralling Flight simulator, where you can relive the battle of Poland, Ohio in the American Civil war, as one of the brave RAF pilots which fought in the battle of Poland, Ohio in the American United States of America North American American Civil War.
Vector Art: https://www.lexaloffle.com/bbs/?tid=141774
Font: https://www.lexaloffle.com/bbs/?tid=140803
(Piss: It is hard to win; you need to employ the same strategy used by John Earl Grey, captain of the RAF Squadron fighting in the battle of Poland, Ohio in the American Civil War)
(Piss Piss: Win + Loss screens for the battle of Poland, Ohio in the American Civil War do not work in the browser)

Is test of worm
Code
a={}
for i=1,20 do
b={}
b.x=64
b.y=64
add(a,b)
end
function _update()
if (btn(0)) a[1].x-=1 sfx(0)
if (btn(1)) a[1].x+=1 sfx(0)
if (btn(2)) a[1].y-=1 sfx(0)
if (btn(3)) a[1].y+=1 sfx(0)
for i=2,20 do
a[i].x=a[i].x*0.8+a[i-1].x*0.2
a[i].y=a[i].y*0.8+a[i-1].y*0.2
end
end
function _draw()
cls()
for z in all(a) do
spr(1,z.x,z.y)
end
end |





1 comment








