Top 5 Podcast I Listen To

It’s interesting how things develop. I remember quite well how my brother used to download and listen to interesting podcasts 10 or so years ago, yet it felt like podcasts lost on popularity over the past years and only now is again gaining some major uplift. There are many YouTubers out there who noticed the medium and given its potential with ad placements, it has turn out to be more profitable that just creating YouTube videos.

It’s no surprise then that mainly two YouTubers brought me to discover and listen to podcasts myself.

Continue Reading “Top 5 Podcast I Listen To”

Generate a DEF file from a DLL

Last night I spend multiple hours trying to get a non-broken CSFML build ready, which requires to have import libraries for MSVC and GCC that both depend on the same DLL. This works because the import library only points to the symbols that are in the DLL, thus acts as sort of instruction how to use the DLL.

Continue Reading “Generate a DEF file from a DLL”

When fitness tracking reveal bases

The other day I stumbled up on a thread in my Twitter feed, where people have located army bases based on fitness tracking heat maps released by Strava. Here’s an example of what the data looks like: Drone base in Djibouti

Drone base in Djibouti
Soldiers running around the perimeter or just a simple patrol?


Nice drones!

Continue Reading “When fitness tracking reveal bases”

Rule of Thumb – Linking Order

Those newer to programming in C++ often fail to understand that compilers like GCC or Clang require a specific link order for the libraries in use or they don’t know what order to pick. Working on SFML and helping out in its community, I’ve had the pleasure to help people fix their linker errors many times and every now and then I’d explain a short rule of thumb one can keep in mind when specifying libraries to be linked. As such I wanted to share it here with you too.

Continue Reading “Rule of Thumb – Linking Order”

Theme Update

Every now and then I decide to update my blog’s theme. It’s not that there was anything really wrong with the old theme, but I just like the change from time to time.

I think it’s the first time however that the blog is running a bright/white theme instead of the dark one. While I do like dark themes, the ones I’ve used in the past always made it feel like the theme itself is blending too much with the content. Maybe increasing the font color and adjusting some styling would have helped, but in some strange way, brighter themes also seem a bit more professional or more mature. I’m not trying to make this blog anything special, I just want to try something new.

Continue Reading “Theme Update”

SFML Steam Games – Part 1

At the time when I discovered SFML and started to invest a lot of my free time on the forum and the IRC channel, there were no games made with SFML on Steam. Partially because SFML was less known, but probably more important, because getting on Steam was hard.
Only through the now discontinued Steam Greenlight it became possible for some indie developers to get their game approved by the community for Steam. And since then the number of SFML games on Steam has been growing.
Today I want to take a closer look at the first four SFML games that you can buy on Steam right now.

Postmortem: One Must Die

Postmortem

It’s the first game I know of that has been released to Steam and is using SFML. You slip into the role of an agent who’s mission is to kill one person at a gala in order to help future of a small nation. I quite enjoyed following different dialogues and learning about the issues of the country and it felt quite nice having various choices to steer a conversation. In the end though, the game is rather short and anyone who comes in with a different expectation will probably be disappointed. Personally, I enjoyed not only the technological feat that went into this, but also found the story and dialogues quite entertaining, while everything is giving of a nice vibe.

If you don’t feel like spending any money on the extended cut edition of the game, you can get a simpler version for free on their website.

inSynch

inSynch

Initially the game wasn’t published on Steam, but was sold through the Humble store. Only later on everyone who owned a copy on the Humble store, also got a Steam key. In one of my blog posts, I even gave away one copy of the game. inSynch is partially art and partially a skill game. The in-game objects were imported from real, physical objects and it gives the game a special aesthetic, but at the same time, you have to hit the right keys at the right time while focusing on four different lanes of moving objects. The slightly odd aesthetics and the pretty much impossible difficulty had left a weird feeling in me, but everyone needs to judge by themselves.

Turnover

Turnover

Turnover is an excellent stealth game, there’s little room for error, thus strategy is a must. While having never played Hotel Miami the quick reaction from enemies and right-click aiming totally gives off a slight Hotel Miami vibe. Since I love stealth games, I do enjoy Turnover quite a bit. The mechanics are easy to learn, I do recommend however to quickly go through the optional tutorial in the menu as some interactions aren’t very obvious at first. It’s not a game where you can just run through it, but you really need to take your time and plot your path.

Crea

Crea

With Crea, Siege Games has entered a genre that isn’t the easiest to get foothold in, but it certainly paid off. With a mixture of sandbox, RPG and adventure you get a game, that you can’t really experience in those few minutes I’ve played it so far. You can just explore the depth and heights, farm resources, build to your heart’s desire or tune your character to the maximum. Play the way you enjoy the most. I really like the visuals and I think, I’ll be investing a bit more time into this, just to see what’s all out there.

