Posts

Making Hexwave work on Steam Deck!

Image
Hi there! Welcome to another Hexwave blog. Hexwave currently only works on Linux, which is currently a blessing in disguise as the Steam Deck runs on Linux and, as I want to make Hexwave run on the Steam Deck, now is a great time to get it working! So, how do we do that? Well, the process was more complicated than anything I've dealt with before. See, Hexwave is made to be extremely flexible. You should be able to compile it, take the compiled binaries, throw it on an older/newer machine, and run it perfectly fine (there will be pre-compiled versions too). However, with the way FFmpeg is currently linked, this doesn't work. If Computer A has FFmpeg 0.0.59 and Hexwave is compiled on Computer A, but Computer B has 0.0.60, Computer B will refuse to run Hexwave, as it's looking for 0.0.59. This is exactly what was happening when I was trying to run Hexwave on the Steam Deck, as FFmpeg on the Steam Deck is more up-to-date than the version in Debian 12 Stable. Now, there are two

Adding a Video Player with OpenGL.

Image
Hello there! Today, we're going to be talking about a major step in development for Hexwave, and that's the functionality to display videos. For the past couple of weeks, I've been working on the video manager functionality and failing to get videos playing. However, today we're going to be getting it working! Let's start by redoing the way I import glfw, glm, glad, and ImGUI in CMakeLists.txt.   Redoing imports Previously, I was relying on a git repo which had a CMakeLists.txt that you could fetch and use to easily import all the libraries I needed. This was great as I ran into nothing but issues the first time I tried to get it working, however, I was now running into some major issues with the newer versions on OpenGL. OpenGL 3.0 had massively rewrote parts of OpenGL, deprecating the glBegin functions and then later removing them in 3.1, forcing you to use shaders and vertex buffers. This made things incredibly hard, as I was using OpenGL4.6 (I believe). Whilst I

Saving & Loading for Hexwave.

Hello! Today we're going to be talking about how Saving & Loading works in Hexwave! If you don't know, Hexwave is my Interactive Film Engine (in C++) that I'm working on as part of my University assignment (and I'll continue to work on after).   Hexwave originally used CSV (comma separated values) to save projects, like so: ahhhh,woah!,1 test,testing!,1 teste,testing again,1 Whilst this worked for initial testing, I very quickly realised that it would break if people tried to use commas (I could fix that by using " ", but I wanted to move away from CSV) so I decided I needed to rewrite it to use JSON. I'm very familiar with JSON as I PR Review for D++ (which is a Discord Bot library) so we deal with JSON from Discord's API. It's also extremely common for storing data (if you're not using a database) so it's just the most logical option. If you're not familiar with JSON, it looks something like this : {     "testing":     {

The idea behind making Hexwave.

Image
About three weeks ago, I started my second semester (in second year) in university. This semester involves a module called "Industry Portfolio Development". The assignment for this module is to put together a Portfolio and make a new piece of work for it (along with showing 2 previous pieces of work). Now, as the totally sane programmer I am, I decided to make an Interactive Film engine in C++. Now, you may be asking the question: "Archie, what is an Interactive Film Engine?" and that would be an absolutely great question! An Interactive Film Engine is something pretty new (I'm not even sure there's an actual engine to only make these), but it's an engine that allows you to make Interactive Films like "Markiplier: In Space", "Black Mirror: Bandersnatch", or like the project I worked on called "Volition". However, if you've looked at my portfolio, you may have noticed a project called Stornaway. If you haven't seen my