#Albuquerque "Engine" (Updates every Sunday)
1 messages · Page 2 of 1
- its
glTFnotgLTF - "Quodot Screenshot" doesnt load for me
Deccer cubes being featured in a blog post 
I made edits for both of those mistakes and have committed them and pushed them. Site should update to reflect it in a bit. Thank you for pointing it out 
yea c:
doing deccer cubes before starting fwog flying was part of what gave me the idea when it came time to try it.
This post a bit messy but I didn't want to linger on a draft too long so I am glad its published. I like the 'one post a week at least' deadline to avoid procrastination due to perfectionism. I may go back and edit it more in the future as I get better at writing these.
Very nice article :) Showcase some of your personal projects, showcase cool tools others have done, and the overall concept of the blog at the end.
thanks for the support lime c:
Oh you're planning on posting weekly? That sounds a bit rough 😅
I can barely post biyearly
yea... but I don't need drafts to have to be completed in a week so its manageable. I think next week post might be a bit smaller and more minor thing. I do have a silly reward system for myself where if I can maintain a streak for a month I buy myself a prize.
The blog project is a good way to ground myself and remind myself of what I have done even if I don't touch the specific projects in awhile, as well as showcase what I have learned from there. Shows that everything I have done doesn't 'go to waste' since the stuff I learned goes to my head and I can share it. I do also like practicing my skill in writing a bit more as I tend to ramble so this can help ground me while giving me something consistent to maintain longer term.
It also gives me motivation to go back to past projects I might have forgotten about or feel intimidated by, like fwog flying.
The current draft after this one is also Fwog related but its on the stuff I learned for the physics and camera and how I went from making the mistake of using euler to storing the rotation matrix (as what Demongod taught me) as well as some ideas moving forward (like what void mentioned earlier with a transform struct).
in terms of coding for fwog flying itself I think I might actually work on landing/airports next.
I really quite like this analogy
I am so glad! I originally compared it to Photoshop too in that sentence but I trimmed it a bit last minute. I thought something like Microsoft Word can be relatable to anyone, as my target demographic for my blog is more everyday people than tech audiences (so I think of people like my parents and all).

at least it gives me a starting point if someone asks 'so what do you do, actually? like what kind of coding do you like?'
id leave out the final s
Yeah definitely
Today I learned its actually Visual Studio
I showed my mom a video of my terrain brush tool last week and I think it finally started to click in her head what my project was about 😄
ohh I wanna see the video too.
https://www.notapenguin.blog/posts/terrain-brush/ its at the bottom here
ooh you have a blog and site too!
I can suggest maybe editing your static page template to include the title? As currently when you open the blog post, the title of it is missing (but it's shown on the Blog's home page). Other than that I admire your dedication to writing :) I started my blog strong and then sort of faded it away as coming up with interesting post ideas other than a "devlog" style blog series was too difficult
Adding to my RSS reader, as well as Tess's blog :)
I thought it said terrain-bruh in the url

