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.

SFML Games – March (2016)

A bit delayed but here we go!

New Games

This section only lists games that I was actually able to play for a bit.

Squid Blaster

Squid Blaster

This game feels a bit like a mix of Space Invaders and a classic side-scroller. You are a turtle and are fighting against the evil squids, eat fish to be able to fire more fire balls and try to stay alive as long as possible. It’s quite fun and due to the low population of fish can be quite tricky to stay alive long enough. The movement of the enemies is however very predictable, it would be nice if there was a bit more variation in the mix. And it would be really cool if the background was a bit dynamic.

Check it out on the forum and take a look at the source code on GitHub.

Amsale

Amsale

At the momement there isn’t much to see, since Amsel is still in development, but so far you can place tiles and move the blue square around. The goal of the game will be that you manage the colony of the alien planet Zeus. Besides the visual part there is actually already more happening in the background regarding resource collection and management. It will definitely be interesting to see how far this project goes.

You can find more information and downloads on the forum.

Game Showcases

Some games don’t have playable versions yet, but feature some interesting videos or screenshots.

Top-Down 2D Game

The game currently has no real title thus the generic “Top-Down 2D Game”. It reminds me a lot of the older Grand Theft Auto (GTA) games and I assume is also the creators inspiration – I’m not certain, but I think he even does use some GTA sprites. The lighting looks great and the AI’s behavior seems quite intelligent already. I’m looking forward to some more progress!

Head to the forum if you want to participate in a discussion and make sure to check out the author’s YouTube channel.

Chip8

This is not exactly a game, but an interpreter for CHIP-8/SuperCHIP applications, under which also many games fall. It also uses SFGUI for the user interface.

Check out the forum post and find a whole lot more information about it on the author’s blog.

K Station

And finally my most likely favorite showcase of the month: K Station. It’s an adventure game with pixel art graphics, lots of humor and set in space. So far there hasn’t been a whole lot more information released about the game. I’ll most certainly keep a close eye on this!

Make sure to check out the forum post, the official website and get the latest updates on their Twitter account.

Faunus Fields

Faunus Fields

Faunus Fields is an RPG game that evolves around collecting resources and building up your defenses against the wild life and other enemies which try to threaten your crops. While the Kickstarter campaign failed, you can still vote for it on Steam Greenlight. Will be interesting to see how the game evolves.

You can find the discussion on the forum and follow the development on Twitter.

Honorable Mentions

Chesster


Even though their Kickstarter campaign (I’ve mentioned previously) failed, they have managed to get finish the game and released it on Steam as well as an iOS app. I am not sure if they are still using SFML or if the moved on completely, but it’s still nice to see that SFML certainly helped them to get the project started.

Zeran’s Folly


This game is already in development for nearly two years or at least that’s how old the first forum post is. So far it has in my opinion not gotten enough attention. It’s an awesome looking game and the gameplay so far is really fun! The reason I mention it, is because it got a new build in March.

Take a look at the full forum post and check out the author’s website.

Thoughts: Social Media Customers

This is the first post of a new “category”. Every now and then I find myself thinking about some topic I find interesting. Usually I just tweet about it, but the space there is always limited, so for the future, when I have to say more about a topic, you’ll find a blog post here.

Nowadays there are many people who make a living with YouTube or other social media activities. In a sense these content creators “crowdfund” their income, meaning that the more followers, subscribers, viewers, etc. they have, the more value they can either extract directly from said audience or get paid by the platform given the value they have created.

Social Media

One problem that can be seen in different various on all of these social media platforms is that the newest post, video, etc. isn’t being distributed to every reader, subscriber, follower, etc. Personally I have heard the most from YouTubers that their newest video doesn’t reach all of their subscribers, which in turn generates less views and inadvertently means less money for the content creators. It can quite a pain, because it seems to happen unpredictably and the only way to notice it, is when either the view counter doesn’t go as far up as expected or when subscribers tell them, that it didn’t show up for them.

