Goose Platformer 3D banner

Goose Platformer 3D

30 devlogs
62h 53m 49s

A 3D platformer game/sandbox with a level editor and a goose. Made in Love2D with the g3d library for basic 3D rendering and collision functions. The game includes:

  • A custom and smooth player movement physics engine
  • A custom player animation…

A 3D platformer game/sandbox with a level editor and a goose. Made in Love2D with the g3d library for basic 3D rendering and collision functions. The game includes:

  • A custom and smooth player movement physics engine
  • A custom player animation system
  • Full featured level editor built from scratch, with many useful features such as copy/paste/duplicate, undo/redo history, and a properties window with several options to change on platforms
Nibbles

ive added a lot of missing features and some other minor improvements that really tie things together!! (except im still not actually done 😭) including…

  • the play again button in the win ui actually works now
  • added a pause menu with a return to menu + restart button
  • added a skybox selector to level creation + added a lot more skyboxes
  • replaced “rename” button on levels to change metadata, which allows you to edit all metadata for a level (name, description, creator, skybox)
  • added fading transitions between scenes
    and also a big important thing im now working on: SOUND !!!! i forgot about this for a while…
  • menu button clicky sounds very yummy mmmm
  • movement sounds based on the material you’re standing on, as well as jumping, landing, and winning
    probably gonna keep working at the sounds from now on,,, things are finally coming together…
0
Nibbles

added a snap tool to the editor! this is probably the last new feature that i’ll be adding…
making this was… a struggle… i could never get the logic to work correctly for so so so long and i broke a million things while adding it but i finally figured it out and it probably took way too long but it WORKS and it will be very convenient when i add the built in levels later :P
last features i have to add are things that i just completely neglected, after that, it’s minor improvements/polishing, and getting ready to ship… at long last………… (ive probably said that a million times tbh)

1

Comments

oranger
oranger 15 days ago

wows

Nibbles

the game has been SIGNIFICANTLY optimized!! like… a LOT!!! most importantly, it actually runs properly on my less powerful laptop and the collision actually works. here’s a list of changes i made!!!

  • removed every single usage of g3d collision functions. they are way too computationally expensive for my use case, which is only AABBs (axis aligned bounding boxes…basically just boxes with no rotation). now the game runs actually smoothly!!!
  • this also gave me the opportunity to improve collision significantly! falling through the ground should probably never really happen again, and collision solving on the side of platforms is no longer jittery! (my old implementation was….very bad….)
    also did some other minor improvements/fixes, including:
  • lerping of camera and player rotation is now unhooked from the frame rate
  • the timer’s second number no longer goes above 60 (lmao)
  • selection box on the finish line now represents the model better

soo… that’s all the major changes done now basically!! next stuff will be much smaller changes and hopefully i can finish this game SOMETIME SOON I SWEAR PLEASEEE

also should probably explain this: the video is a demonstration of the game’s update function being locked to 60fps to show how it doesn’t explode based on frame rate (all previous devlogs have been played in 180fps) (this also causes a bunch of minor visual glitches bc everything else was still running at 180fps) (and this was just for demonstration purposes so this isnt part of the actual game)

3

Comments

fireentity
fireentity 21 days ago

bro optimized

fireentity
fireentity 21 days ago

why so optimized

fireentity
fireentity 21 days ago

can it run at 67 fps

Nibbles

soo. because of the way things are set up, undo/redo/duplicate/copy/paste did NOT work with checkpoints/finish lines. but now they do!!
…idk what else im supposed to say,,

but now that this is done, it’s time to make the big change… change the entire collision system to be more optimized, because right now its using functions made for meshes that can have any amount of complex vertices, when i could use a much simpler method for checking collision inside cubes (literally every hitbox can just be a cube in this game :P) so… thatll take a while…. but then the game will be WAY smoother!!!

2

Comments

fireentity
fireentity 23 days ago

bro devlogged in the big 26

fireentity
fireentity 23 days ago

pack it up

Nibbles

i added the finish line object to the game!! its a fancy little flagpole that signifies the ending (or in the case of multiple, AN ending) for the level! this also includes the winning ui, as well as a timer that i added because. why not! :P

with this, i believe that all the main gameplay components of the game are now done!! :D so now i can start focusing on fixing the many many issues, optimizing the game further (this is very important and i need to do this the collision literally DOESN’T WORK on my other laptop which runs at 60fps instead of 180fps 😭), and polishing stuff up so that i can ship this…hopefully soon…!!!

1

Comments

Giovanni Nodal -  Hackclub ZRL Santa Meet and Greet Coordinator

adorable game. Keep at it! I like the art direction :D

Nibbles

added checkpoint objects!! they act as a respawn point for if you ever die. yea, its simple but i had to…..

  • make cool awesome shader effect on them it looks pretty cool mhm yup
  • make them work in the editor. This was hell. literally everything in the editor is set up to only work for platforms (which have other properties like scale and color and whatnot).. i had to make a lotta lotta lotta changes. it was annoying. but now im done with that !!!
0
Nibbles

