Goose Platformer 3D banner

Goose Platformer 3D

16 devlogs
26h 1m 53s

A 3D platformer game with a level editor, and a goose. Made in Love2D with the g3d library.

Nibbles

im starting to create the properties window for platforms! this will let you see and change all the properties on platforms, which right now consists of position, size, and a lava toggle.

next, i plan to add more properties to platforms that will be editable with this menu, including material, color, and collision!!

0
Nibbles

i added duplicate, copy, cut, and paste actions! … not much else to say about it :P
i also did a minor refactor to how platform data is stored/created, so its now much easier internally to create and use platform data, which will be useful for when i add more properties to platforms, such as color, material, transparency, or collision!!

3

Comments

fireentity
fireentity 3 days ago

haha dev log

fireentity
fireentity 3 days ago

very nice editor nibbles

Nibbles
Nibbles 3 days ago

Thhank you val!!:3

Nibbles

still just adding more features to the editor! this time i added:

  • multiselect! if you hold shift when selecting platforms, it will let you move/scale all of them at once!
  • right click menu! this will be used to have stuff like copy, paste, duplicate, and delete. right now all i’ve added to it is delete, so i’ll be adding the others after!

also you can still use keybinds to do the same things in the right click menu, so you can press delete to delete, or ctrl+c to copy! (when i add that :P)

0
Nibbles

i added undo/redo to the editor! this was a struggle… getting the logic right, the storing of platform data more efficiently to save in a history table, and more. especially getting the logic to work, there were so many cases where you’d undo into a mix of states or some history would just get completely removed when it shouldn’t… but it works perfectly now!! :D

i also did a few other small changes, including:

  • made move/scale handles take selection priority over other platforms
  • added ability to scroll mouse wheel to change camera speed in editor
  • making wallkicking and camera adjustment better after the optimizations i made yesterday
1

Comments

fireentity
fireentity 4 days ago

goose

Nibbles

ok! the game runs a lot better now!
what i did was make it so whenever you enter play mode, a mesh is made specifically for collisions that takes the vertex data of each platform and combines it into one, which makes it so i only need to do one collision call instead of one for each platform!
(well, technically i have to do 2, theres a seperate mesh for lava platforms to detect those, but thats not really an issue)

in the video, i show the performance before these changes (40fps with liike 50 platforms) and after (still rocking at basically 180fps, which is my refresh rate!!)

i also improved the collision a bit! (please ignore me falling through the platform in the optimized version i SWEAR thats fixed now this recording was before the collision improvements) but it should be a lot more difficult to straight up fall through platforms and walk into platforms without any effort

0
Nibbles

started the ui for the editor, which for now is just a topbar
also added the “add platform” tool, which lets you create platform ( Shhockeer!!!!)

also also the game is getting stupidly laggy. i also did an optimization for the editor which only includes platforms that are in range for the raycasts to be included in the raycast

however, the gameplay itself is still really laggy. with like ~20 platforms, it goes down to 40 fps, which causes lots of major issues such as. Collision not working. you literally just fall through everything when the game slows down this much. so now im pivoting my focus to optimizing that stuff

Attachment
0
Nibbles

added the scale tool to the editor, and also added handles to the other side of the axises!
this once again required a bunch of vector math. everything is vector math. i cant escape it.

0
Nibbles

added a move tool to the editor!! pretty self explanatory, it lets you move stuff when a platform is selected (shocker)
once again, this consisted of more suffering with vector math, but i eventually got it to work!! hardest part was definitely figuring out how much to move the platform and in what direction based on the delta of the mouse movement, that took a while to figure out how to do properly :P

4

Comments

fireentity
fireentity 5 days ago

dev log

Jahaan
Jahaan 5 days ago

Are you doing all this from scratch or with a graphics library, Idk what Love2D is, and I’m kinda doing the same thing as you, and I just have a question, is it okay if you can send your slack ID so I can dm

Nibbles
Nibbles 5 days ago

thank !

Nibbles
Nibbles 5 days ago