On the other hand exist platforms which don’t hide this picky distribution as much. The most prominent example would be Facebook. Facebook tells you explicitly, to how many people your posts will distributed and with a nice “Pay2Win mechanic” lets you pay Facebook, so your posts will be seen by more people.

When I see people complain about Facebook, YouTube, Twitter, etc. not acting the way they except it to, they seem to often forget or sometimes don’t even realize that the followers, subscribes, fans, etc. are in the first instance customers of the given social platform and they as content creator are only second in line. If something generates more money for the social media platform, for example promoting a trending video, then it doesn’t matter whether it will hurt your not so very important video.

Point being your followers and subscribers only become truly your customers, once you get them to sign up for your system. Be it a simple mailing list or an account on your site – the former is easier than the later. For mailing lists there are tons and tons of easy to use tools and services on the web. Most are free up to a certain degree and many have addons and extensions that allow you, to easily integrate them into your website.

Of course I don’t mean that you can’t reach people over social media platforms, I merely think it’s important to know and not get angry about it, that social media platforms will cater to their own business before thinking about your business.

SFML Games – February (2016)

Maybe this will actually turn into a monthly thing again, who knows?!

New Games

As last month this section contains only games for which binary files have been provided, so I could actually try them out.

Cendric: An RGP Platformer

Cendric

I have run into this one quite a while back and was especially excited, because it’s being developed by some fellow Swiss people. As the title says the game is a mix of an RPG and a platformer. The only playable version currently consists of one map where you can walk around and talk to one NPC and one platformer level. If I understood the game play correctly you could realm around the world and whenever you entered a cave or other places, you’d essentially switch into “platformer mode”. You can upgrade your character with various gear that you either find or buy from NPCs. Since that playable version they have done quite a lot of changes, so things might look a lot different now.

The project is open source, they have their own website and have made a forum post.

Tennis Pong

Tennis Pong

Some people may have enough of Pong clones, but I’ve to say despite it being a Pong game, the art makes it a lot more attractive. The sound effects are spot on (they are apparently from Mario Tennis of Wii U), the music in the menu is great and little details such as the ball’s shadow changing depending on the “height” makes it just an overall great game. Additionally the AI can be beaten, which makes more enjoyable than just being always defeated.

You can find more information in the forum post. If you want to find out more about the author you can check out his website.

YAPG – Yet Another Platformer Game

YAPG

While there’s not much game play to see as of right now, the more interesting part is that the whole game is built to be very modifiable. One can create their own blocks, levels etc. and the level editor will be directly included. I hope that we’ll get to see some more in-game content soon!

Until then you can check out the source code on GitHub and read more information about it on the forum. And don’t forget to check out the author’s website!

SnakeFML

SnakeFML

As the title kind of hints at this is a snake game, but with the head being the SFML logo, but with eyes. The color of the body gets picked randomly when the game starts. Unsurprisingly the goal is to catch as many mice as possible while not colliding with yourself or that water. As most other snake games it’s quite enjoyable to just quickly jump into and play a bit. I hope we’ll see some more changes in the near future.

The game is also open source and for some more discussion check out the forum thread.

Game Showcases

Some games don’t have playable versions yet, but feature some interesting videos or screenshots.

Heart

Heart

The game reminds me quite a bit of circular Pong/Breakout, the goal seems to be to move the circle around so the emitted ball will hit the near matching color on the outer ring. The concept was highly inspired by this video. Check it out on the forum.

Blind Jump

Blind Jump describes itself as Space Themed Adventure Game with Roguelike Elements. The levels are procedurally generated, the goal is to follow certain way points and should increase in difficulty over time. I like the shown designs so far quite a bit, so it will be interesting to see the final product. Check it out on the forum.

Muffin World

Muffin World is a simple platformers that is not locked into a grid and comes with moving platforms. It’s still in development but the built-in level editor looks already quite promising, Check it out on the forum.

Pointless War

Pointless Wars

Last but not least is a game that was already featured last month, but didn’t have a name back then. It’s a turn-based strategy game that builds a lot around how you setup your formations. I really like the art style and the idea behind it sounds quite intriguing. Check it out on the forum.