Also the developers stream (or streamed) a lot, so it’s definitely worth checking out their Twitch channel.

Conclusion

I highly recommend to pickup a copy of Turnover and if you enjoy sandboxy games, then Crea certainly is something for you! Postmortem: One Must Die has a great concept and implementation, but lacks quite a bit in content, but for the price tag, might as well support the developer. If you enjoy arts and rhythm, then inSynch might be something for you.

Overall it’s amazing what people after done with SFML already multiple years ago and in the next part, we’ll get closer and closer to the current year.

When VLC Doesn’t Update Anymore

Most of us probably ran into a bug in some application at one point. Sometimes it’s not very obvious, e.g. a random crash, while other times you may know that, if you for example perform certain five steps it will crash. But what do you do when you find an issue? Do you just avoid the crashing steps? Do you restart the app and keep working? Or do you put in some time and try and report the issue to the developer?

As a developer myself, detailed bug reports and active involvement in the bug report have been among the most valuable things in fixing bugs. As such, I can only highly recommend to send in bug reports whenever possible! Here is just some bug hunting story from last weeks.

Last week I opened the great video player VLC to playback some Opus audio file. Shortly after opening the application, it reported that there was a software update. I vaguely remembered that it already previously mentioned that, so I was a bit confused why I didn’t update then. Of course I accepted to download the new version and after 22% through the download process, VLC simply crashed. Aha! That’s why I didn’t update VLC last time. And indeed whenever you try to update VLC it would simply crash.

VLC Crash

I remembered back when ShareX didn’t update when you clicked on the auto-update message and also remembered that they put up a notice on their website to manually update it. Certainly a broken update function in a quite popular media player would have been reported by now and thus I checked the website. To my surprise however there was no notice and searching a bit further I couldn’t find a report either. So I took things to the VideoLAN IRC channel and quickly found some active user.

After some digging we found the debug nightly builds. With that in hand, I thought it would be very easy to get a stack trace of the crash, but because this was a nightly build, the update feature points to a test server and while it actually triggered an update to be run, the build to update to wasn’t available anymore and thus nothing happened.

My next idea was to simply spoof the update server and change the update information. Having Python installed on my system I could just run python -m http.server 80 and it would launch a web server that served the files in the working directory. Then I added the update server to my hosts file, placed the update text file in the web server’s directory and … VLC’s update feature now simply threw an error. Luckily the debug build also output a lot of useful information in the console, so I saw that the update tests a signature file. This security feature prevents exactly this kind of “attack” where the DNS is spoofed and the fake server serves a malicious update. Having a file with a PGP signature ensures that only the ones with the private key can provide binaries with matching signatures.

So the new plan was to simply take the update file for the latest release version and its signature file. Finally, VLC crashed and I could get the stack trace. With an impressive list of 1637 entries, it became clear that the crash must be some sort of infinite recursion, which fills up the stack and finally leads to the crash. Since the problem seems to occur around lots of Qt functions, it may end up being less of an VLC issue and more one of Qt. A report was filed and now the waiting game beings.

Critique

In my books having a broken update function seems quite critical, as your users won’t get any security updates anymore, but need to go to the website and manually update VLC and many will probably just disable auto-update to not receive that message anymore. As such the reaction so far have been too low for my liking and I’m surprised that nobody else has experienced this issue. Then again VLC is an open source software maintained by developers in their free time, so it’s not a surprise that things take a bit longer.

The fact that the update feature doesn’t work due to outdated files in the nightly/development builds is a bit concerning. If it can’t be tested easily, then it simply won’t be tested at all and bugs like the one mentioned won’t be found during development.

VLC’s automatic reporting system doesn’t work (anymore). The FTP server the reports gets send to, doesn’t seem to exist anymore. In the consumer market direct reports to the team like mine are quite rare, so an automatic crash report system should work, so you actually see in case VLC suddenly keeps crashing all around the world.

Summary

As a software user, report bugs whenever you can and include as much information as possible!

As a software developer, make sure your features can be tested and that debug builds/symbols are available to get more detailed information.

I wanted to write some more on how to report bugs, but this post has already turned into a longer one, so I’ll reserve that for a dedicated entry.

NightlyBuilds have been updated!

Looking at the last news entry on the NightlyBuilds website, it seems like it has nearly been two years since I last update the Nightly Builds.

https://nightlybuilds.ch/

Nightly Builds

One of the reasons I didn’t bother as much to keep them updated was, because we at SFML now have setup a Continues Integration system which allows anyone to download the latest builds for various compilers. Additionally my system still isn’t very automated, so I always have to spend quite a bit of time to get everything ready, especially having to update all the compilers. But I’ve made things a bit easier by rewriting my build scripts, so an update to a new compiler version is a lot easier.