@jahaan the library im using for the 3d rendering is called g3d! it gives you the bare essentials to do 3d rendering in love2d (which is mainly for 2d game development in lua, but. I can do whateverr :P), which means it only gives you the ability to render models with textures, and gives you some basic collision functions. also my slack id is U079E6V7R28 !!

Nibbles

i think every single devlog from here on out will consist of me going through hell and back. Goog

im starting the editor now! it doesnt actually let you edit now. but im getting the foundations
theres a different camera system, which lets you fly around and hold right click to rotate around, like most game engines and stuff
also started the ability to select stuff and whatnot! which is where most of the time went to…
This vector math stuff is hard. the weird screen coordinates to raycast thing is kinda janky, so sometimes its not fully accurate, but its close enough for now, i spent way too long on it 😭
but now i can FINALLY work on the ACTUAL editor features for this!! :D

1

Comments

fireentity
fireentity 7 days ago

chatgpt summarize this

Nibbles

just went through hell and back trying to make the camera distance update to not go through other platforms. so my first thought is to use the built in raycast function in g3d. WHICH JUST DOESN’T WORK AT ALL!!! if the camera is pointed upwards, it somehow manages to find a way to intersect with a platform below both the origin and destination of the ray!!!! so instead i had to make a horrible horrible bad unoptimized way of doing it, which shoots out a ray manually moving 0.1 units every time in a loop that checks for an intersection. ALSO POINT INTERSECTIONS JUST DONT WORK EITHER SO I HAD TO USE A SPHERE INTERSECTIONS WHICH DOES THE EXACT SAME THING BASICALLY IF I JUST MAKE THE SPHERE RADIUS REALLY SMALL!!! WHY!!! WHY!!! WHY!!!

also i added lava platforms they reset you back to spawn 👍
probablyy gonna work on the level editor next, which is kinda. the main thing. of the original goose platformer. except its gonna be BETTER and THREE DIMENSIONAL !!!

0
Nibbles

made some more all around improvements!!

  • added lerping to the player’s rotation so everything is smooth (and i DIDNT suffer for several hours trying to implement it this time!!)
  • added roof/upper collision
  • added coyote time, so you have a short window to jump right after falling off a platform
0
Nibbles

last 3 commits have mainly just been focusing on improving the graphics, i added:

  • proper textures (wow!!)
  • an animation system for the goose!! which has an idle, run, and fall anim!
    also added slight acceleration to the goose’s movement so it doesnt feel too rigid
0
Nibbles

there is now proper collision when colliding with the sides of walls! the implementation is.. kinda jank, sometimes you phase through walls 😭but it mostly works!! i also added similar walljumping from the original goose platformer (which was literally a result of my grounded check being “is the goose colliding with anything” accounting for all directions, which ended up being a bug turned feature 🔥)

0
Nibbles

added jumping and some basic collision detection (but only on ground below for now, i gotta add the sides of walls next which is gonna be. Pretty hard :P)

1

Comments

Jahaan
Jahaan 5 days ago

Are you doing all this from scratch or with a graphics library, Idk what Love2D is, and I’m kinda doing the same thing as you, and I just have a question, is it okay if you can send your slack ID so I can dm

Nibbles

improved the movement!! it uses wasd now, and the goose rotates towards where you are moving! and about that…
i spent probably around an hour and a half trying to make the rotation lerp towards the direction you move, so its not as jarring, but i just. couldnt. everything i tried. thered be one edge case where it does a 360. 😭so for now it just goes to the rotation
the camera DOES slightly lerp towards the gooses position though! which makes things smoother

0
Nibbles

i am bewildered. flabbergasted. absolutely boggled. i thought this project would be dead because i realized i had to do 3d vector math manually
AND YET SOMEHOW, i managed to make a basic camera system / movement system! (its just walking forward, but uh. yea its missing basically everything rn. this is just a proof of concept)
also the platform spawning system its just a cube model with a position and size yea
also enjoy :Goog: textures for the time being!

1

Comments

Slugarius
Slugarius about 1 month ago

Nice job on getting 3d rendering in love2d. Wish you luck on the project! You’re gonna need it.