Honorable Mentions

No honorable mentions this month, but they’ll be back in the future!

SFML Games – January (2016)

Due to exams I had been quite busy during January and February and only now came back to look at all the newly created SFML games. However since I don’t really feel like summarizing discussions or important things going on in the community, I didn’t want to make this another SFML News post and thus named it SFML Games.

New Games

In this section I’ll only feature games for which binary files have been provided, so I could actually try them out.

Slimey Carnage

Slimey Carnage

I love platformers, so this fits directly into my category. While it’s marked as alpha release the visuals are quite polished, the game menu is very well done – especially the settings screen – and the music and sound effects fit very nice. The only downside is, that after a few level the game gets nearly impossible (for me). My guess is that the game was created while using a controller and has not really been tested with a keyboard, or the developer is just a huge platform player. If the controls get adjusted this could easily turn out to be my favorite game of the month. Check it out on the forum.

SF-SpaceG

SF-SpaceG

Next up is SF-SpaceG a small game that reminds me of Asteroids, but goal here is to fly around and get all the checkpoints while avoiding the asteroids. It is kind of strange that the deceleration is a lot slower than the acceleration, plus when you destroy an asteroid it doesn’t go away, but only stops moving and turns red. Additionally it can be quite tricky to figure out whether you’re moving or now since all the asteroids around you are movie as well. The game can be quite fun, but it needs quite a bit of work to get there, especially with the visual feedback. Check it out on the forum.

Fury3D

Fury3D

Not exactly a game, but I guess it’s a start to some game. Fury3D is a simple 3D rendering engine written in C++11 and modern OpenGL. It uses quite a few various libraries, but the demo runs and looks quite nice. Check it out on the forum.

 

Game Showcases

Some games are not yet playable but have some interesting screenshots or videos which I’ll provide here.

Our Dear Paper Fighters

Unfortunately at the time of writing this the link for the download was unavailable so I didn’t get to try it out. The video looks very nice and little narrative popups are quite funny. It feels a bit bullet-hellish which I usually don’t like, but it think this could be quite enjoyable after all. Looking forward to being able to play it. Check it out on the forum.

Unnamed turn based strategy game

Unnamed turned based strategy game

The goal here is to fight win two consecutive battles in a row against another army. From the provided screenshots it seems like quite a bit of the mechanic is already implemented. Check it out on the forum and if you want to see more screenshots and vote for a name, check out this thread.

The Dare

There isn’t a whole lot of information on the project, but it should end up as a top-down horror game set in a psychiatric ward where other patients will try to kill you, while you explore the unknown parts of the facility. Check it out on the forum.

15 Puzzle

A simple puzzle game where you have to bring the scrambled pieces back in order again. Check it out on the forum.

Honorable Mentions

While not published exactly in January, I’ve picked out a few games that I just felt deserved a mention here.

Cinnamon Warfare

Cinnamon Warfare

It’s a two player game created by Nexus and few other people during the overnight contest at Devmania. The snowmen’s labor union is attacking you and you need to coordinate the building of a defense wall made out of gingerbread. Unfortunately I didn’t have a second player to really test it, but it looks nice and has some fun elements to it. Check it out on the forum.

Re:creation

Re:creation

This game has been in development for quite a while now, but it’s so great and Elias Daler, the developer behind it, is very open with all the tech he’s using. It’s a top-down RPG like game with an interesting mechanic called recreation. Checkout the forum thread for more information, it also contains among nice screenshots a lot of very interesting C++ discussions.

Convert EPS to SVG – Cisco Icons for yEd

I wasted like one or two hours on this and thought, I’d make a quick post, so others don’t have to waste their time in the future.

Convert EPS to SVG

If you just want to convert some EPS files to an SVG file, all you need is Inkscape and then use the following command to do the magic:

inkscape input-file.eps --export-plain-svg=output-file.svg

If you have a bunch of these files you can use the following command on Windows to convert them in one batch:

for %%f in (*.eps) do inkscape "%%f" --export-plain-svg="%%f.svg"

