Entries for tag "productions", ordered from most recent. Entry count: 115.
# Floating-Point Formats Cheatsheet
Floating-point numbers (or floats in short) are not as simple as integer numbers. There is much to be understood when dealing with these numbers on low level - basic things like the sign + exponent + significand representation (and that exponent is biased, while significand has implicit leading 1), why you should never compare calculation results operator ==, that some fractions with finite decimal representation cannot be represented exactly in binary etc., as well as why there are two zeros -0 and +1, what are infinite, NaN (Not a Number) and denorm (denormal numbers) and how they behave. I won't describe it here. It's not an arcane knowledge - you can find many information about this on the Web, starting from Wikipedia article.
But after you understand these concepts, quantitative questions come to mind, like: how many significant decimal digits can we expect from precision of particular float representation (half, single, double)? What is the minimum non-zero value representable in that format? What range of integers can we represent exactly? What is the maximum value? And finally: if our game crashes with "Access violation, reading location 0x3f800000", what chances are that we mistaken pointer for a float number, as this is one of common values, meaning 1.0?
So to organize such knowledge, I created a "Floating-Point Formats" cheatsheet:
# Writing Efficient C++ Code - my Article in ProgramistaMag
My article - "Writing Efficient C++ Code" - is about achieving best possible efficiency of native C++ code. It describes data-oriented design as an alternative to pure object-oriented philosophy and shows its advantages, mostly related to consciously designed layout of data in memory, which makes good use of CPU cache. It also mentions operations that should be avoided if code is to be efficient, shows some language tricks and Visual C++ project options that help with generating efficient code and mentions parallelization.
Besides, in each issue of the magazine you can find interesting articles about different programming languages, libraries and technologies, as well as interviews, book reviews and other articles related to software development. The magazine is available for subscription in electronic and paper form.
# IGK 2013 Quiz
During IGK 2013 gamedev conference, just like in previous years, we organized a contest with 75 questions in 15 categories, from gaming to programming. We had 8 participants this year and the winner was Artur Poznański "artpoz" - congratulations! See full results.
You can now download new version of the application with source code in C# and this year's questions to test your gamedev knowledge by yourself or with your friends:
IGK_Quiz_2013.zip (2.76 MB)
# Here be Dragons - Our Game from IGK 2013 Compo
During IGK 2013 gamedev conference there was traditional game development compo, where teams of up to 4 people have to make a game in about 8 hours. Of course we participated in it. This time we called our team "Mass Deffect" (just some random name). There were four of us, all programmers: Kamil Szatkowski "Netrix", Karol Kuczmarski "Xion", Krzysztof Kluczek "Krzysiek K.", and me.
The theme this year, with all the requested features of the game, was: "Artiller game - multiple ways of destroying map, hp & mp - at least 2 kinds of energies - achievements - multiplayer" That fitted into my plan to use two mice on one computer, which I researched recently and described in: Handling Multiple Mice with Raw Input. We designed our game in the Saturday evening, after considering multiple ideas. Finally we chose Krzysiek's idea inspired by Rampart - an old Atari game (see this video).
Our game has title "Here be Dragons". In works on PC, Windows. It is written in Visual C++ 2010 Express, based on a Direct3D 9 framework developed by Krzysiek K. We decided to use 3D graphics (which becomes more and more rare on this kind of game development compos). But game logic is 2D and map entirely fits the screen. Two players build castles on the opposite sides of the map (with left mouse button). On the large enough castle, towers with maidens appear which are resource needed by dragons :) When player has dragons, he can shoot fireballs at the enemy (with right mouse button).
We took 4th place out of 12. Our game lacks many planned features. It doesn't even have sound or music. Anyway, it was fun as always :) Here you can download the game with full source code:
HereBeDragons.7z (3.17 MB)
# Global Game Jam 2013 - Our Game Octovirus
Global Game Jam 2013 came to an end. The local event in Gdańsk, Poland - 3city Game Jam (Facebook page) was organized by playsoft gamedev company in their office. During the jam, a lot was happening on Twitter in hashtag #ggj13 and #3citygamejam. Here are my several photos of the event. The theme this year was "sound of a heartbeat".
I joined a team of 5 playsoft employees. Together we created a 2D game called "Octovirus" about an actopus-like virus swimming inside veins, collecting blood cells and avoiding evil bacteria. We made all the graphics, including fonts and even sounds during the event. As for the code, there were two of us programmers. We developed in Windows, using Visual C++ 2010 Express. We used Cocos2d-x framework and Box2D for physics. I didn't know both of these libraries before GGJ, so I had to learn the basics quickly :)
The game works on Windows using OpenGL, but it's also portable to Android and iOS. Here is Windows binary: Octovirus.zip (6.09 MB).
# DirectX 11 Renderer - a Screenshot
Here is what I've been working on in my free time recently. It's a renderer For PC, Windows, using DirectX 11.
It may not look spectacular here because I've just quickly put random stuff into this scene, but I already have lots of code that can do useful things, like deferred shading with dynamic directional and point lights, a bunch of material parameters, mesh processing and loading from OBJ file format, heightmap generation, particle effects and postprocessing (including bloom of course :)
In the next posts I will describe some pieces of my technology and share some C++ code.
# C++ is Good for Fast Coding
Many people believe that C and C++ are languages suitable only for coding some special kinds of applications - low level or high performance. I think it's not 100% true. Here is a story: 2011-11-11 we had a game development competition organized in this topic on forum.warsztat.gd, called "Explosive Hamster Exhibition Compo". The name comes from crazy game titles that can be generated by Video Game Name Generator, which was used in this compo to generate a topic, unique for each participant. We had to develop a game in 3 hours. From 3 topics generated for me I chose "Micro Sewer Plus" and made a game about closing sewers. (Download: Reg - MicroSewerPlus.7z - binary + source code, 479 KB.)
You can prepare a good library by yourself or download one of many freely available on the Internet and use just like in any other programming language. What you get in return when deciding to use C++ is great flexibility in defining how the interface of your library looks like. Thanks to templates, operator overloading and all that stuff you can create your own domain-specific language inside C++ (like the << operator is used to write to stream objects). At the same time, due to compiling to native code, creating objects on the stack and other language features you don't have to sacrifice performance. You don't have to use separate variables float x, y, z or dynamically allocate new Vector(x, y, z). You can define a vector structure with overloaded operators, use it conveniently and compiler will optimize the code so you can do thousands or millions of vector computations per second.
# Zjazd Twórców Gier 2012 - Review
By request of Tomasz Cieślewicz "tdc", I've written a review of Zjazd Twórców Gier - Game Developers Convention that took place 27-28th October 2012. It is in Polish, published on atarionline.pl website: