http://asawicki.info/ Programming, graphics, games, media, C++, Windows, Internet and more...
Rhipsalis - a Fractal Plant
Fractals appear in nature. Probably the most spectacular example is Romanesco Broccoli. But there is also an interesting plant that looks like very regular L-system. I was wondering what is it since I first saw it in my friend's house. Now I know it's called Rhipsalis and it's a kind of cactus. Here is my small one:
DirectX 11.1 Game Programming - Contest Winners
Congratulations to lightning, WhiteLightning and Francis.C for winning digital copies of "DirectX 11.1 Game Programming", the book I had recently reviewed.
After WeCan 2013
Last weekend I've been in £ód¼ at WeCan - multiplatform demoparty. It was great! - well organized, full of interesting stuff to watch and participate, as well as many nice people and of course a lot of beer :) Here is my small photo gallery from the event. On the first, as well as second day in the evening there were some concerts with various music (metal, drum'n'bass). ARM - one of the sponsors, delivered a talk about their mobile processors and GPU-s. They talked about tools they provide for game developers on their platform, like the one for performance profiling or offline shader compiler. On Saturday there were competitions in different categories: music (chip, tracker, streaming), game, wild/anim, gfx (oldschool, newschool), game, intro (256B, 1k/4k/64k any platform) and of course demo (any platform - there were demos for PC, Android, but the winning one was for Amiga!) I think the full compo results and prods will soon be published on WeCan 2013 :: pouet.net.
But in my opinion, most interesting from the whole party was the real-time coding competition. There were 3 stages. In each stage, pairs of programmers had to write a GLSL fragment shader in a special environment similar to Shadertoy. They could use some predefined input - several textures and constants, including data calculated real-time from music played by a DJ during the contest (array with FFT). Time was limited to 10-30 minutes for each stage. The goal was to generate some good looking graphics and animation. Who had louder applause at the end was the winner and advanced to next stage, where he could continue to improve his code. I didn't pass to the second stage, but anyway it was fun to participate in this compo.
Just as one could expect by looking at what is now state-of-the-art in 4k intros, winning strategy was to implement sphere tracing or something like that. Even if someone had just one sphere displayed on the screen after the first stage, from there he could easily make some amazing effects with interesting shapes, lighting, reflections etc. So it's not suprising many participants took this strategy. The winner was w23 from Russia.
I think that this real-time coding compo was an amazing idea. I've never seen anything like this before. Now I think that such competition is much better - more exciting and less time-consuming than any 8-hour long game development compo, which is traditional on Polish gamedev conferences. Of course that's just different thing. Not every game developer is a shader programmer. But on this year's WeCan, even those who don't code at all told me that the compo about real-time shader programming was very fun to watch.
Book Review: DirectX 11.1 Game Programming
"DirectX 11.1 Game Programming" is a new book published by Packt Publishing, written by Pooya Eimandar. It introduces new features of DirectX 11.1 and some other technologies available for game developers when writing Metro-style apps for Windows 8. The book uses C++/CX - a new language based on C++, with the syntax somewhat similar to C++/CLI (the language is extended by managed pointer operator ^). But while C++/CLI is a .NET language (like C#), C++/CX is compiled to native code and the ^ pointer is just a convenient syntax for reference-counting smart pointer to a COM object. Math is done with DirectXMath library (the successor of XNA Math).
Each of the chapters describes several loosely coupled topics. Their flattened list looks like this:
I have mixed feelings about this book. Contrary to what title suggests and what the author claims inside ("By the end of this chapter, we are going to have a multithreaded game engine"), you obviously cannot learn game programming by reading just 146 pages. Especially as the book covers so many different topics. It looks like the author wanted to include everything what's fresh and sexy in Microsoft Windows 8 API-s. As a result, each example is kind of "Hello World" - the simplest possible application of the described technology.
But at the same time, the book is also not teaching 3D games programming from the start. It explains some selected basic concepts in more details (e.g. describes what vertex shader does, shows how rotation matrices look like, how to use constant, vertex and index buffer or shows a diagram of the graphics pipeline - 3 times actually :) but generally you should already know C++ and preferably DirectX 10/11 to make use of the knowledge from this book. It is more like an overview of "What's New" in Windows 8, DirectX 11-11.1 and new Visual Studio.
I think the biggest value of this book is the attached source code. Each chapter is accompanied by a complete C++/CX project that shows an application of the described technology and the text in the book is an overview of this code. So if you already know some game programming in C++ and DirectX 10/11, this book can be a good tutorial which will help you to start using latest Microsoft technologies and develop Windows 8 Metro-style games. Preface says "This book will help you easily create your own framework and build your first game for Metro Style all by yourself in order to publish it on the Windows Store." and that is true.
But whether this is worth doing, that's another question. Surely you can use DX 11 on 9- or 10-compatible hardware, using Feature Level, but you cannot use most of what this book describes below Windows 8, and many of these things also without buying Visual Studio Professional or higher. According to Steam Hardware & Software Survey: Auguest 2013, while 64.78% of gamers already have DirectX 11 capable system and GPU, only 15.41% of them have Windows 8 installed (and it's already a year since its release).
Now it's time for a contest. Packt has proposed to offer 3 digital copies of the book. All you need to do is head on over to the book page, look through the product description of the book and then drop a line via the comments below this post to let us know what interests you the most about this book. 3 best comments win!!! Deadline: The contest will close in 1 weeks time. Winners will be contacted by email, so be sure to use your real email address when you comment.
After WGK Conference
Last weekend (6-8 September 2013) in Gdańsk University of Technology there was 3rd edition of WGK - Polish Conference on Computer Games Development. Just like in previous years, it was good and it's getting better and better. Many presentations were shown in up to 3 parallel sessions, so obviously everyone could see only a portion of them and my short review will be very subjective. You can also take a look at my photos from the conference.
There were two general kinds of presentations - scientific and industry. From the presentations made by game industry professionals, some were business oriented. That includes the discussion panel with Berlin delegation, as well as Saturday's "Lecture of the Day" with the outlook of European game market. Dates, percents, numbers, amounts, company names... - for me, that was quite boring, too much business and too little technology.
On the other hand, the presentation "Like a Boss" by Tomasz Gop and Micha³ Kuk from CI Games was great. They showed actual gameplay (played in real-time on a powerful PC) from their upcoming new titles - Alien Rage and Lords of the Fallen. The presentation was about designing bosses that players would like, so they presented boss fights and even showed some design docs of these bosses.
From the scientific lectures - the ones that also have a paper printed in the conference materials - I mostly remembered these two: Krzysztof Kluczek researched a way of animating skeleton of a 3D model using a set of control points connected with constraints on distance (something like springs) and also connected to an invisible triangle/tetrahedron to preserve general shape, all updated using Verlet method. He developed a tool where he can easily apply different kinds of presets and make a character of any skeleton topology run, attack or even dance with quite complex choreography (which looked very funny :)
Second interesting scientific lecture I've seen was the one presented by developers of Gizarma - a browser strategy game. They researched an algorithm for map generation. Based on sketched outline of island borders and rivers plus some density maps (like temperature, precipitation) and using some geography-based models, an iterative algorithm generated tesselation into irregular regions with desired properties and some parameters for each region (like the type of terrain). The execution of this algorithm can tak hours and we concluded that something similar could probably be achieved quickly (or even real-time) by starting with poisson disc, calculating Voronoi diagram and then applying some noise to its edges, but anyway their method is interesting and gives good-looking result.
Some papers were presented on the conference as posters. One of them caught my attention. Authors of an article "A role playing game name generator learning its creativity from Arkadia MUD players" developed an algorithm for generating new, yet reasonable names for fantasy RPG characters based on the concept of Markov Chains.
A very unusual presentation was showed by Maciej Mi±sik. As a veteran of Polish game industry with 20+ years of experience, he talked about the value and the ways of preserving our old game projects and the history of their development, so we can go back to it when necessary - even many years later, when hardware platforms and storage devices change. He gave many arguments why it's worth doing, as well as gave some specific advices, e.g. to backup all the email history. I don't share his beliefs on the big value of the history, but anyway that was a very interesting lecture.
There was also a discussion panel about crunch time, involving several Polish game developers, moderated by Piotr Gnyp. They quite agreed that the crunch is bad, but general conclusion from their discussion could be that the crunch is always present, in every project. So they talked about how to predict, manage and compensate it, but not how to avoid it. Maciej Mi±sik shared an interesting point of view - he said he studies this problem a lot and he currently believes that the crunch in gamedev is the result of making same mistakes that other businesses of software development made many years before. I asked a question about why do game developers - even those who strongly dislike crunch - usually stay until the end of the project and then leave, instead of leaving the job in the moment the manager announces start of the crunch. They said that developers generally "like to finish something", but I somehow feel that this answer is not fully exhaustive and satisfactory :)
There were also some workshops on the conference (e.g. about concept art or Unity), but I didn't attend any of them. Another part of the conference were integration parties. In both Friday and Saturday evenings, we were invited into quite elegant venues to have some beer and socialize. As always on such events, I met many friends from gamedev industry and Warsztat community, who came from all over the country. From our conversations, a general trend that remains in my mind is that many of them started their own business instead of having a stable, full-time job in some corporation. They are quite successful in terms of money, but they don't always claim to work less hours per week than they would in a traditional job. They also don't make their money from games (although they want to), but from different kinds of software projects. An outstanding exception is Daniel Sadowski with his company Nitreal Games. They started with doing games for government contracts, like Misja Bielany promoting Bielany - a Warsaw district, but now they made their own game (a time management casual PC game) - Gardens Inc. which is very successful.
Another part of the event was Developers Showcase - a place where amateur, as well as professional game developers could show their projects. I was amazed by the stands prepared for the exhibitors - they looked like on some kind of a small expo. The game that won voting on the best project was SuperHot - an FPS based on a novel idea that time passes (bullets fly, enemies walk) only when the players moves or rotates. The one project that was not a game used 4 Kinects to build a 3D model of objects so everyone who entered their space could see himself from any side as a colourful point cloud.
Finally, on Sunday there was the traditional game development competition (named Games Bonanza), where teams of up to 4 people had to develop a game in 8 hours. Unity and similar technologies were prohibited, so teams made their games in programming languages like C++ or Python with PyGame. The theme this year was "Spaghetti". I expected most games to be about the Flying Spaghetti Monster (especially after the lecture about designing boss fights), but the games turned out to be more diverse. One was about a cook avoiding spaghetti thrown at him by angry restaurant clients, another was about a piece spaghetti running away from the cook... At the end there were 5 entries in the competition. We took the 1st place :D Our team was: Krzysztof Kluczek "Krzysiek K." (programming, team leader), Tomasz D±browski "Dab" (programming, level design), Micha³ Rudnicki "Mildanach" (graphics) and me (programming, audio). We made our game in Visual C++ 2010 Express based on a framework prepared by Krzysiek K., which uses DirectX 9. We created a 2D platform game where a plumber jumps, collects points and finally fights a boss. Here are some screenshots:
tl;dr: WGK is a nice conference for game developers with many different events taking place and it's definitely worth attending. By the way, in 2 weeks (20-22 September) there is different kind of party - WeCan demoparty in £ód¼.