Of course Inkscape supports a lot more formats with a lot more options, just use the help flag to get the full list.

Cisco Icons for yEd

I originally ran into the problem, because I wanted to use the “standard” Cisco icons for a network diagram in yEd, an awesome and free graph editor. While googling I ran into this post which provides a set of Cisco icons for yEd, but the huge color difference between the icons just wasn’t acceptable (light blue vs “Cisco” blue). So I thought to create my own set and found myself converting the EPS from Cisco’s official Network Topology Icons page. I then converted them as described above, imported them into yEd and exported the full set for you to enjoy. There’s still some color difference, but less extreme. Since a lot of the icons are rather useless – or do you use some space router at home? – I’ve selected a few of the icons which seemed most useful to me and created a separate package. Note: The converted SVG files ares included.

Cisco Icons SVG + GraphML [394 KiB]
Cisco Icons (Selected) SVG + GraphML [41.7 KiB]

See this article on how to import the icons into yEd.

A look at CLion 1.0

For the development of Synth Guitar my Ludum Dare Compo entry I decided to use JetBrains’ CLion as my IDE. Ever since writing my most popular post about MinGW-w64 and an older EAP version I played around with the thought of trying it out, but never found the right project for it. For a year or two I’ve been using Code::Blocks, but was never fully satisfied (among others also because of this), however whether CLion will replace Code::Block for me is still open.

CLion

The Setup

Before I had the EAP (Early Access Program) version installed on my notebook, but for my desktop PC I got to newly install the full version of CLion. As a student I get a non-commercial license for free, not only for CLion but for most of JetBrains’ products. If you however want buy CLion you’ll be paying €99 for a personal and €199 for a commercial license.

The download was very fast and with 138 MiB acceptably small. In comparison the offline installer for Code::Blocks with a compiler is 98 MiB and for Visual Studio you’ll be spending 6.9 GiB of your bandwidth, because Microsoft unfortunately doesn’t manage to provide a version just for C++.

CLion Setup

The setup is very simple and I quite like the settings part when starting CLion for the first time. It allows you to directly change the options for design, version control integration and proper compiler detection. The later is one of the strong points compared to Qt Creator or Code::Blocks, because CLion supports and properly detected my MinGW-w64 installation, while it always seemed a bit of a hassle with Code::Blocks or you first needed to learn how Qt Creator actually handles toolchains and compilers. I wonder though why JetBrains couldn’t fully “support” the latest builds of MinGW-w64, not even with their 1.0.1 update. Then again I ignored the warning you get for it and have yet to run into any problems because of that. However CLion has stated that it can lead to freezes in certain situations.

The Build System

As someone who quite likes CMake, CLion’s native support is amazing and something I’ve been looking for quite some time. Of course Qt Creator comes with CMake support as well, but last I tried it, it did not integrate very well. With CLion you write your CMake code, link your favorite libraries through it and it will build and run just fine. One thing that seems a bit strange compared to most other IDE is, that CLion keeps by default all the build files in a temporary directory somewhere in your user directory. I mean it makes sense to not spam the source directory with all the CMake temporary files, however every now and then one might want to do something specific with the binary and has to go search it in there. My assumption is that CLion expects you to install the binaries instead. Luckily the directory can be changed with a few simple clicks if you know where to look.

One of the strange default options CLion ships with is that it allows multiple instances of the application to be run. So when you for example are debugging, you can also click on run again and the interface will switch to a different layout but still keep running in the background and a new instance will be loaded. During the Ludum Dare Compo I didn’t figure out that there’s a stop button if you switch to the correct tab, thus I ended up killing off GDB manually. I’m however really glad that pressing the stop button works, because pressing the stop button with Code::Blocks most of the time simply doesn’t work and you end up having to kill the process in the task manager. After the Compo I got a response from CLion that there’s an option to only allow one instance. This should in my opinion be the default setting given that single-instance applications are a lot more common.

The Editor