That is a good idea. I think I will look into showing the title in the template soon.
Oh! I do hope I can maintain it too.
This is a bit of a personal sharing but the blog is also a way to test a technique to organize one of my mental health conditions and whether a productivity system my therapist shared with me that I am trying out in my personal life will work longer term. So far it seems to be helpful.
I find that coming up with projects/ideas specifically so I can have something to write about is really challenging and not as easy as writing about things I have already done. I think as long as I keep working on stuff in my time, my blog will never 'catch up' its backlog to what I currently do.
I liked the post, lots of images which is really nice 
I have a list of ideas and some drafts in a private Obsidian journal.
the perfect pixel game looks really cool
hu? where? 😄
Yea! Its really old and I made it in a team with two people (one was doing the gameplay programming like the rockets and jumping, the other was doing the physics interaction with the pixel and I was doing all the rendering, UI and 'meta' stuff)
which is also why that section was written in first person a little (I came up with the .bmp file parse idea with the group)
When I realized that like, using Blender as an editor for Fwog Flying and using paint as a level editor for a 2D game was like 'the same brainwave' and I was reapplying the concept it was really cool.
I feel being able to show I was able to 'link those two concepts' together is neat.
yea! I didn't want to 'spoil' the solution for Deccer (even tho odds of someone stuck at Deccer Cube but cheating through finding my blog seemed really slim)
but for those who did it, you'd know why Deccer Cube is where I got the idea of... this whole post lol
ah 😄
this flew past me
i also wanted to try albuqqi just now but im unable to build it here on lunix
[build] [ 93%] Linking CXX executable Tutorials
[build] collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped
[build] compilation terminated.
[build] make[3]: *** [src/Tutorials/CMakeFiles/Tutorials.dir/build.make:170: src/Tutorials/Tutorials] Error 1
[build] make[3]: *** Deleting file 'src/Tutorials/Tutorials'
[build] make[2]: *** [CMakeFiles/Makefile2:751: src/Tutorials/CMakeFiles/Tutorials.dir/all] Error 2
[build] make[1]: *** [CMakeFiles/Makefile2:758: src/Tutorials/CMakeFiles/Tutorials.dir/rule] Error 2
[build] make: *** [Makefile:364: Tutorials] Error 2
Ah yea! I mentioned that before. Well albuqqi isn't an engine yet tho anyways
wanted to fly around a little
But now that you wanted to build it. I can work on the cross platform CMake since there's a demand for it haha
I have a Windows release .exe for that pre-alpha version too.
man and i HATE that vscode's terminal autoscroll is fucked
uh
i thought the point of the cmake starter was that its crossplat already 😉
It is! It's just that there are the new libraries I included that some of them I used a static precompiled binary (that I compiled prior) in the include as I didn't want to get stuck with CMake stuff before further development. Now I can go back and edit it to do it properly though.
oki
or maybe I can include .a files too.
no rush btw
basically these guys need to be FetchContent'd or Git Submodule'd properly but I included static first as I didn't want to get blocked on CMake stuff.
tbh PlaneGame isn't even using the last four right now too.
Plane Game (Fwog Flying Game)
(moved to not crowd #wip )
@glad kelp
I like that in the example I used to try and explain local and world space coordinates and how it affected my rotations I used a screenshot of the actual project
I do also showed a blender version
yea while I was DIY-ing the aircraft stuff myself, the coordinate system was the big thing I had to deal with and why Euler Angles didn't work
and I wanted to like, explain it in a way that anyone can understand
I am just glad that one of best examples to explain coordinate systems and its relationship to rotations that anyone might be able to understand in the real world... would prob involve aircrafts
so thats a nice coincidence.
Yeh that's true
enjoy 
This week's blog post involves Plane Game again.
https://clementineaccount.github.io/My-Prototyping-Process-for-Simple-Flying-Physics-in-my-Aircraft-Game/
Introduction
In May of 2023, I worked on an aircraft game without a game engine for my own learning and fun. As such, I needed to solve problems relating to flying the plane around in the open 3D space. This post therefore highlights the development process overcoming some early mistakes in writing the code for the physics and camera system in ...
Today ill try n get soloud workin for cmake so it can compile on linux
I have a lot of trouble with getting this soloud nightmare to work properly with my Fetch_Content. I'll see if I can include a precompiled static library for linux users instead. I think I might need some help to figure it out: https://github.com/ClementineAccount/soloud-albuquerque/commit/b80969b03c2a86fa0dff5bb03bfa28ce98ab894c
The main issue I get is regardless of the backend I use, some counter value doesn't get initialized properly. I have no leads otherwise: https://cdn.discordapp.com/attachments/1107611726108700682/1115266794643525652/image.png
Ctrl + Shift + F doesn't get me anywhere either
https://cdn.discordapp.com/attachments/1107611726108700682/1115267255056486410/image.png
So I am thinking like 'does this mean the backend wasn't initialized properly? Somehow?" but when I check the docs I don't really see any devitations between how I am ininitalizing my library vs how they do it in the examples. The backend I test is MINIAUDIO and WASAPI. I didn't test the others that need the user to already have it because I don't want the user to have dependencies to compile it... but maybe I should just suck it up and tell folks 'you need SDL2 to compile the project'
At least I know how to use branches to go 'ok i tried imma just leave this alone for now and go back to the timeline where things work'
The "velocity warp" effect looks really neat.
Also, why do you use soloud for audio? I tried to use it for my projects before and found it kinda limited and outdated
What do you use?
outdated/limited compared to what?
I am very eager to hear about whatever non-outdated modern and convenient audio library you're using
Because my experience is that they don't exist lol
I’m using SDL Mixer, but planning to just use SDL Audio module if I need more control over stuff
I’m not saying that they’re better than soloud, mainly saying that I didn’t find what soloud did better over SDL
if you use sdl already, then why not
Yea im considerin just SDL-ing too to make it compile n portable cross platform.
I used soloud because Tear said to try it as an alternative to irrklang haha
More of a meta post but I am starting to keep tiny journals for all the stuff i work on, because I have a condition that makes my memory really bad and this was one method to overcome that.
sometimes its the most trivial stuff i'd document but at least its there to remind me that things happened before
Another trick I am slowly internalizing is that I can allocate tasks to myself based off my health/energy level so that I can always make some progress on projects when I want to work on a project but don't feel confident in the 'brain power' or whatever to do really tough stuff, so I can always do the easier stuff to rebuild a confidence for that day. After that it might slowly build up momentum to break down harder stuff to more manageable chunks. This coupled with the strategy of breaking down problems can be a pretty good combination to develop better momentum with projects ig
my ocd gets triggered by non yyyy-MM-dd timestamps, but thats just me
i get confused sometimes if the month isn't written as a word
so in my journals i just write the month usually but obsidian has auto daily journals and that one uses mm-dd-yyyy
wait no it uses yyyy-mm-dd
yea
thats my daily journal
at least they aren't mm-dd-yyyy or whatever us americans use
while I have a separate jorunals just for projects
so that way if I wanna look for 'what i worked on for alberquerque on that day' i can just look in the journal for that project
and also allows me to 'spam' it with all the coding stuff without there being like 'i had lunch earlier' in the middle or whatev
very indeed
i think i like yyyy-mm-dd if it has to be numbers only
but otherwise my preference for a non code version is month written in words
i just prefer yyyy-MM-dd because its very sortable, and i have no issue with seeing what day month year it is exactly
I use unix timestamps
it is
everyone will know how many seconds it's been from jan 1, 1970
hehe
anyways todays a rough day but im glad i still did a bit of coding for the plane game, sometimes my head gets pretty foggy n i get overwhelmed n anxious but ive been practicing just picking out easier stuff to work on and 'sucking it up' with those n its been ok
im about to go out to meet a friend in a bit
the day can only go up from here
yea :)
im glad its an uneventful-ish day. played some ttrpgs with some friends in the mornin earlier too
its just sometimes my head gets rly foggy n i find it hard to focus on stuff or put thoughts together
froggies in your head
maybe you just need to do something else for a bit to clear them out
yea usually i sometimes just go for a jog straightaway to treat a foggy head
today i have to go out for a dinner so i didn't do that and get dressed but im still glad i got some stuff done
i also wrote more draft for this week's blog post and deciding to switch to once every two weeks instead to see if the extra time to code will help me code more
altho the draft atm kinda feels very run-on sentence-y and too wordy but at least its 'done' as a draft then i can edit it a bit. its not alberquerque related this week tho
I could switch to xml files at some point too.
Then for optimization I guess there's a way to "xml -> binary"
or maybe I should start with JSON instead for the simplicity esp since im already familiar with it
config files are neat. I have done variants of them before in the form of scripting but being able to make edits during the gameplay itself and reload them is something else
@marsh crypt this feels like something you'd find funny because of the sound effects^
In my notes I had to be careful to like refer to the aircraft colliding
and avoid words like 'crash' or 'plane' even as its ambigious whether its referring to crashing the game or the aircraft (or the geometric shape of a plane)
my plane rendering app crashed
im just happy im unabandoning a potentially abandonable project because i got scared at terrarin generation
It'd be more ambigious if it was 'the plane crashed in my rendering app' but yea
which I have had to rewrite my personal notes on when I was like 'the plane crashed successfully'
task failed successfully 
task succeeded successfully 
hahaha!
i should add those destructable wings and stuff that demongod suggested that one time
maybe even camera settings like cockpit views n all. level selections. plane selection.
Forms of procrastination to avoid terrarin generation
...inb4 I just end up doing terrarin generation because I wanna eat the fwoge first
either way time to create new kanban board I am feeling inspired again thank you Game Programming Gems for telling me to 'load as much as u can data files jfc'
i mean yea i am not alien to that idea in practice because Unity style NIH engines with their json serialized scene and prefab files and script files
but the shrimple version where u just hit R to reload stuff I neglected the potential power of
config.txt -> config.ini if you use an ini layout for your config, which you do
yes, JSON is the only sane data format, imo 
TOML is okay, but has a lot more ambiguities and "magic" than JSON
Json so good gltf has a bit of it inside it
Yeah, I love that you can actually go inside the .gltf file and look up how various things get exported from Blender
The only thing that is missing from JSON is that it has no comments. I'm still butthurt about the reason they didn't put it in 
they're for different things
json is good for program <-> program
toml is good for program <-> person
I want program <-> person
So maybe toml is better for what i wanna play with
Yes this will do
It looks good for what i want
JSON is good for program <-> person too, imo. It's easy to write JSON and you don't second guess how your parser is going to interpret what you wrote
TOML is whitespace dependent which makes it worse in my taste (explicit nesting is more transparent)
Also TOML is still kinda obscure, while JSON is totally here to stay for ages 😈
JSON is good for program <-> person if the person knows json
and tbh, it can be kinda duanting
TOML is much more human friendly
obviously though, it also depends on who is modifying it
most people (who have used a computer) will likely be able to look at toml and make sense of it
json might take a bit longer
since im not someone who doesn't program, I can't tell you which I prefer
I like JSON because it doesn't have two ways to write the same thing.
TOML is more ambiguous and context dependent.
I like JSON because there's only one way to write a string. TOML has many ways.
But I can't argue that TOML is more "human friendly", but I feel like it's better to suffer a bit, but not any surprises where you load something, but get something unexpected
Well, at least it's not yaml, where Norway == false
I get where you're coming from
and I agree, for a lot of things JSON is just... the way to go
it's like, the perfect example of KISS
it's simple, easy to understand and write, relatively low overhead in terms of space
but TOML is just better for config files if you ask me
a big plus is that TOML has comments
which for config files, is really nice
because now if you change something and want to remember, or if you share a config around for whatever reason
you dont need to have a separate config_explanation.txt or whatever
you can just ```toml
I changed this to X from Y because Z```
obviously there's costs to having something like TOML, most of which you mentioned and you're right about
it's just a case of trade offs 
you have to know who's going to be touching the files, and what you're doing with them
(though I suspect if you have to ask the question: you should just go with json)
I can agree with all that. Personally, I use the most "stable" and "here for ages" things even if they have better alternatives. 😂
Maybe TOML will become that someday, but it's hard to tell today
Also, I don’t fully think having multiple ways to write the same thing is the worst
Because sometimes those different ways can have semantic differences and make it easier on the reader to understand the context
(I don’t think you should use it for that, it smells a bit imo. But oh well)
Oh yeah
I would not use toml in production or for anything majorly important
But the things that are stable and here since forever
Always started as “new thing”
Indeed. I'm not on the "innovators" side, I guess. I like picking up tech which had 10+ years of prod usage 🙂
(with the exception of what's latest in C++)
With how long things take to get standardised, and actually implemented. It might as well have 10 years of production usage 😛
I will say, try out toml
Yeah, boost is the beta
It’s not half bad, as long as you’re using it in the right places (like everything)
And for end users, it’s a dream
I’m yet to have an end user complain or have difficulties with using toml configs
But back in the day, I’d have to deal with a few tickets a day of users breaking the json config
And me having to manually fix it for them
And <insert random github user here who made the paper 2 days after it was submitted somehow> is the alpha
But seriously, how do some of them do it?
It’s like, a new proposal comes out
In a week there’s a fully fledged implementation with 1000 stars somehow
They always have an anime profile picture too
@rose orchid would you recommend obsidian to other people
Yes. I rely on it now and its very useful for me. Its just a way to organize markdown files too, which allows portability and does not 'trap you into an Obsidian ecosystem'.
This is also a useful (but paid) way to sync between mobile and desktop but I like that its not the only way (even Obsidian itself is open that you can use other ways to sync data): https://obsidian.md/sync
cool
The sync is the biggest issue IMO. You need to either pay for the subscription service or use third party syncing apps as on Android it can't pick the Google Drive folder (or OneDrive for that matter). It's a great note taking app though
my dudes, there are free plug-ins to sync your google drive files with your desktop
at least in gnome
windows has some cancerous desktop integration for onedrive that it forces upon you
maybe it can be useful
and gdrive has a similar thing
On PC it's trivial, I'm talking about Android though
One trick is you can sync just the .md files inside a folder instead of the obsidian stuff I guess
But if you don't plan on using it on Android (it's fully supported btw, all plugins work there as well), then it should be no issue
but i only ever tried the paid subscription service.
oh unrelated (well related to plane game): irl friend (caio) tried plane game and he found it genuinely fun so now that motivates me to wanna actually work on it even more a bit...
You are supporting all of us who use it for free 🙏
what plugins do you recommend
hell yea :)
honestly obsidian works fine for me without much plugins
there is a git plugin 👀
Yeah I just use the daily note one, voice recording and maybe some other tiny ones. They are mostly community made though so you need to verify the security of them
I have to decide if I wanna make an actual Plane Game thats meant to be played by people though in which case if I want it finished within the next year id prob have to use either Unity or Godot
I realized by observing someone else play it IRL that I have a fun gameplay loop that is the niche of 'Trackmania but in an aircraft' thats rly fun to watch n play esp in its simplicity.
apparently it works on mobile
Yeah would you like to create an actual game ™️ or learn giraffics?
I might prob use Unity just because Golf With Friends uses it and has a simple map editor thats popular (that stores the map data in json)
I might make an Actual Game™️ prototype off this game. Can be a good learning exercise too and a potential blog post (comparing make graffics vs make game)
and it also means this version of Plane Game can feature creep to have like stupid shit like open world airports or whatever and I can make the actual game that has game design that people play be the "trackmania in the air" clone
although I dunno what Actual Game's demo state should be before its like 'ok i dont want to work on this for free'
I don't think supporting both a game engine version and a custom engine version would be too wise, as you might end up with both of them having wildly different levels of finished
oh i wasn't stating that, quite the opposite acutally
Like they branch off into being separate things that have no relation to each other
Hmm morning coffee hasn't kicked in, let me reread it
so rewriting this line, the graphics engine version can feature creep whatever stuff for learning and fun that doesnt actually make a more fun game. While game engine version is its own thing that does not have feature creep and is very focused on being a good product
so they just two separate projects
Ah okay, yeah that makes more sense :)
I've seen that game design is a completely different thing whereas I thought of it being very similar to GP. It's really not, so working on the game in the actual game engine would teach you very interesting stuff that you might not have the opportunity to learn while stuck in GL land
In parallel you learn GP concepts from your own engine that you can find the mapping of in the game engine you're using
Yea. I think it'd a really cool perspective too esp to write about.
Plus the idea of original prototyping in 'no engine' that eventually gets made into a full project in an established engine is an amusing story to write about too
I just been playing more Trackmania, then when I saw Caio played Plane Game I realized 'oh I actually nailed the gameplay loop better than I thought'
and I realized in an ironic way one reason I didn't work on Plane Game as much after that milestone point was because it reached a point where it was fun enough
which doesn't make sense writing it out but I guess my brain was like 'my job here is done' lmfao
Good news: finding the fun is the hard part in games :) now you get to add features to an already fun thing
Yea its a great feeling accidentally finding the fun
Esp the level I made also happened to accidentally work well because it has that loop of 'its easy to complete on the bronze medal by going slow but if u want gold there's that higher risk'
and the level is short enough u wanna retry it if u crash the plane and its easy to just barely miss the last checkpoint ring
and thats also quite similar to Trackmania's gameplay loop. Only difference is with an aircraft if u crash u basically die whereas in a car game u slow down (but u wanna restart anyways if its severe enough)
If I impleent Demongod's suggestion of the wings snapping off that can also add some fun comedic 'deaths' or even last second clutch wins where u crash near the finishing line but just barely make it lol
anyways tldr: Imma prototype a version of Plane Game in Unity and see how I feel about it then.
Nice :) hope it turns out okay!
yea. I think gonna go with Unity instead of Godot (Unrael not an option as it doesnt run well for me) because Golf With Friends is in Unity and i like that game's scope as what i want for mine too kinda
I got obsidian hooked up to a git repo, free of charge 
Just make sure not to fall into the trap of adding every single thought to your """""second brain""""" map, as some people use it lol
wdym
Obsidian is usually used as a Zettelkasten system, or "second brain" as some people call it. For example you read an article on raytracing and you link back up concepts to a global "raytracing" article, and then you fill up that article with concepts from every other article. I warn you as for me it felt "productive" at first to do that but ultimately it was another form of procrastination
As the usual note app though it's completely fine
i dont do that i just post the link to an article and screenshots in an unstructured way
kinda like taking notes in class or something but for stuff. but for me obsidian is an important tool for managing my adhd tho, as recommended by my therapist indirectly (keeping a journal on u at all times to write down anything, which obsidian does for me and i prefer typin to writing)
so idk how much use writing every 15 minutes that u watched some video has for the average person
A journal is perfectly fine, building up knowledge maps for the sake of making the graph bigger (instead of learning) is going into the unnecessary region imo
oh yea i dont have knowledgemaps or mindmaps or anything like that
for me its very KISS. Just bulletin points, screenshots, links
and yea u can do that with just any markdown editor or text editor i guess. obsdian is free tho
and this part is just nice
i have two different 'vaults' (folder of folders) where one is sync to my phone (my daily journal)
and the other is not (that has like notes on stuff i learned, my projects, my blog post drafts, short stories, all that kinda stuff)
Making git work on Android is so painful lol
Each empty folder is a failed attempt to clone the repo
anyways, my goal here is to just write things that are worth remembering
I'm starting with color science because there are so many new terms there
what I do to trick myself into feeling productive is make a giant list of articles, papers, and presentations I've looked at on trello
and I also use trello to keep a backlog of things to read
i just do the 'i dont wanna do much work so i'll just write one line of code/text' anti procrastination trick
Gaslight yourself into getting started
As a beta user as plane game
It was actually pretty fun
even though it was only level
this is 100% a game I could see myself launching here and there just to waste some time
My biggest piece of feedback would be to perhaps add an option to make the plane flight more "realistic"
i remember you mentioned you were going for a retro style flight
but as someone who didn't play those retro games, it's just not inutative to me to fly with that control scheme
barring that, some more levels. some sort of way to keep track of times, maybe a ghost mode too
itd be a pretty fun game
depending on how many levels (maybe even different planes with different stats?) i could see this game being sold
Yea i thought about it... It costs about 100 USD to publish a game on Steam, so if sold at around 2.00 USD it only needs about 75 buyers to break even (assuming that I don't consider developing it to be an expenditure if being done for fun, although I guess the last 10% of the 90% is labour nobody likes and I should account for them as billable).
Browsing Steam yesterday I saw this: https://store.steampowered.com/app/1307090/Barro_Racing/ (https://steamcharts.com/app/1307090, https://steamdb.info/app/1307090/charts/) and I think I can do a better job... (esp since it also was sold as a achivement completionist type gimmick)
Wow, I wonder how it got so popular (relative to quality)
I was reflecting on the idea of 'full game version' and I realize that putting a price tag makes scoping for quality and content pretty challenging, esp since I don't have a lot of experience in the business-y side of it. So instead I think I'll just scope for a short 'demo-size' type experiment that can be released for free, accepting donations and stuff as a way to garner interest, feedback and market research and from there I can work out if I wanna make a 'full-sized' game that does cost money.
also gives a lot less pressure for hobby stuff 😅
Yea don't sell your hobby games
The whole point of doing personal projects is to work on something worthless
If you are trying to make money off of it, it becomes a job
If you aren't, you can do whatever the hell you feel like rather than feeling entrained to some deliverable
This^
Looks like SDL mixer is the alternative. Would have to include SDL2 which when using glfw is kinda clown-y but whatev
oh? SDL_mixer is standalne... and it has a CMakeList? 🤔
https://github.com/libsdl-org/SDL_mixer
very promising...
alright no harm just putting it in the FetchContent and seeing if it cries
😔 ok SDL2...
I see. If I fetchContent SDL first then the CMake (somehow? how does it know? I gotta find out) then the other module can find it
(btw these aren't #questions style actual questions. Just thinking aloud and i'd prob solve it myslf. Of course feel free to point me in right direction if its not a lot of trouble but otherwise i do wanna try to do it myself. I have my own private journal for this project too but sometimes when it comes to CMakeism i just like sharin the process)
I think i gotten way way better at understanding CMake stuff and build systems in general since I started Alberquerque. Proud of myself for that I used to throw tamper tantrums in #general over it (now I dont even use that channel anymore have no idea if Tear still gets into arguments about modern gaming being doomed. (He's not in this channel so I can harmlessly gossip its ok))
oh sweet
you ignored 2 of my questions 🙂
Oh I didn't notice u posted

This is SoLoud's community based CMakeList.txt (https://github.com/jarikomppa/soloud/blob/master/contrib/CMakeLists.txt)
And the backends: https://solhsa.com/soloud/backends.html
remember the < > thing
I tried to make the cross platform MiniAudio to work here by forking the contrib: https://github.com/ClementineAccount/soloud-albuquerque/blob/master/contrib/Configure.cmake
but I couldn't figure out this issue. It looks like this. So I think the library isn't inintialized but it is and I can follow the callstack. That value of samples aren't. So I figure I built it wrong : https://cdn.discordapp.com/attachments/1107611726108700682/1115266794643525652/image.png
i still dont understand the problem
same
So I had two otpions:
- Different CMake branching if Linux, Mac and Windows so that they can use different backends (ALSA for Linux, XAudio2 for Mac, WASAPI for Windows)
ah got it
- Use the SDL2 backend
i thought XAudio was windows only too
but if I am gonna use the SDL2 backend, I gotta include SDL2 if I want my FetchContnt to be 'portable'
aaaah
oh it is
Which one is the Mac one? Oh well.
i also wouldnt care about mac, at all, but thats just me
fwog doesnt really support gl4.1 either
I either can spend a really long time tryin to figure out what is causing my memory exception thing here, and maybe I could sometime in the future
but if I want something crossplatform (at least Windows + Linux) and 'portable' (the user don't need to do anything to install on their computer the FetchContent does everything)
then I wanna try the SDL2 approach instead as eliasdaler suggested
and maybe I'd go back and finally debug whats going on here but I didn't want to get too stuck
if i didnt suffer from boredom atm and cba to do anything, i would offer my help, but i would lose interest 2mins in, that sucks quite a bit
by default the contrib/CMakeLists.txt uses SDL2 as its default backend (which means it own work unless the user had SDL2 magic through vcpkg stuff) https://github.com/jarikomppa/soloud/blob/master/contrib/CMakeLists.txt
yea :p i also dont wanna burden someone w/ it unnecessarily
nah its not a burden from you
This kinda library linking debug stuff is a nightmare for anyone so I rather just do the easiest solution
aww ty
it does sadly T_T
It requires it to compile in FetchContent
but I can FetchContent SDL2
ooh yea. The actual program can prob use GLFW I hope but it not idk what to do I'd figure something else out (like FetchContent the SoLoud backends)
doesnt have to live in lib/CMakeLists
So is there a way to do 'Fetching SDL' but only for SDL_Mixer?
if it works
I also haven't checked if I can use it inside a GLFW too. I'll have to do that first and then I'd come back here
It looks like all I need is this https://github.com/libsdl-org/SDL_mixer/blob/main/include/SDL3/SDL_mixer.h so I hope I dont need a SDL_Window or SDL_Surface instance? But I am not 100% sure yet till I try it which will be later.
wait
ty for the support deccer. After I get the cross platform Plane Game out the project will 'split' tho. Like the obstalce course plane game where u fly through wings I am gonna develop in Unity or something instead, and this project will just go more towards simulation stuff.
thats sdl3 already
I have no idea why its called sdl3
they are working on a version 3 already for some time
but that should be fine
ah
yes. playwave.c does not use SDL_Window or SDL_Surface https://github.com/libsdl-org/SDL_mixer/blob/main/playwave.c
also check their PRs
looks like this might be a thing https://github.com/libsdl-org/SDL_mixer/pull/531
what about it?
I see. I don't understand this PR
Oh yea dumb question but are community-projects ok for like, engine stuff make in Unity/Godot? @split blade
idk
you pick the tool you like/are comfy with
not because some idiot on thei nterweb said yes or no
oh I meant if like, its only meant for NIH engines or whatev haha ty
So Plane Game Unity can live in that thread when it gets made (this Plane Game still gonna be worked on maybe, but might rename it to just Alberquerque since I wanna use the codebase for other toy projects too)
because in the NIH codebase I wanna do like, whatever i feel like even if there's no 'game design' or even a gameplay loop and whatever for fun, while in Unity I wanna make that 'trackmania but flying' game (what the video shows) as a full thing thats polished.
Master is sdl3 and will break all the time. Stable releases are tagged 2.x.x
I tried using it, but it was very different from SDL2, so I gave up for now 😂
My FetchContent uses the 2.x.x tag
so I should be good 
So just to confirm, I don't need a SDL window and context to use SDL_Mixer. It works in a GLFW window and context right? @marsh cliff
idk, only used it within SDL context 😅
Well, you’ll see for yourself soon
The exmaples dont use but I'll see too. If it works without an SDL Context then that'd be good as like
my other option for crossplatform sound library just to branch in a CMakeList file or somethin
cmake configuration sure is challenging when working with other people's CMakeList.txt from FetchContent()
I thought 'well if I am including SDL2 already maybe I can just use soloud again?"
😔
Replace SoLoud with SDL_Mixer #49 : https://github.com/ClementineAccount/Albuquerque/issues/49
you want me to pin that one?
yea
Simple Directmedia Layer
Hello, I recently downloaded and built the source for SDL2 with CMake (Unix Makefile) on MacOS. The changes you recently made this year have been merged with the latest version (2.0.16) as far as I know, but I am facing an issue trying to get SDL2 to work with CMake and CLion (JetBrains C++ IDE). I posted this question in the (unofficial?) Dis...
ok so
FetchContent doesn't play nice with SDL
well there's urm... there's this I guess... https://github.com/PortAudio/portaudio/tree/master
just gonna check the license
ok
Maybe this is the secret sauce that can just FetchContent() and work
I used SDL with FetchContent a while ago and it worked fine
Why do you use FetchContent, btw? I think git submodules are better
because Deccer used FetchContent in the CMake-Template which was where this was birthed from
So I am trying to stick with that here
I have no idea what I am doing wrong and I can't even begin to think of where to investigate
this looks so ordinary to me
sorry for screenshots rather than pastebin-ing it
I was a FetchContent evangelist, but I’m not anymore
With git submodules you just add_subdirectory a dir and you’re done. FetchContent is much more complex
yea. I think I'll experiment with git submodules soon so I can see that difference
Umm, you need to link to targets, not manually specify include dirs
its there too
hmm wait a sec
what if I just dont include directories
and just only target link libraries
You don’t need target_include_directories
Yes. "Libraries" are not libraries really, they’re targets
And targets specify their include dirs
1> [CMake] * STACK_PROTECTOR, Use stack protection
1> [CMake] * FLOAT_API, compile with the floating point API (for machines with float library)
1> [CMake] * INSTALL_PKG_CONFIG_MODULE, install PkgConfig module
1> [CMake] * INSTALL_CMAKE_CONFIG_MODULE, install CMake package config module
1> [CMake] * X86_MAY_HAVE_SSE, does runtime check for SSE1 support
1> [CMake] * X86_MAY_HAVE_SSE2, does runtime check for SSE2 support
1> [CMake] * X86_MAY_HAVE_SSE4_1, does runtime check for SSE4_1 support
1> [CMake] * X86_MAY_HAVE_AVX, does runtime check for AVX support
1> [CMake] * X86_PRESUME_SSE, assume target CPU has SSE1 support
1> [CMake] * X86_PRESUME_SSE2, assume target CPU has SSE2 support
1> [CMake]
1> [CMake] -- The following OPTIONAL packages have been found:
1> [CMake]
1> [CMake] * Python
1> [CMake] * PkgConfig
1> [CMake]
1> [CMake] -- The following REQUIRED packages have been found:
1> [CMake]
1> [CMake] * Threads
1> [CMake] * OpenGL
1> [CMake] * Git, fast, scalable, distributed revision control system, <https://git-scm.com/>
1> [CMake] required to set up package version
1> [CMake]
1> [CMake] -- The following features have been disabled:
1> [CMake]
1> [CMake] * USE_ALLOCA, Use alloca for stack arrays (on non-C99 compilers)
1> [CMake] * CUSTOM_MODES, Enable non-Opus modes, e.g. 44.1 kHz & 2^n frames
1> [CMake] * BUILD_PROGRAMS, Build programs
1> [CMake] * FIXED_POINT, compile as fixed-point (for machines without a fast enough FPU)
1> [CMake] * X86_PRESUME_SSE4_1, assume target CPU has SSE4_1 support
1> [CMake] * X86_PRESUME_AVX, assume target CPU has AVX support
1> [CMake]
1> [CMake] -- Using vendored opusfile
1> [CMake] -- Opus package version from git repo: 0.12-13-gb3f3d2c
1> [CMake] -- Opus project version: 0.12
1> [CMake] -- Dynamic opus (opusfile): $<TARGET_FILE_NAME:opusfile>
1> [CMake] -- Enabled ogg music: using stb_vorbis
1> [CMake] -- Using vendored libflac
1> [CMake] -- Failed to find Gettext libintl (missing: Intl_LIBRARY) (found version "0.21.0")
1> [CMake] -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
1> [CMake] -- Dynamic libflac: $<TARGET_FILE_NAME:FLAC>
1> [CMake] -- Using vendored libmodplug
1> [CMake] CMake Warning (dev) at out/build/x64-Debug/_deps/sdl_mixer-src/external/libmodplug/CMakeLists.txt:3 (project):
1> [CMake] Policy CMP0048 is not set: project() command manages VERSION variables.
1> [CMake] Run "cmake --help-policy CMP0048" for policy details. Use the cmake_policy
1> [CMake] command to set the policy and suppress this warning.
1> [CMake]
1> [CMake] The following variable(s) would be set to empty:
1> [CMake]
1> [CMake] PROJECT_VERSION
1> [CMake] PROJECT_VERSION_MAJOR
1> [CMake] PROJECT_VERSION_MINOR
1> [CMake] PROJECT_VERSION_PATCH
1> [CMake] This warning is for project developers. Use -Wno-dev to suppress it.
1> [CMake]
1> [CMake] -- Dynamic modplug: $<TARGET_FILE_NAME:modplug>
1> [CMake] -- Could NOT find SDL2main (missing: SDL2_MAIN_LIBRARY)
1> [CMake] Fetching stb_image
1> [CMake] Fetching glfw
1> [CMake] -- Using Win32 for window creation
1> [CMake] Fetching glad
1> [CMake] (Plane Game) add_library soloud
1> [CMake] -- Configuring done
1> [CMake] -- Generating done
1> [CMake] -- Build files have been written to: C:/__Projects/_CodingProjects/Albuquerque/Albuquerque/out/build/x64-Debug
1> Extracted CMake variables.
1> Extracted source files and headers.
1> Extracted code model.
1> Extracted toolchain configurations.
1> Extracted includes paths.
1> CMake generation finished.
maybe it really was that simple... elia. Imma see what happens now...
ok
ok so I can't use target_include_directories
Hmm, I’m thinking 😂
Can you link your CMakeLists, please?
ok
cmake_minimum_required(VERSION 3.15)
project(PlaneGame)
add_custom_target(copy_data ALL COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/data ${CMAKE_CURRENT_BINARY_DIR}/data)
include(FetchContent)
target_include_directories(imgui PUBLIC include)
target_include_directories(spdlog PUBLIC include)
target_include_directories(fwog PUBLIC include)
#target_include_directories(SDL PUBLIC include)
#target_include_directories(SDL_mixer PUBLIC include)
message("(Plane Game) add_library soloud")
add_library(soloud STATIC IMPORTED)
set_target_properties(soloud PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/soloud/soloud_static.lib)
set_target_properties(soloud PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/soloud/include)
#message("(Plane Game) add_library freetype")
#add_library(freetype STATIC IMPORTED)
#set_target_properties(freetype PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/freetype/freetype.lib)
#set_target_properties(freetype PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/freetype/include)
#message("(Plane Game) add_library lua")
#add_library(lua54 STATIC IMPORTED)
#set_target_properties(lua54 PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/lua/lua54.lib)
#set_target_properties(lua54 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/lua/include)
#message("(Plane Game) add_library BulletDynamics")
#add_library(BulletDynamics STATIC IMPORTED)
#set_target_properties(BulletDynamics PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/bullet/BulletDynamics.lib)
#set_target_properties(BulletDynamics PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/bullet/include)
#message("(Plane Game) add_library BulletCollision")
#add_library(BulletCollision STATIC IMPORTED)
#set_target_properties(BulletCollision PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/bullet/BulletCollision.lib)
#set_target_properties(BulletCollision PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/bullet/include)
#message("(Plane Game) add_library LinearMath (Bullet)")
#add_library(LinearMath STATIC IMPORTED)
#set_target_properties(LinearMath PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/bullet/LinearMath.lib)
#set_target_properties(LinearMath PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/bullet/include)
set(sourceFiles
Main.cpp
ConfigReader.cpp
TestRunner.cpp
SceneLoader.cpp
ProjectApplication.cpp
)
set(headerFiles
include/SceneLoader.h
include/ConfigReader.h
include/TestRunner.h
include/ProjectApplication.hpp
)
add_executable(PlaneGame ${sourceFiles} ${headerFiles} "TestRunner.cpp")
add_dependencies(PlaneGame copy_data)
target_link_libraries(PlaneGame PRIVATE TracyClient SDL SDL_mixer soloud glad glfw imgui glm cgltf tinygltf stb_image spdlog fwog Albuquerque)
ad
actually
no I'll just commit this branch and link that instead
Also I’d recommend linking like this
This is better, because if CMake doesn’t find a target, it adds "-l<targetname>" and you fail at link time. With namespaced targets, you’ll fail at configuration time
oh that makes sense
The main CMakeList for the project ^
Okay, I’ll hop onto my PC in a moment and check it out
I spent DAYS studying CMake, so I should be able to figure it out, lol
haha ok. I'll just put aside this project for the day. Tomorrow i might attempt the PortAudio route but if u figure something out I'd use it
and don't worry about havin to solve the problem for me or anything. I didn't post it in #questions or anything it was more just taking notes aloud
My CMake skills are very lacking I just monkey see monkey do from: https://github.com/deccer/CMake-Glfw-OpenGL-Template
Although since I used that template, Deccer had upgraded the Template to not use target_include_directories
https://github.com/eliasdaler/sdl_breakout
Try building my project in the meanwhile. It's pretty simple (except for Lua stuff)
Instructions are in the README
ok! This can be a great example for improving my CMake-fu
Hmm, I hate "Cmake templates" with a passion, but that one is OK 😅
I used to hate struggling with CMake stuff as i saw it as a roadblock to doing actual code but now that I see build system stuff as actual coding too I have come to terms that I gotta get better at it and not avoid 'em anymore
Yea some stuff seems more 'ritualistic/supersititous' as an amauter in it compared to C++ and C where stuff breaks and it tells u why more directly
but I can see myself slowly learning just letting myself try it
https://edw.is/using-cmake/
I recommend reading my article, it should make a lot of the stuff clear. 😄
Also I can recommend getting the book mentioned there, it's my CMake bible, haha
The personal website of Elias Daler about programming, technology and videogames
Are there exercises in that book 👁️ 👁️
Still gonna get it regardless tho :)
lets go
No, it's more of a reference, it's way to big to get it in one go
ooh I see. Not like a 'textbook' but a referene book
Yeah. Btw, the author of FetchContent wrote this book
...
why did I think CMake was standardized like actual C++ and have a whole org and stuff
it now just hits me that its an open source project
yea it says right there
thanks man btw @marsh cliff. Even if u dont solve it for me tonight at least u pointed me to places where I can improve my CMakefu
as rn the stuff looks like magic where its like 'idk why it says it cant find it i fetch content'd the sdl2'
I made this meme out of frustration last week I think https://cdn.discordapp.com/attachments/1058235170412576769/1115249268635217942/image.png
The worst thing is figuring out how to copy a dir with resources to your binary dir
Also you'll probably have a lot of fun figuring out how "INSTALL" works
Installation is still a bit of a dark magic for me, but for now I use it for making a "prod" dir that I can share with people
(I symlink resource dirs to binary dirs so that I don't have to copy it all the time)

I have considered it. Like 'giving up' and just having the precompiled .lib and .a and just branch conditional check for OS
but I wanted to learn to be portable
to be 'all u have to do is hit make and it works'
even if its tough
The saddest thing that I see in some repos, haha
it is time
mine has it but only in a 'i am not strong enough to fight this boss yet I'd come back later when I level up' way
For now, my "boss" is building on Windows with MSVC. It's always the worst thing, lol
- "Oh yeah, gotta define NO_MINMAX"
- "You need to add /MtdDD in Debug, not /Mdasdjskajd"
- .dll hell
I have a different project codebase thats just full Visual Studio .sln file and the personal gimmick is its win32api only (minus PDCurses)
its my 'when in rome, do as the romans' style curiousity
It's its own different hell imo
Visual Studio .sln files
Yeah. On my first job, I had to port a huge project which used VS project/solution files to CMake. I learned a lot of fun stuff that VS can do
It's almost a programming language
Build systems and stuff is one of my weakest skills and it can be so easy to coast by and get away with not learning it, like on existing projects or whatever
Or maybe I'll need to check if it still actually compiles on Windows, haha
That's the game
hell I prob dont even actually have to learn it for my career if im lucky... but i have to if i want to not be too NIH but still a little NIH
oh i mean what (Install) is
ah i cant get it to compile thru the visual studio CMake button.
I can try thru command line later but im weirdly burnt and tired from the past hour just spent lookin at build errors 😔
If you do the commands from the README, it should be much easier
I don't trust VS and do all this stuff in CLI
ok i can try that now
I'm getting the error on SDL_mixer, btw
It's likely that someone working on SDL_mixer messed up, but I'll see.
I had to do a lot of stuff done to get SDL_image working with FetchContent, btw 😄
I appriecate including the classic mkdir build
cd build
I know it intellectually but when tired its nice to go 'as you wish' to a lovely readme
I like making 100% complete build instructions 👍
yea. its already a hassle to get ppl to bother with personal projects that require downloading
for the 5 ppl willing to click 'clone' u gotta roll out the red carpet
I hate how SDL guys like to enable everything by default. That's what's causing you problems
Yep
(for context, CMake for MSVC will produce a .sln file)
I can try it for mingw gcc tho
but i tired rn
are there ways to feed Options from outside?
That's something I realized I didnt know how to do but I didnt know how to google
idk if its just me but it feels like Google is no longer the first place to look when there's tech or coding problems. Feels like better off looking at the docs/manual first which is the habit im slowly picking up unintentionally
Used to be search engines take u to the docs if its good or forum post if its better
but now it just takes u to nothing
That's how I do it - I just copy them from the CMakeLists.txt of the project and "redefine" them with needed values
So far, that's the most "stable" way of doing it that I found. Need to investigate a proper way to do it later. I think they added something for it in later versions
Ah. So there's no way to 'feed' it
I experimented with just forking the project n changing the CMakeList myself and FetchContenting that to see if it works (it does in cases)
but I dont see that as a solution but more part of me researching n learning how cmake works
What do you mean by "feed"? Setting default values?
yea. Should've said 'input' instead
Like for example here
^ this approach works
Is ther a way when I FetechContent to go 'SET SDL2MIXER_PUS ON'
oh
thats whats going on there
My bad I thought this was the original CMakeList.txt
Yeah, I'm experimenting with it now and it almost works
Will show soon
thanks so much
im gonna take a rest for tonight ur a lifesaver.
you got a kofi or anything?
Ha-ha, no problem.
No, I don't have any ways to give me moneys. I feel like I'll only ask people for money if I make a complete "good" game
haha nah its ok. I just wanted a tip like a few dollars as a show of appreication
like buying a drink for a friend
or a... coffee I guess xD
nevertheless have my blessings and thanks 
Yeah, I understand, thanks 😄
I might make it if I start doing more "visible" work. 🙂
even just having this convo and having the link to ur article gives me a direction :)
yea i feel u. if someone asked to tip me id also humbly go 'its ok mayb once i have more visible work' too haha
unless its caio because he can literally buy me a real coffe in real life LMFAO
Haha. I thought about making "a donation box" when I was more active and writing a ton of articles.
But then I stopped and now I write an article like once every 2-3 years and I'm fine doing it for free.
But "ko-fi" stuff sounds more chill than something like a Patreon, yeah
yea its like a donation box. I too would also rather have that than a 'patreon'. Only way I'd consider a patreon is if I really do become that freelance work + house spouse to my SO or somethin since its like a full parasocial management stuff
also I like ur site's layout. Gonna adapt it for my own as right now I need to clean it up a bit to have a list for my articles and projects. I am still learning how to write them better but I see that we have a similar idea of keeping the markdown minimalistic... https://clementineaccount.github.io/Coding-the-minimap-for-an-Undergrad-Game-Development-Project/
But one thing I do like that u do is using bulletin points to format ideas. Seems like it makes it way easier to write while lookin good. I was struggling trying to be technical but also accessible with regular paragraphs
I like the Related pages too. I will have to use that concept myself perhaps.
I definitely gonna improve my site this weekend out of inspo of urs, but not rip it off 1:1 ofc
Thanks! I spent a lot of time remaking my website from scratch. I also spent a lot of time making it as "free" and non-tracking as possible.
It's almost as simple as websites can get
You can rip off as much as you like, it's so minimalist that it's like copyrighting "<html><body>" lol
Haha maybe I would. Mine is minimal as it can get with Jekyll (I forked some template for it like a few years ago and I am only now touching and learning proper web dev)
but I might just steal your font size and incorporate some ideas for the layout anyways
woah thats so cool
i didnt know u had like a full game u can play with graphics and stuff
I used Jekyll in the past. I now use Hugo. It's a lot simpler
But I want to write my own "markdown to HTML" converter at some point. I have a buddy who writes his website in pure HTML, but I'm not hardcore enough to do it, haha
It's not a "full game", it's a vertical slice. I never finished a proper game in 10 years of doing gamedev, haha
That'd be pretty sweet. I do my initial drafts for my blog in Obsidian
porting them over to the final site is a bit of work (I gotta carefully name my images and upload them in consideration, or embed vids if I use them as examples) but worth doing to remind myself 'the user gotta download this stuff'
maybe I could make a plugin that just has an 'export to static site page' that automatically gives me a folder with the images embedded and renamed and the markdown file's embed's renamed rleative to the path it'd be when uploading too that'd be a useful tool for me
worth doing just so I can say 'I made an obsidian plugin for myself that works and i use often' ig haha
ok ty for the chat and listenin to my rambling and the help n stuff. im gonna now just lie down on the ground and destress or play trackmania or somethin :D
I'm currently looking for the most "simple" way to do stuff on the blog. I might talk about it later, but I'm a bit lazy at the moment. 😄
I'm almost done with the build, btw, might finish it in a few minutes
-FetchContent_MakeAvailable(SDL_mixer)
+
+FetchContent_GetProperties(SDL_mixer)
+if(NOT SDL_mixer_POPULATED)
+ option(SDL2MIXER_INSTALL "Enable SDL2mixer install target" OFF)
+ option(SDL2MIXER_DEPS_SHARED "Default value for loading dependencies dynamically" OFF)
+ option(SDL2MIXER_SAMPLES "Build the SDL2_mixer sample program(s)" OFF)
+ option(SDL2MIXER_CMD "Support an external music player" OFF)
+ option(SDL2MIXER_FLAC "Enable FLAC music" OFF)
+ option(SDL2MIXER_MOD "Support loading MOD music" OFF)
+ option(SDL2MIXER_MP3 "Enable MP3 music" OFF)
+ option(SDL2MIXER_MIDI "Enable MIDI music" OFF)
+ option(SDL2MIXER_OPUS "Enable Opus music" OFF)
+ FetchContent_Populate(SDL_mixer)
+ add_subdirectory(${sdl_mixer_SOURCE_DIR} ${sdl_mixer_BINARY_DIR})
+endif()
+
-target_link_libraries(PlaneGame PRIVATE TracyClient SDL SDL_mixer soloud glad glfw imgui glm cgltf tinygltf stb_image spdlog fwog Albuquerque)
+target_link_libraries(PlaneGame PRIVATE TracyClient SDL2 SDL2_mixer soloud glad glfw imgui glm cgltf tinygltf stb_image spdlog fwog Albuquerque)
-#include <SDL3/SDL.h>
-#include <SDL3/SDL_main.h>
-#include <SDL3/SDL_mixer.h>
+#include <SDL2/SDL.h>
+#include <SDL2/SDL_main.h>
+#include <SDL_mixer.h>
My linker dies because of how you link to soloud, but it might work on your machine
oh can u make it as a pull request
that way I can say 'yo i accepted a pull request'
lmfao
also helps me look over this and merge it tmr when im not so tired
BUT THANK U THO
even if its not a PR I'd put it in myself later
My default clang-format file reformatted a lot of your code and I'm too lazy to cherry-pick needed changes, but this is basically it 😉
Btw, FetchContent sucks, because once you delete a build dir, you need to fetch and wait a long time again. With git submodules, you can make as many build dirs as you wish and not fetch once (only need to do it when you clone the repo)
OH
YOU TELLING ME IT DOESNT HAVE TO BE THIS WAY?
I dont need to wait a long time everytime i delete a build dir or even when i change one tiny thing in the fetchcontent txt?
woah
Ha-ha, yeah. 😄
Also if you migrate to Linux, you'll know the power of CCache which basically caches all your builds so you almost never have to build stuff that doesn't change
i was an ex linux citizen once
but i was a naive arch kid who didn't have the discipline to pacman syu properly
i did enjoy it tho, i like pacman
gotta just save up for a new SSD or somethin to patition it in
I'm a Debian boomer who doesn't like to update ever 
Stability all the way
yea thats the linux route id take when i come back
Arch is too high maintaince for me
Ubuntu or Mint require even less maintenance, but I like minimalism, so I install Debian without DE and start blastin'
ooo
i used tiling manager i think i3 it was neat i miss tiles
feel less cluterred than all the alt tab stuff
Is it SDL2?
and SDL2_Mixer instead of SDL_Mixer?
I just need it to find SDL2
ill delete my CMake Cache and try again tho
oh yea that might be what i needed to do (delete the cache)
I use i3, it’s perfect.
Doesn’t matter how you name a FetchContent thing
But here it matters, should be a proper target name
Oh. How do I determine the proper target name? So far it matches with the name in FetchContent which I always align with the .git repo name
but this is the first time I noticed its different.
You need to look into CMakeLists of a dependency
Sometimes people say the name of the targets in docs/readme
ah I see. So far I must have jsut gotten lucky and had repos where the target name and the git repo name matched
So I thought it was based off that 😅
Yeah. And sometimes the targets might even differ based on how you link (static vs dynamic)
that made me die for JPH once. explains a bit haha
thanks again im now gonna take a break
https://github.com/eliasdaler/Albuquerque/commit/c1f50761ccfeaffb6478079d18ab7d8225c6ac62
Here you go. Even fixed soloud, lol
The game doesn't start for me, though. Tracy hangs on startup for some reason
Only header fixes matter in "ProjectApplication.cpp", the rest was my default clang-format messing stuff up
oh I know why tracy hangs prob wants firewall access
can u check if Tracy hangs here too: https://github.com/deccer/CMake-Glfw-OpenGL-Template @marsh cliff
as I didn't remember touching it when i used the template
Firewall on Linux, right 
well tracy always asks if it wants private/public access on first run
thank u deccer, very cool
u can repost or put it as an Issue for the template and post in #1026467818943807579
ty very much tho still
I might take a look at it later
Hope the fixes help 😄
you didnt clone with recursive perhaps 🙂
ah tracy hmm, im open for fixes ofc
I thought I had to do like, SOURCE_SUBDIR https://github.com/ClementineAccount/Albuquerque/blob/SoLoud-CMake/lib/CMakeLists.txt#L86 (for a differnet repo)
gotta check if it breaks on urs first to see if its something i broke or if its the template haha
But it uses FetchContent, right? So I don't need it
very possible that i fooked up
deccer cubes are submoduled
and i always clone everything with --recursive just because there might be a hidden submodule 🙂
Ahhh. You can add a check to CMakeLists.txt to make it more user-friendly (check for existence of file and FATAL_ERROR if not found)
Yeah, it works now
Doesn't work when pwd != binary dir, though, classic 
oh so the tracy must be something i messed up with 😔
You do, but if you launch your binary from "build" dir (and not from "build/src/Project"), then it breaks
possible
im used to cmake tools for vscode, and just run debug from there
without setting up anything
but its good that you provide all those hints 🙂
It probably sets a working dir next to a binary for you
I manually set working dir next to my binary when the game starts, but that requires magic
much appreciated
not sure, i dont think i even use tracy anywhere, besides RenderStart/RenderEnd something like that iirc
Probably, the deccer's template works
ok. no error messages or console log or anything just a straight hang?
maybe its caused by something else
yea I used tracy in other spots
maybe i'd just setup a linux vm like debin just to reproduce it 
dw tho ty
Here
gruvbox ❤️
That's my forked gruvbox that I slightly changed for my tastes 😄
oh i have no idea what to do to fix this :(
unless it might be
the tracy fetchcontent imma see if its different
nope its the same
No, it's not build related
It's probably due to init order, like maybe you initialize Tracy in "global" area (before main)
tracy should be initalize in the same order as deccer's since it goes thru Project.Lib (which is Alberquerque here) first
i'd prob have to get a linux vm to debug it and just disable tracy, whats the term for it again, marks
and see what causes crash and what doesn't
I might debug during the evening, I think that'll be easier for me to figure out, because debugging in Linux is not easy 😄
oh yea true
oh i'd let deccer know once I put in the cmake fixes so they can try it too
thatd prob be tmr
the general order of things is the following
App::Run()
{
if (!Initialize())
{
return;
}
if (!Load())
{
return
}
while WindowOpen
{
}
Unload();
}
Initialize/Load/Unload are virtual and usually overridden in derived class
Well, for some reason Profiler::Profiler is called before the main (probably does static init)
hmm ok. so then why would it work ok on windows
Different init order, perhaps
See: https://en.cppreference.com/w/cpp/language/siof
If its caused by Tracy's Profile::Profile static init call, how do I fix it on my end
FrameMarkStart is the Tracy here too
I didn't override Run()
If I knew, I'd post the fix
Investigating it now
i'll head to bed now. thanks so much for looking into it for me. The fixed soloud for example is rly useful
Run is not virtual
You're welcome 🙂
It's not a problem related to "Application" class, it's created in main, but tracy tries to init some stuff before main and fails
Oh yeah, beautiful
So probably need to do TRACY_MANUAL_LIFETIME, will check later
"solution"
🇹🇫
Gamedevs be like "works on Windows => ship it"
issue: "doesn't work on Linux"
fix: "Use Windows"
fix: open an issue at Tracy/Tracy
Why does it work in cmake template but not alb
Because static init order is undefined. So it might work sometimes and might not work sometimes
They try with "init_order" here, but it doesn't work for my compiler
it sounds fucked
Oh that makes sense
tracy shouldnt hook into anything when i not call it the first time, but should init if its using some static instance bs only when i access it the first time in good old singleton fashion
So it couldve been the other way around in an alternate reality
There are million flags to not do it, but I don't seem to figure them out
hehe
Oh that is one difference between template n mine
I think i have tracy calls in my project
But deccer cmake only has it in .lib
i should have 2 calls in there too iirc, 2 ZoneScopeds i think
only app is in lib, actual app is in project
ok looks like it was just UB
Disabled Tracy, now it doesn't work here, lol
Ah "Data/test.txt", should be "data/test.txt"
One more Windows thing
I'm doing a Linux porting at this point, lol
Now soloud crashes
More UB 
OH U FOUND IT
I had that same UB in that same branch
I used cmake dir
I couldnt figure it out
But it was why i was changing soloud out hehe
Yeah, for some reason souloud's instance is badly inited
top 10 unexplained mysteries
: (
The only thing I can think of is some thread_local stuff, but idk
What
ok possible reason is eliasdaler already had SDL in Path thru vkcpg or somethin?
already cleared the cmake cache when regening
I think I need to FetchContent_GetProperties SDL too maybe
lets try this
ok dont do that
maybe because SOURCE_DIR and BINARY DIR is only in SDL_Mixer not SDL so need to check...
no it has it so idk
maybe sdl just nees to be in lower case (SDL_Mixer was)
gonna delete the cache again just to be usre
ok so should be static library...
ok that looks like what i want
ok
why would it say all that include SDL stuff if its just gonna turn around and go 'sorry dont have'
and it has to go through this stuff everytime I make a small change
Alright, its time to put away this branch and take the PortAudio route
ah it needs a _static underscore
ok sweet it compiles even with the #include
ok
ok
ok
i dont think this was meant to play audio I have wasted my time
Yeah portaudio is not what you want
portaudio is a low level wrapper around the OS audio API like WASAPI or ALSA
It's what you'd use to implement your own audio library like soloud
My options are to somehow fix the UB for SoLoud when it's fetchcontent
or figure out why SDL can't be detected
Jasper linked this earlier today
looked interesting
you know
the ironic thing is if that was the solution we'd have gone full circle
since my soloud backend was miniaudio
UB when using FetchContent <#1093833868336963725 message>
(Eliasdaler encountered the same UB I had)
When not using FetchContent its ok but I had to precompile it as a .lib and include it, which I dont wanna do for crossplat
I am gonna try miniaudio directly tho
Ironic since if that was the backend I was already using
I want something that can FetchContent everything on both Linux and Windows
but yea precompile both .lib and .a version
prob should've been what I should've done first as a 'bare mininium'
I think I'll do that if miniaudio can't fetch content and 'just works'
Why not just clone it as a submodule and build it as part of the project
I've never used fetchcontent
If it has a sane CMake script it should basically just work™️
heh yea...
In fact that's not a bad idea for a fork/clone of the #1026467818943807579 that I can make
Replacing all the FetchContent with git submodules instead
Alberquerque started from that template but as it grows bigger FetchContent's flaws starts showing itself more
no cmakelist but its header only pal so
Elias's blog post has some stuff about it: https://edw.is/using-cmake/#git-submodules
FetchContent and Git-Submodules
Ok miniaudio works! Now It'd just take awhile to rewrite the audio code to use it instead
This entire two files are dying for a big refactoring and rewriting tho its way too messy, but I want to get an alpha release out that works on Linux first before then
I'm assuming it doesn't have any spatialization or anything like soloud does, does it?
I don' think it does
but I wasn't using any for the demo either too
wait
no it does have spaitalization in the high level API
ah ok cool
Thing is due for at least a bit of cleanup since this is a mess
In a way this is already a form of 'refactor' https://github.com/ClementineAccount/Fwog-CMake-Glfw-OpenGL-Template
Since it reorganises the same ideas into actual structs at least (and then I want to further clean it up by making them classes with their own .cpp and .h, just kept it as struct since Fwog Examples use that)
This is a nightmare to work with now but was good for fast earlier devleopment + it gives me an idea of how I want to actually organize my code based off my needs
This is a lot better in comparsion
ofc it missing some stuff like a Transform struct type
and I want to move to a more 'has-a' relationship than 'is-a'
Even though it makes the refactoring a bit more challenging (since u gotta work with messy stuff and slowly clean it), it seems a good point to refactor for a game project is when the first gameplay loop is there (start, end. Can restart. Have a fail state) which is where my project is at
Another good indicator I found that is more emotional when its time for a refactor is when adding new features or whatever makes u feel that 'procrastination urge' because in ur gut u know the codebase is getting a bit hard to easily change
I’m gonna build this on Windows just to prove that SDL+SDL-mixer should work
Btw, it’s include <SDL.h>
Not SDL2/SDL.h
It worked for me, because I have libsdl2-dev installed on my system
that makes sense. I figured it was somethin like that
I did try just include <SDL.h> too but same thing
Tried on Windows, yeah, soloud complaints about missing SDL2, but this is because it uses find_package to find it, which is silly
If you remove soloud stuff from your codebase, everything else should work
Ah it was from soloud, which is from the FetchContent(...). Yea I encountered that earlier too.
Thanks. I'll see how it works without it.
but in the end it seems I might go with just miniaudio (as its less deps) but it was still good to figure it out in the end.
I also noticed that in one of my old projects that use soloud, I wrote my own CMake for soloud, because the one in "contrib" is really dumb
Maybe I'd PR that contrib sometime using ur ver
ok I am gonna see how it compiles w/o soloud in the SDL_Mixer branch now
It wasn't "general enough" for PR as it only included parts that I needed
And I didn't want to spend hours rewriting their CMake, so I gave up
#include <SDL.h>
Try my branch from this commit: https://github.com/eliasdaler/Albuquerque/commit/c1f50761ccfeaffb6478079d18ab7d8225c6ac62
That was the original one I started with. It has the SDL2 and the SoLoud
I'm gonna remove soloud in my branch then, I think it might be easier to figure out what's going on, haha
Deleting cache and trying again
ah its ok. At this point we don't even have to touch the SDL_Mixer route
since I went with miniaudio (ironic as it was the backend I used for soloud)
Sorry. No luck. Don't worry about it though as the miniaudio approach worked in the end
Maybe I'll revisit this issue again some other time in the future
Okay
I removed soloud, but glad generation broke and I gave up again.
Anything that does generation at build time is cursed
Btw, I highly suggest doing all cmake commands in CLI (it's literally only "cmake <source dir>" to generate a project/solution) and then using generated VS solution to build stuff instead of "VS CMake stuff" - it's much more predictable what generated solution does
But if you change something about the CMake, you'll have to generate the project again and reload it in VS
Looks like this (but you'll need to find your target in project lists and set it as "Startup project" (right click on the name) so that build/run/debug works on this project and not on something else
But personally i use vim btw(tm) and CLI, so that if something breaks, it's definitely my fault, and not the program's
But it has a steeper learning curve, yeah
But I think that learning simple CMake with Notepad++ is much easier than figuring out how VSCode works and what CMake magic it (or vcpkg) generate for you
And don't get me started on beginners manually setting up VS solutions 
Ah yea. I ahve done this sometimes before too esp when cloning other projects. I guess that shoudl be my goto when I am debugging the CMake lists too.
i feel better. draft end up being a bit more comfortable with a more 'journal' based tone as there's not much technical depth to something as basic as blinn phong but i still wanted to share some process stuff.
The inevitable post on the refactoring (which also would reference that CMake nightmare of replacing SoLoud with MiniAudio, and the SDL_Mixer consideration) is gonna be interesting to write. Can talk about how I went from that messy asf monolithtic global variables .cpp file to splitting them up and implementing some design patterns. I wanna experiment with Facades more. I kinda worry about design patterns because sometimes u see things like Singletons just being recommended as tho its a real pattern, but I suppose a singleton is still an improvement over literal global stuff just lying around (even if its just the same issues just with a sense of self-awareness about it)
Plus the single in singleton at least does reduce one actual flaw with globals that arent singletons anyways
urm the singleton tangent is just me being 'man i remembered learning singletons and thinking i was learning design patterns how would i know if some pattern I learn from an old book has a code smell I cant smell yet' and the answer is: dont worry about it
just do it and then learn from that ig
I heard good things about Design Patterns: Elements of Reusable Object-Oriented Software that implies its worth reading. But I forgot if I heard its controversial and the downfall of human society or if its good actually and worth reading as a foundational knowledge before learning even better ways of code organizing and patterns
Code smells and how they interact with design patterns in general are hard and have a lot of social elements to it. You can't just write a few alternatives and profile it to get an 'objectively correct' answer at the end with a merit. I think for the early junior stages of my career the best opinion I can have on it is to have no real opinion on it beyond what everyone else in the project I am assigned to is already doing. Of course, in personal projects espeically ones from scratch... well I guess I can just make stuff up based off 'vibes'. As long as im getting stuff done even the nightmare of monolithtic globals is still workable and provides great challenges and learning opprounities when refactoring them or rewriting them
Like current Alberquerque plane game got just to a point where adding a new feature now is just not wise since you have to crawl through 3000 lines in one file and copy paste existing stuff without proper code reuse... but the fact it got to that point is very good actually because it does mean the patterns I implement and think about from the theory I read will be used to solve real problems
and ultimately at the end I can compare and contrast and go 'does this make developing new stuff, profiling and debugging existing stuff easier or not?' and thats something I can confidently give an asnwer to.
way better than trying to plan a design from the start so im glad I just 'turned my brain off' for it there 
(oh yea nobody has to reply that might as well be a public journal entry dw about it. Its just a topic of software engineering I used to be really weak at but I think I am getting better at knowing how to improve at it -- 'just write more code')
Read Game Programming Patterns. It’s 1000x much better
Also Game Coding Complete
man after I complete the linux port of the alpha this project just gonna be in a refactor hell for awhile (but one that i'd learn a lot from). Actually mybe it wont take as long as expected
Luckily I had made the alpha branch in such a way I can make more levels on there too if i want ig
I finally got time tonight after other focuses so im just slowly replacin soloud with miniaudio and then after that i prob gonna refactor it while reading the two recommended books
wait i forgot, didnt i explore through facades how i can refactor in a way that isn't halting
yea ok that'd be smart
]
40 minutes doesnt seem too slow for porting to a new audio lib
i didn't port everything over. Just one sound effect for now
hmm I do think I can do the rest pretty fast, at least within next 2 hours at a relaxed pace
imma do that now
ooh the background music might actually be even easier as I used function to handle calling it rather than in place
This one was 15 minutes or less urm now the last one is just the sfx when u crash and collect a ring
Now I am tempted to go 'i can finish that easily now' but I am gonna do a lifehack. I am gonna delibrately save that for next coding session so that I can start off giving myself a very 'thats a really easy job i can do that fast' task to start off on which can help w/ productivity or something
Decided to stop sitting on the draft and upload the imperfect blog post that also relates to plane game: https://clementineaccount.github.io/Some-early-progression-of-the-simple-Blinn-Phong-and-Skybox-in-my-personal-project/
The draft had been done for a few days but I was like a bit indecisive if its too amauterish... but I decided just to upload it anyways before working more on to improve the site layout
hells yea
check mark'd
Me: "This feature or refactor wont take long I just need to edit a few lines of code-"
gotta start always putting that 'g' for globals. Sometimes they can be pretty sneaky
alright i think ive replaced all the soloud stuff
what're u using now
miniaudio
how do the APIs compare
its actually a bit ironic, since when using soloud I was using miniaudio as the backend so...
I basically just skip the middleman. In terms of the interface, so far the high level API is very similar. If anything I kind of prefer miniaudio's for one minor thing: this is defualt behavior https://miniaud.io/docs/manual/index.html
In terms of building, miniaudio is much better
nice
iirc soloud required using some patch to have not-sucky cmake
that u can just FetchContent or git submodule. Its interface header only tho but i know how to deal with those now
ok epic
shrimple as that
header only and just works
I will try and compile this now on my Linux virtual machine altho it wont be able to detect runtime issues I imagine
wait I can prob just try and compile it using wsl if i am trying to find compile time errors yea
isn't there a null backend or whatever
you mean for SoLoud?
Oh i meant compiling Alberquerque on my WSL
o
for miniaudio it just works like stb_image and stuff
FetchContent and just goes
no setup required
ok so you don't have to specify a backend like you do for soloud
yea
which would be funny, since soloud can use miniaudio as a backend like you said earlier
Actually I think you can choose too according to this https://miniaud.io/docs/manual/index.html (2.7)
backend recursion
but I don't remember setting it and i can't find where i set it so I don't think I did. So there's prob a 'default that just works' at least on windows
and I imagine on Linux it'd probably auto detect. That means its probably handled in the CMakeList.txt file so i'd check that now Its handled when building
thats a much more elegant way of handling it. In SoLoud I had the impression you must specify it explictly so if you want to go through a list you have to do it when building in your CMake
which was what I was going to resort to if miniaudio didn't work
The fact miniaudio 'just works' makes me wanna make a PR of CMake-Template to add it as a default @deft wolf
lets see what our errors might be using WSL to compile now
im not even using google test yet so I should also find a way to organize the CMakeLists so that optional libraries for projects are better organized. Maybe i'd just separate the libs out by common vs project specific
ok so we can't use WSL to do it because WSL doesnt have a graphics... today I learn that it is possible to not have any OpenGL backend? ok
i got this
oh i see
dw i can try n fix it on my own first
there we go- oh i need to merge to main
but im the senate
Google just sucks nowadays huh? (Edit: Ah ok: https://forums.virtualbox.org/viewtopic.php?t=101304)
oh nvm it was on my end
Wait no thats a different error Still on my end
@marsh cliff and @split blade if you both are interested. The current main branch compiles on Linux. Not sure about runtime errors though^
you need an up2date mesa on a vm
and force 4.6 and glsl 460
assuming you create a 4.6 context
oh yea it states right there. 4.6 but my VM version is 4.5. I can also just attempt a 4.5 context. It creates the window now, but I got to troubleshoot a different runtime error relating to 'bad optional access'. I'll troubleshoot that one on my own
bloody tbb
target_link_libraries(PlaneGame PRIVATE TracyClient miniaudio glad glfw imgui glm cgltf tinygltf stb_image spdlog fwog Albuquerque tbb)
i have to add tbb here on arch for this to build
and then it builds, but when i run it
ObjectUniforms a(model, glm::vec4(0.0f, 1.0f, 0.0f, 0.0f));
objectBufferaircraft.value().SubData(a, 0);
crashes at the the 2nd line
Yea same. I just got that too
I'd need to clone and compile Fwog's example programs to rule out if it has anything to do with Fwog itself or if TypedBuffer usage as Optional has issues on Linux.
i dont think its an optional issue
If the way I am using optional has issues that Windows can hide from me*
Line 732 doesn't crash though despite it being ealier no it does nvm
is Fwog OGL4.6 only or something? no way thats related but I can check by running OGL 4.5 on Windows. My fwog variables just don't get created maybe
Nah 4.5 works fine on Windows. I'l explore Fwog stuff on Linux later ad see if its Fwog. Might probably just be me tho. At least we makin progress
hehe just realized thats where the CMake Fwog template I made last week can come into handy lol
4.5 should be minimum
yup. ruled out it has nothing to do with 4.6 or 4.5 stuff. I will just see if Fwog Cmake Template works. If not then I know its something to do w/ Fwog on linux. If it does then its an Alberquerque thing
no worries
now i gotta take a nap
Alright. Confirmed that its not related to Fwog. So I know to look inside the Alberquerque
mashallah fwog would never be the source of bugs (except for when it is)
Actually frogs eat bugs
also i didnt push the model assets because whoops. That was also a cause of the issues
Alright! I got it running on my VM. It doesn't run at any reasonable framerate but its my VM even the Slow Roads doesnt run well on that
https://github.com/ClementineAccount/Albuquerque/commit/2413c3fd0d1cae294b264f4f5a5d7b7f278ded0e
This branch works on my Linux virtual machine^
doesnt run here
whats the error msg
same as before
but I fixed this here: https://github.com/ClementineAccount/Albuquerque/commit/2413c3fd0d1cae294b264f4f5a5d7b7f278ded0e
I'll clone a fresh repo again and double check if I had pushed it correctly tho 
Oh one of the fix commits didnt make it in I think
I should have cloned a fresh repo to double check the fixes. I'll have to make that a habit
This commit should fix it but I'd let you know once I clone and check again before u can try it: https://github.com/ClementineAccount/Albuquerque/commit/1f96b968cf968f3ab66dec29008584ba53038984
it's 4.6 "only" btw
meaning it uses 4.6 features in some places
off the top of my head, it uses anisotropic filtering (non-ext) and MDI with count
I see. Therefore I can just update my VM's Mesa to 4.6 and make sure Alberquerque is 4.6 too
should have nothing to do with your crash though
That bug had nothing to do with the OGL version btw. It was caused by mishandling an error (I forgot to throw an exception when a file didn't load, so the program continued )
I fixed it already yes
in fact the way I checked if fwog had anything to do w/ it was cloning the template too so thats nice.
i c
Cloned the repo and tried it on my Linux VM. It works no runtime or compile time errors after that commit*
*I had to downgrade the shaders to 450 for my VM as I couldn't figure out how to get Mesa to upgrade it to 4.5 (I dont think it can?)
mesa supports 4.6, and you have environment variables to enforce it
Forgot about this if u do try n compile ur imgui needs to be organized
Yea. I wasn't quite sure why I wasn't able to update following the instructions here: https://askubuntu.com/a/1355267
https://askubuntu.com/questions/691271/upgrading-to-latest-version-of-opengl-on-ubuntu-15-10/691693#691693
yea. I pulled main and was able to get it to compile on xubuntu. It might just be my virtualbox too
You might need the imgui.ini if the hud messy. I'd probably make an executable release tomorrow though that has the hud setup nice and the music enabled by default