I’ve removed all the older compiler versions (VS 2010, 2012, 2014, 2015 RC, MinGW < 6) and now have just four compilers listed:

  • MinGW Builds Posix Dwarf 710r0 32-bit
  • MinGW Builds Posix SEH 710r0 64-bit
  • Visual Studio 2017 32-bit
  • Visual Studio 2017 64-bit

Currently I haven’t rewritten the build script for CSFML, so I’m only supporting the following libraries at the moment:

  • SFML
  • Thor
  • SFGUI

Still not sure where I want to really go with this project, but for now I’m going to use to provide library versions with the runtime lib statically linked, since we aren’t providing those in the SFML downloads on the official website.

And I hope it’s of use to some people out there!

Greenlight has been broken for a while

Usually I tend to stay away from news that just broke, mostly because it seems so click-baity to write about it and often people are just panicking for no reason until a few days later when things are explained to them again more clearly. But this time, I just had a thought and wanted to tell it to whoever may listen.

News broke that Valve will be shutting down its Steam Greenlight system in favor or a new system called Steam Direct. With Steam Greenlight a developer had to pay an entrance fee of $100 and could then submit as many games as they wanted. From there on, the game was put into a queue with all the other games in the Greenlight system and people could up or down vote them, as well as leave comments. If a game reached the top 100 of the queue, there was a chance of your game being evaluated and Greenlit – the game was ready for release on the Steam platform. Steam Direct removes this voting process, as well as the random factor of getting picked or not. You fill out a form, you pay per game a fee and if everything is in order, you get your game onto Steam. It’s simple and “direct”, and a process one might have expected from the start.

Greenlight

Originally, Greenlight’s intention were really good, but similar to how people tend to find and use exploits in games, they also found and used exploits for Greenlight, until it became the norm and the system was left broken. The voting system for Greenlight is basically a weak form of a scheme used by drug dealers and other shady sellers: “If you can bring me X amount of buyers, you’ll get a shot for free”. The voting system was supposed to be a useful thing for both Valve and the game developers. It was supposed to be a place where you can drive attention towards your game, all the while getting it up the ranks and eventually published. But since Valve is not evil™ they didn’t force the voters to any commitment, which is where the exploitation began. Game developers soon realized that all you needed for passing Steam Greenlight was to get a lot of people to just press that “Yes” button. It doesn’t matter, whether those people actually like the game or not, they just need to be convinced somehow to press that button and optionally leave a comment.

Besides the issue of getting low-quality games onto Steam, the bigger issue for Valve is, that these boosted games won’t generate enough revenue, because even though a few hundred or thousand people said “Yes, I’d buy this game if it were on Steam”, only a very low percentage actually bought it once released. So Valve is left with your $100 and 30% of a couple of sales, but has to provide a very highly available service, fast connection, lots of bandwidth, update procedures, dealing with complaints, refunds, etc. In the long run, this will not work out for Valve, which is in my opinion why Steam Greenlight has been broken for a while and is now being shelved.

In most conversations I have read surrounding Steam Direct, the main focus has mostly been on the mentioned Dollar values. “$5000 is way too much!”, “$5k will kill small indies!”, “So expensive, I live in a 3rd country!”, you get the idea. While it certainly is true, that games of the concept mentioned above will have a hard time justifying a higher entrance fee, those are the kind of games Valve has little interest in publishing on Steam to begin with. If your game doesn’t sell, your game isn’t generating revenue for Valve to cover their costs. Since the voting system will be removed, game developers aren’t required to provide a pool of potential buyers anymore, as such Valve runs a higher risk of not getting any sales in at release. To counter balance this problem, they have to raise the entrance fee and restrict it to each game. Remember that when Steam Greenlight first came out, there wasn’t even an entrance fee, those $100 were only added after the fact, due to people just submitting anything and everything, as such it acted more like a spam-filter. The new fee, however large or small it will be, will have to pay for the actual services that Steam provides, but again Valve is not evil™ because they’ll most likely let you recoup that fee, by not taking a cut or a lower percentage cut for the first game sales. So if you are smart as a game developer, you’ll simple write that fee off as an investment, then try and bring enough buyers to the Steam platform and you gain back the invested money.

In conclusion, I find Steam Direct a lot simpler and clearer. You’re no longer at the mercy of people voting for you. Over the years I’ve voted for many Greenlight games and rarely made a purchase afterwards, as such I’m glad that this broken system is being replaced. The discovery phase and additional exposure you could get through Greenlight might take an initial hit, but I’m sure Valve will introduce a different section if it’s really missing.

Let me know what your opinions are on the topic, by either leaving a comment below or tweeting me @DarkCisum.