A 3D platformer game with a level editor, and a goose. Made in Love2D with the g3d library.
A 3D platformer game with a level editor, and a goose. Made in Love2D with the g3d library.
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!!
Log in to leave a comment
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!!
still just adding more features to the editor! this time i added:
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)
Log in to leave a comment
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:
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
Log in to leave a comment
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
Log in to leave a comment
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.
Log in to leave a comment
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
Log in to leave a comment
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
@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 !!
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
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 !!!
Log in to leave a comment
made some more all around improvements!!
Log in to leave a comment
last 3 commits have mainly just been focusing on improving the graphics, i added:
Log in to leave a comment
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 🔥)
Log in to leave a comment
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)
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
Log in to leave a comment
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!