Some days just shine. Like tiny, vivid rivers reflecting the sun in summer. Today was no exception and I sorta archieve 4 goals I started working on some time ago. One of these goals was the compression of ITK's thread functionality. It's nothing but completely redone and very tiny compared to what monster I engineered before. Consists of a more granular version of itk_qmutex (now called qutex) and a thread model supporting message passing and events. Didn't test the message passaging so far, but atleast my event setup works fine now. I was able able to completely the polling thread manager by realizing that my qmutex/qutex mechanic was already everything I need: queried access to a ressource and a single mutex guarding the qutex itself. Utilizing this mutex to also protect a ressource necessary for deciding whether to enlist oneself in the query or not is exactly what I'm doing right now. No stupid complex managers, no monolithic event management. Just what's already there. This makes it also possible to let the main thread work with events and messages the same way every other thread does. I don't need to carefully follow special deinitialization orders or delayed thread termination. Just simply work with the mutexes as I always desired it. Fascinating. And Satisfying. It's the best thing ever to feel that all the effort was worth it, that you learned more than by not skipping the hard work. That's the essence of deep reasearch, that's what makes the way more valuable than the result. Of course is the result more than important in this case cause it's my bachelor thesis, but by following the way I did I learned more about thread synchronization than most programmers just copying existing algorithms. I'm known for my love for complicated problems the way I tackle them. And each one brings me more knowledge and insight into the vast world of programming. Hooray! I'm gonna have the most awesome engine EVA.
Last night I did something actually useful with Lego! Since I started recording Let's Plays I had to use some sort of soft block under the actual microphone stand to prevent keyboard sounds from getting into the recording. I thought about buying a shock mount for it but soon realized how simple they are made and how fast I could create one using one. So yeah, that's what I did last night. I definitely need to take some pics of it - works exceptionally well, though I dropped pneumatics-powered mount adjustment cause I had to some sleep before going to work... Really simple to make, just need attach my recently bought popkiller screen. Hm, I could actually just remove the shield and stick it to an adjustable frame... Yep, that sounds like the better plan - too bad I'll need to disassemlble the popkiller first. Guarantee and so on.
There's a gameplay demo called "Receiver" from the creator of Lugaru and Overgrowth I first began to like but then immediately noticed how off the whole input system is. As the description states, this demo (seriously, it's not a game at all) is about having more complex gun mechanics and simulating firearm mechanics. Well, I can't tell how disappointed about the fact that someone really wants money for this. First of all, I love the idea of giving the player more control over gun mechanis - it's one of the first gameplay ideas I ever had since I started building plastic gun mechanics. However, it's has one of the most poor interfaces ever. You see, every human beeing will operate a gun visually and operating the gun itself, not pressing for any theoretical operation. Presenting the player a set of hard to remember keys associated with some rather minimal phrases is no way of an interface. Even worse, there's not even a full list of commands and stuff like safety triggers or so are visible at the gun itself. The "help" function is only an ever-changing list of operations, not the full set that is available. Really, I wouldn't have paid 1 buck for it if I had known what an incredibly dump interface I'd get. Seriously, dude. You know how roguelikes work? They associate characters with actions like "i" for inspect of "c" for calling. Of course you can't do this properly with WASD but you can usually rely on it being a fluid concept. It makes no game at all, it's merely a prototype nobody should ever pay for. Another point it the stupidity of introducing firearm mechanics like safety lock cause those operate fluid if you have the gun in your hand but loose their use in a fully controlled keyboard setup. In Receiver, it's just another "oh yes, see, you need to it this way, cause guns are dangerous even in video games". Are you doing edutainment out there? Tss, that's the last thing you need in such a game. This may work if you're THAT open-minded, but it's no interface that would make me the game play. I don't care what moronic "wisdom" anyone has to offer about "oh it's just beeing realistic" cause it isn't. Grab a gun, replica or not and list me the operations you need to operate it. It'll be less and easier to interface than done in Receiver. Even the oh-so-unintuitive Nethack does a better job. This was an interface rant. Don't understand me wrong: I'm all for complex gun mechanics in videogames but within reason and a focus on providing the player a comftable way of doing the complex stuff. Not making access to simple stuff complicated.
Didn't post anything interesting the last weeks/months, but I hope this will change cause I'm starting on my bachelor topic right now (multithreading for simulations and games). Aaaanyway... This post is not about programming stuff but about Lego guns. Yep, I'm still working on them and I didn't even post anything about my latest for almost a year now I think. I don't feel the need to post something about it cause it marks the end of my quest for something accurate, stable and good to operate. You know, for some reason I like to post progress, but not necessarily the resulting success if it's as done as possible. So this post is about some test results of the single-shot rifle I once wanted to badly and a few concepts I realized the last few days. At first I wanted to improve range and accuracy by using sheaves where the bullet-pushing rubber band is fixated. I hoped that it would be possible to stretch the rubber even more without decreasing durability but in the end it's still limited by the rubber band beeing already pushed to the max by using the sheave-less method. Introducing sheaves at every possible collision point also made the bullet flight highly unpredictable! See, when the rubber band can move as much as possible, it can influence the bullet itself when it exits the barrel. In this short moment, the bullet may completely change direction or start flipping around except flying straight forward. This could be compensated with sheaves on the bullet itself, but 1x1x2 bullet size is just too small for adding sheaves. The essence is that you'll need sheaves everywhere to properly use it. I also had a half prototype for a 2x2x2 bullet with sheaves which worked exceptionally fine. Interestingly, the version without sheaves totally depends on the ramrod angle it was charged with. This is easy to control with some training, but it makes charging it harder if you're not used to it or if you just want to charge stuff very quick. Not sure where to go from this point. I liked the idea of a smaller gun cause it would give a better barrel/stock balance (useful if you want to add a full butt stock). But this also means that I either need a 2x2x2 bullet or a very compact barrel. Besides the bullet size question, I'm also working on a trigger block based on the last one that fits into a 4x4x20 area. The real challenge is to combine the gun body with lots of movable parts and grooves to keep it all together. I'm confident that this will enable me to create a little "standard" I can utilize for later models, just like I did with the bullets. Darn, I totally forget that I'll need to redesign the current model if I want to have 2x2x2 bullets... Argh! Anyway, it's annoying that I can't get smaller or more modular. Modularity is almost impossible with standardized parts and I guess it would make the guns look rather weird. Whatever. Let's see what I'll come up with and kind of design I'll come up with. It's such a terribly interesting topic - makes me feel more satisfied when working on new models. That's healthy by default I guess.