I had been using Vim for some web development during a year or so and gotten quite used to some commands, however I’m still not a Vim guru, but can’t argue with the fact that it can accelerate the code-writing quite a bit. As such I tried out CLion’s Vim-Emulator and I’ve to say it’s very good. My main critique would be, that it’s not obvious in what mode you’re currently in, as such it’s really annoying when you start typing commands or text and only then notice that you’re in the visual mode. I honestly never had that issue with Vim, so all I can assume is that the indicators aren’t well placed. Something else that got me quite annoyed is that in almost all cases when you click on the editor to get the focus back, it will (accidentally) switch to visual mode. This usually lead me to keep hitting the ESC key multiple times just in case, to ensure that I ended up in command mode. Since the Vim-Emulator is a general JetBrains’ feature and not strictly related to CLion it might also just be me, who isn’t used to it.

I’m not a big fan of getting my code automatically formatted, since my style usually doesn’t match with the coding style of a lot of other C++ developers. Until I realized that CLion allows you to customized the formatting rules to about every detail, it was quite annoying to work with at times. But the customization settings are in fact so detailed that you have to be careful to not overlook the option you actually want to change. What was a bit counter intuitive however is that in order to make any changes to the formatting, you first have to create a new style setting. The ones that are installed by default are read-only. Some indication for that would be helpful and would’ve saved me a trip to the all-knowing Google.

Performance

Performance is one of my main concerns with JetBrains’ IDEs. CLion is written in Java and even though they do a great job at hiding that fact, meaning the application doesn’t feel nor look like your standard cheap Java application, the resource allocation regarding RAM and CPU time is something you might not want to overlook. To be fair though, it’s impossible to tell whether Java itself has much to do with it or if there is more improvement possible in CLion’s codebase alone.

When opening my Ludum Dare project and just letting CLion sit there, the memory allocation idles at around 1000-1200 MiB. I assume most of it is used for source code meta information to make auto-completion or similar things faster. However Synth Guitar only uses SFML as library, which makes me wonder how the memory allocation scales for larger projects with a lot of different libraries. Personally it doesn’t seem like a big issue, after all there’s plenty of free RAM and it certainly is a better alternative to keep that data in memory compared to Visual Studio’s huge IntelliSense database files.

Something that got a bit of an issue during my Ludum Dare live stream, was the CPU usage of CLion. It’s nice to see CLion using no CPU time at all, when doing nothing, but it gets quite scary when you look at it while writing code. It will jump all over the place starting off at around 30% total CPU allocation and when you start compiling something it actually maxed out my CPU. If you do CPU-heavy things like encoding live stream video and audio data at the same time, such a high CPU load can become a bit of a problem. Again it’s just a speculation, but I’d claim that optimized C++ code instead of Java code, would reduce the CPU usage for the general editing part quite a bit.

Synth

Refactoring

Having worked with CLion for only a short period of time, it’s kind of hard to talk about features, since I have yet to discover most of them and put them to use. But since we’re talking about JetBrains here, I think the most talked about feature is their refactoring tool. I’m very used to manually refactoring everything and as such will first need to get used to the option of having code changed automatically, as well as learn what the tool can actually do. Something that I tried to do was rename my copy of a class, but apparently that’s still a missing feature. It might have been just my lack of knowledge, but using the refactoring tool with the Vim-Emulator seemed to cause some trouble.

Conclusion

CLion is a solid IDE for C++ development. You really notice the long experience JetBrains had with building code editors and yet they still managed to keep up to date with the “latest tech” (Git, CMake, MinGW-w64, etc.). I really hope that performance will improve a bit and am sure that some of these early bugs and missing features will get fixed over the next few months. I wish the developers of Code::Blocks and similar IDE would take a look at the look and feel of CLion and try to aim for that as well. Especially Code::Blocks seems to not have improved noticeable over the past years, which is quite a shame.

Everyone who works a lot with CMake should really give CLion a shot. I already started another project with CLion, so who knows maybe Code::Blocks will slowly drift into the “unused” section of my PC?

As a final note: JetBrains has in the meantime released version 1.0.1.