It is not that difficult, but a you have to try around a bit until it not only looks nice, but also works nice with all the features of the editor, such as undo management, material editing, light mapping, serialization and so on. I like how it works so far, but a lot of work is still to be done.
LinkedIn about once every 6 months or so. And I feel every time I do this, the page looks completely different... :)
Shadows: Heretic Kingdoms an Action-RPG developed by Games Farm. Honestly, I never heard of this game before - I'm really not totally up to date with current PC gaming - but it looks promising:
I like the idea that you can play as demon in this game. The early access version was released just a few days ago. And the game probably has some nice sound. Because it uses irrKlang as audio library :)
Windows RT Tablet and since the update to Windows 8.1, I'm very happy with it. My only main concern is a bit the lack of apps for it, although that situation seems to get better every day.
Last weekend, I had a small problem which a small app could have solved for me, but on the Windows Store, I could not find any app doing this. Being a programmer, I decided to write that app myself. I even have a Windows Store developer account, so I would be able to publish that app then for free, for others. C++ being my favorite programming language (although I'm also very fluent in C#, which would be the second option here), I decided to start writing that app using the new Windows API, or 'Windows API for Windows Runtime apps', how it seems to be called now. I've developed a handful of Windows Store apps already, so I knew that it would be no picnic, but this time, the design of the API stopped me from being able to create that app at all. Or to make it more clear:
Microsoft! Developing for your new Windows API sucks! And here is why:
First, not to be unfair, there are also good sides.
- Microsofts developer support is great. Apple and Google for example should learn something from this. And the documentation is supberb. Ask something on the forum, and you usually get a useful answer. Sometimes even from a Microsoft employee. They even give useful answers via mail, and that usually quite quickly.
- The developer tools, the app submission process and the user interface and statistics tools of the Windows Store are great. No other app stores compare to this.
- Some parts of the new API are thought through, and very nice. C++/CX is IMO unnecessary, but has some useful features, at least. Combined with VisualStudio, it's a very nice experience.
But the bad sides are sometimes a real show stopper:
- The API is cluttered with arbitrary limits. For example context menus are limited to have only 6 items. 6. Seriously. How are people supposed to create complex apps with only 6 commands per menu?
- Another show stopper is the file access sandbox: You can only open files previously selected by the user, or in a folder selected by the user. What's with files referenced by that selected file? No chance to access that. And even if your app can live with that, if you want to access a file later again, you are limited to 1000 tokens (future access list). This seems to be much, but it is another senseless arbitrary limit, and it stopped me from finishing my app, which needed about 10 times more.
- Debugging threaded C++ code is horrible. If something goes wrong, you usually only get a "WinRT originate error", with a memory pointer address. Nothing more. Good luck finding your problem. It wouldn't be that bad if the next point wouldn't be there:
- You need to create a thread for everything. Want to open a file? Create a new thread. Copy something from the clipboard? New thread. Show the user a message box? Thread. Context menu? Thread. I know the reasons behind this and that in a newer C++/CX, there is even the 'await' keyword. But really. This makes the code so much more a pain in the ass. Did the designer of that API ever try to create a serious app using this on his own? I bet not.
- Exceptions everywhere. Everything throws exceptions, when something isn't as expected. And a lot of stuff won't be expected. ("Not allowed in this context" What!?). Most possible thrown exceptions do not even seem to be documented. Good luck publishing a stable app which won't crash.
- You are forced to use XAML or C++ created XAML elements for doing user interface stuff. Unfortunately, XAML and its themes and styles are a big un-debugable clusterfuck. When something is wrong, your app fails, and good luck finding your problem in all the styles and XAML files. Also, overriding stuff is very difficult. Microsoft seems to have noticed that, because they provided a tool named 'Blend' so you can try to edit your stuff easier. I'm still undecided if I love or hate Blend.
- There is no way to overwrite drawing of a control. Really. Owner drawn controls? Nope. You can implement your own DirectDraw 2D drawing engine, which I even did - took about 3000 lines of complicated code - and it works, but seriously?
So in short: The API works, but - IMO - it is only usable for creating toy apps. Maybe one reason why there aren't that many Windows Store apps is that it might be a bit too complicated or sometimes - like in my case - even impossible to implement your idea for an app. If you want to do some serious app, then this is sometimes simply not possible. The API is young, so I hope Microsoft will make some changes to it - That's why I wrote this blog post. I know a few Microsofties read this blog :)
HearthStone, finally. It is free to play, and apparently not one of those evil "pay to win" games. In short, it's basically a collectible card game, and reminds me very much on Magic: The Gathering - admittedly being the only collectible card game I ever played :)
In short, the game is fun, the rules are very simple, it is learnable quickly, and seems to be fair and balanced. If you are a PC gamer and in your mid 30s like me, you will also like the occasional Warcraft II reference, including various Warcraft 2 soundtracks playing in the background. Additionally, the game is ideal for an "old" gamer like me: I don't have much time to play games, and it is possible to quickly start it and play it for a short amount of time, and have fun.
But there are also bad sides:
I'm pretty new to this game, so my impression might be wrong, but as newbie, it is very, very difficult to win a game against people who already own hardened decks and advanced cards. I currently have a win-loose ratio of about 1:20, I think. One time a player decided not to kill me although he could have, but to heal me instead. Assuming he had done a misclick, I continued to play, struggling for my life. But after a few rounds, the same happened again: Instead of finishing me, he healed me and continued playing, demonstrating his superiority. I felt like a mouse in the clutches of a cat, pretty helpless. It's a bit frustrating, being confronted with overpowered players like this. I'm not sure if the disabled possibility to chat in the game is positive or negative in that respect.
Regardless, it is fun and I'm looking forward to the game being available on my Windows RT tablet. :)
irrKlang in version 1.5, with unicode and 64bit support for all platforms. It also comes with 24 bit FLAC support, which seems to be a thing, lately. :)
Gamedev news still exists, and you are free to post your game development related news on there yourself. Just hit the submit button. Until now, I am basically the only one posting on there, although companies have started to continuously send me their press releases already at least, which is nice. And the site already has readers, commenters and twitter followers.
So it looks nice so far, but the only problem is one I didn't anticipate: There aren't actually that much game development related news to report. I think this has changed a bit since the good old flipcode days: Maybe there are now much fewer developers creating game development tools and software than before? And with some of them and their just started race to the bottom, they will probably not become more now?
Ubuntu, to be more precise on their just released version 14.04 LTS. It was quite a pleasure installing it, much has changed since I tried my first Linux distribution (I think it was Suse 7.0 back in 2000). It also works perfectly with all my exotic hardware, to my surprise. I am used to have to spend days searching through web forums for the right configuration file change or shell command to make everything work correctly, but this time everything worked. Cool.
I'm not sure how popular Linux is, and if users on there are also paying for software (I don't think so), but it maybe would be an idea to port some of my software to that platform as well.
Me: Yes, that's me. What do you want to do?
Guy: Can I get your phone number / When do you have time for a meeting, so I can talk to you in detail?
Me: My time is very limited, maybe you could first tell me roughly what this would be about?
Guy: It's about your product Z, we are very interested in it.
Me: You already told me that. But what do you want to do? What do you want to talk about?
Guy: Would Thursday, 14:00 GMT be ok with you? [Added in CC are now a CEO and other people I don't know from that company]
Me: No, you didn't even fucking tell me what you want to talk about.
I've had several dozen conversations via mail like that now. It's like these people don't understand that email is also a form of communication. You can communicate everything via email, no need to do some phone conversations or even real world meetings. In my opinion, phone calls are for details. They cost a lot of time, and should be reserved for talking about details. Just because you are better with talking than with typing doesn't mean that this is the same for me.
I don't know if I maybe lost a few nice business opportunities because of my attitude regarding this, but maybe at least I had more time programming new features for my customers that way.
Shameless plug: the software I am working on
my own software, then it is to never, never, ever, remove a feature when creating a new version of your software. No matter how stupid or irrelevant or buggy you think the feature you want to remove might be. Because there will be people who use this feature. And who will absolutely be pissed about you removing that thing they need.
I think this is also one thing which Microsoft didn't get, when they decided to remove the start menu in Windows 8, and replaced it with the fucked up start screen, which doesn't even contain half of the features of the start menu.
If you need to remove something, then don't remove it completely, but hide it instead, so that if users who rely on this feature can at least find it and continue using it.
On a related note: One similar important thing I learned as freelance developer is this: although it might be tempting as programmer to rewrite a whole, old app or parts of it completely because it is now absolutely fucked up and not maintainable anymore, don't do it, for the same reason. People rely on the strange and probably even buggy features deep inside of old software, and you can never reproduce all of them easily in a rewrite.