Feel free to look at the code, fork it, modify and use it for whatever reasons you want. Crediting me would be appreciated.
Also at the bottom there is Brick-Stacker's History if you care.
Blazingly Fast Light-Weight workshop for Brick-Hill written in C++, using OpenGL.
Brick-Stacker uses Premake 5.0 to allow easy project generation across all platforms.
For more info on building with Premake use this link
You can go to ./scripts
and run build_windows.bat
, it will generate solution files for Visual Studio 2022.
You can edit the bat file to generate code for different Visual Studio version following this tutorial.
Fuck Mac.
BUILDING LINUX WILL FAIL(please help me)
Right now, there is no automatic solution, so you will have to build it youself.
Download Premake and then, using downloaded binary, build it.
You are using Linux, so should be able to figure it out yourself.
so
On September 11 2023, in MixaHosting Dev server, 1ris was building MixaHosting map, which was never released and I think also never was finished, but 1ris has posted this image.
And I made this remark about it.
While I tried to build it, I gave up after placing 4 bricks, because BrickBuilder was not enjoyable for me to use.
During September 17-18 2022, the weekends, I decided to create a brk loader in Godot. I never used Godot before, so this was to try it out. I hated and still hate Godot.
And on next day I had this conversation
After that I tried making the workshop using Monogame C# framework.
During this stage of development, the name was chosen.
The name was later changed to "Brick-Stacker" tho.
It ended with adding ImGui, about after a month, due to ImGui bindings being really wonky and breaking 3d rendering.
This image is good summary of the Monogame Brick-Stacker's end
And so the monogame was dropped.
On October 1st 2022, I, guess what, tried to using C++ and OpenGL again, got the triangle drawing, but that idea was imediatly dropped for a one day idea to make, I kid you not, Vulkan Raytracer. This idea was dropped the very next day. And now, normal Vulkan renderer Brick-Stacker. Remember that this guy had at the time no c++ and graphics programming experience
For first week nothing happened, but then I got a triangle to draw and then I tried embedding ImGui...
This gif was accompanied with comment "it works!"
I never ended up fully fixing the imgui implementation, however the flickering was removed.
And almost now work hase been done until end of that October
Here's more indev foutage from dating 28th oct and couple of days later
Editable Parameters
This vid spawned some funny justs about 4d, but it's showcase of 3d
a little bit more fun - Voron
If you want to toy around with this 3d test for some reason, go ahead. This is the first ever exe I shared with the people you see in screenshots. Note that you might have issues with running this one due to probably compilation issues. MixaMega wasn't able to run it at all, while Yek was able to run it, but resizing the windows was broken. This issue is persistant in all Vulkan versions and I still don't know the root cause.
Video of camera working.
camera done. I fogot to show case the fov tho - Voron
holy moly - MixaMega; yo im shitting my pants - Yek
As seen in the video, the rotations of bricks are fucked up. Well big thanks to Ty/TyThePotato/TyJupiter (idk which is correct) for giving me explanation on how to properly implement scaling and rotation (and I gotta say, whoever came up with this was not thinking writing the code).
Next progress update, fixed rotations were done on Nov 7th. video
Also I made this plan, it was updated at some point.
But OpenGL makes a return for third time!
And then I didn't
10th of Nov - update of image when resizing
11th of November - I decided to discontinue Brick-Stacker-Vulkan and post this video to Brick Hill's workshop creations in the discord server: link to original post, link to brick hill discord (make sure you give yourself role to view archived channels)
Video standalone
Here's small showcase of small project which is kinda a workshop, but with many features missing(like transparency) and unoptimised. Made with no game engine in C++ and Vulkan Map brick count - 1130 Average fps - 60(it is not fps locked, just unoptimised) GPU usage - 15%(AMD Radeon(TM) Vega 8 Graphics)
Calling this "small project" was a big understatement Considering it took me 1 month, including procrustination, but not monogame or godot.
and so I have layed my eyes on OpenGL for 4th time, now, for the last time.
Nov 12th
Now I won't be more into details as you can look at, ah, very badly named commit history, but at least you can see the changes.
But here's more dev screenshots, gifs, vids
nov26
Imgui dec3
Roots of modern camera dec10, but I claimed that I've done it long ago.
video
Some really interesting looking "skybox" dec10
also dec22 - jan8 was winter building contest, so little to no progress was done, so here's amazing concept art for one of the ideas in our winning game "Snowmen Showdown"
dec30
denoiser is creepy - MixaMega; jan7
Work on Stacker continued on jan 19th.
On jan25 I posted this list of what has to be done. To be clear, I never returned to it.
feb6 - Textures added!
Also this is second rar that I shared with, except here I shared it because there was a bug with shaders, the fix is explained below, you can change the .frag shader to remove it.
Brick-Stacker-Textured
On feb12, the name was changed.
Also this date was the first time Brick-Stacker was mentioned publically.
March 20th was date when I added camera also I think some framerate improvements(prob just building in Release mode lol).
rar
May 3rd - I added a logo to the app, prob copyrighted
May 22 - Open/Saving brks, also some time before I started using ECS, but you don't have to care.
rar
31st May - Camera Switching Showcase
video
June 2nd - Yek Review, very integral to the development, really really
June 6 - Transparency ordering
rar
June 21 - Selecting bricks
rar
And this is where the development process gets a stroke, I intended to work on multiselection first, but it was really hard, had no clue how to approach it and etc. But then I got nominated for Best Scripter in Sir Stephen's Brick Hill Awards 2023, and I wanted to get something for my campaign, so I've chosen to promote Brick-Stacker, but with a twist - noone knew what Brick-Stacker is. Yes, I, for fun, decided to run a campaign where noone knew what I was speaking about.
"i see. i thought brick stacker was a tetris clone or something eecks dee" Tylorfoot
So I started creating "Minimal Viable Product version of Brick-Stacker", this meant creating a usable product, but clearly with room for improvement. And since selecting multiple bricks isn't shiny enough, I locked away multiselection in favour for gizmos. Well I didn't have enough time to actually finish the mvp version and the awards were cancelled. But for awards I did create this video.
video
And this is it. The end. The latest commit was done to push latest code, not a working code.
Thanks to everyone involved, who supported, and people who's libraries I used.
People | Contribution |
---|---|
Voron | literally everything |
Dargy | GitHub actions |
Ty | Helping fixing the rotations |
premake5.0 - Build configuration
glad - OpenGL bindings
glfw - Windowing
glm - Math
ImGui - GUI
spdlog - Logging library
stb_image - Image loading
EnTT - Entity Component System
Jolt Physics - Physics, used for brick selection
Yek is a cunt