i made a LOT of minor improvements! … like a LOT. heres a list

  • add proper error checking to creating new levels
  • fix color picker ui not being rendered
  • improve right click menu in editor
  • improve topbar in editor
  • fix redo being completely broken
  • add a save keybind
  • make keybinds not do anything when typing in an input field
  • you can now hold backspace in the textfields (or any key actually)
  • add tooltips to the topbar buttons
  • editor click events (eg. selecting) no longer trigger when mouse is on ui elements

…so yea thats a lot, i prob didnt show everything in the video but i probably showed most of it!!

0
Nibbles

its alll coming together now…!!!
i added:

  • the ability to save in the editor! I THINK THAT’S IMPORTANT…
  • an exit button in the editor! before it was just a random key to go back to the main menu. but this button does that AND gives you a warning if you have unsaved changes!!!
1

Comments

Sophia
Sophia about 1 month ago

this is such an awesome project, looking great!

Nibbles

soo its been a while… been working on the custom level ui more and its mostly feature complete now!!
this includes:

  • new level button and popup! it lets you choose the name, a description, and the creator’s name so you can create your own levels! so awesome!
  • also a whole popup system i had to make for this ui !!! its pretty featureful and lets you make popups with labels, text inputs, titles, danger buttons, etc!!
  • the ability to rename and delete levels! just some nice QoL stuff :D
  • edit button on levels! however its pretty useless, because you still can’t actually save to the level you are editing, so every level you make will just be blank. that’s what i’ll be doing next though!!
0
Nibbles

i added the levels page to the ui! it shows your saved levels and lets you play them :D
…and about that!!!
i finally added saving and loading to a file! it doesn’t let you change the name/description/creator yet bc i didnt make the ui for it, and rn its just a random keybind (its the = key 🔥) but… the functionality is there!! soon things will be polished up and stuff

1

Comments

fireentity
fireentity about 1 month ago

New devlog posted on a project you follow!Goose Platformer 3D by Nibbles

Nibbles

the main menu is starting to fall into place!! making ui is still tedious and takes me a long time. but alas, this was a good experience that let me further test out my ui library yan!! and it’s working out pretty good!! except for a few tiny quirks that ill prob go back to fix later :P
in these 3 (oh god why did it take 3) hours of work, i:

  • made the snazzy menu ui and background and whatnot!! so cool, cool tweens, very awesome
  • made a proper scene system! before it was just hardcoded in the update/draw functions if the game was in “game” or “editor”, but now theres a proper system for it!!
    next i gotta make the other menus, play levels and make levels are supposed to actually take you to a menu that’ll list your levels / let you create levels, but rn it just sets the scene to the game/editor scene with nothing else
0
Nibbles

i added the material property to platforms!! it lets you change the material. shocking. there’s rock (the default i was using before), plastic (solid color), wood, planks, metal, and sheet metal!!
i also added skyboxes! rn there’s just a daytime and nighttime skybox (thanks to fireentity for using her photography editing skills to change the already good daytime skybox to look like nighttime :3), and its not editable yet, but it will be… soon!!! because…

next i have to work on the saving/loading of levels, which will include metadata for the level, like a description, name, level creator, and… the desired skybox for the level!! which also means ill have to make ui for that…. yaay… which probably means i’ll need a main menu and stuff… which will take a while…,,..

Attachment
0
Nibbles

there were many issues from last time! many many many issues.

  • the color picker will now only set the color of selected platforms (HOW DID I FUMBLE THIS)
  • the color picker now properly updates when selecting a platform
  • the color picker/color property now works with multiselect
  • color data now actually copies when you use copy/paste/duplicate
    as well as some other issues with undo, such as it NOT WORKING AT ALL AFTER I DID SOME CHANGES TO HOW PLATFORM DATA WORKS!!!
    …i also changed the selection shader, so it pulsates green instead of being solid green, so it should always be visible…!
0
Nibbles

i added 2 more properties to the platforms & the properties menu!

  • collision! it enables/disables collision. This was very very easy to implement.
  • color! it changes the color of the platform. This was much more tedious to implement. I had to make a few shaders, one to tint the platform model itself, as well as 2 more for the color picker UI! (i could’ve just used an image, but THAT’S LAME!!!). this was just. a lot. with converting to rgb, rgb255, hsv, and everything, but it works now and its really cool and im happy with it :D
    i also added a new selection shader, so awesome,,, yea
5

Comments

fireentity
fireentity about 2 months ago

dev log

fireentity
fireentity about 2 months ago

thanks fireentity!

fireentity
fireentity about 2 months ago

you’re welcome

fireentity
fireentity about 2 months ago

you’re welcome nibbles

Nibbles
Nibbles about 2 months ago

thanks fireentity! :3 you’r’e’’‘e’er’’‘re’’ welcome!

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 about 2 months ago

haha dev log

fireentity
fireentity about 2 months ago

very nice editor nibbles

Nibbles
Nibbles about 2 months 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 about 2 months 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 about 2 months ago

dev log

Jahaan
Jahaan about 2 months 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 about 2 months ago

thank !

Nibbles
Nibbles about 2 months 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 about 2 months 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 about 2 months 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 3 months ago

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