They are roughly sorted by the amount of work/dedication they required from me (bold since there are also projects that I was working on with a team).
Thesis
The point of the thesis was to implement a simple deferred shading graphics engine in DirectX 10 and compare its speed to a forward one. Shaders were done in HLSL 4.0, models done in Blender (mostly free ones found on internet, tweaked and improved by myself), imported from .obj using Assimp.
I didn't invent anything new in this topic - just implemented simple deferred and forward renderer in D3D10, learning shaders, gfx programming, models and few other things along the way. Both the code and thesis text might be useful to people who want to implement their own deferred engine in DirectX - there's a thorough discussion of advantages and disadvantages of it, some implementation detail, and quite complete bibliography.
Abstract: Strengths and weaknesses of both forward and deferred approaches have been discussed in great detail. To measure and compare their peformance characteristics, profiling has been done using real life test maps. Results are commented and potential optimizations have been mentioned. Screen space visual effect "bloom" has been implemented. History of computer graphics, different approaches to rendering and lighting have been covered.
SDL_Config
SDL_Config is a library designed for reading and writing configuration files in an easy, cross-platform way. It is the only library that I designed from start up to be used by other programmers, and such as that, I tried to make it as flexible and general as possible. It's written in structural C++ (yuck! I know :-)) for the reason of compatibility with C and C-compatible languages, but liberally uses STL deep inside.
I concentrated on creating clean, easy to use, logical API and writing good documentation for it (generated by NaturalDocs). Now it's fairly stable lib with some interesting capabilities, used by people here and there. Personally, I use it in many projects.
More than 6200 downloads of all versions on Sourceforge.
- Release date: october 2005, new version released once a year
- Platform: PC, portable source code
- Technology: C++, STL, used SDL types and streams
- Download: 115 kb .zip file
- Homepage: SDL_Config homepage
Sculpture Clay 2
My second take on writing general purpose, easy-to-use and rather powerful engine. Started in early 2007, I quickly wrote most of the code in half a year, then with time kept adding new things and refining old systems.
It's written in portable C++, with SDL, OpenGL, SDL_Image, SDL_TTF, SDL_Mixer, SDL_Config, AntTweakBar, AngelScript and few Boost libraries. It's compiled to DLL, and accompanied by a bunch of interactive test programs, as well as some auto tests (yup, TDD with UnitTest++). Uses precompiled headers. Documentation is written directly in source code from which NatualDocs generates nice html files.
I used it for quite a long time for bigger projects and quick prototypes. Unfortunately after so many years, code rot has become a problem, and I don't have time to clean it and remove all those obscure bugs. So basically it is dead :)
- Download: SculptureClay2.zip (3.28 MB, zip, downloads: 385)
- Features: memory mgr, logger, kernel, error system, timer, input / events, math utils, 2D Renderer - accelerated by OGL, templated ResourceMgr using weak references and null objects (concept from Game Programming Gems 4), TextureMgr, font mgr - true type fonts, application configuration through cfg files, audio player (also mp3)
- License: open source / LGPL
OpenGL GUI Presentation
My university teacher was looking for someone who could make little OpenGL presentation for other students. He mentioned that it should be sth simple like rotating cube, triangle etc. I said that I'm interested in creating such presentation, he agreed, I went home and started coding. You may see on screenshot what I've developed :-)
As you see, it's far from usual rotating cube etc. In fact, apart from OpenGL, this program is also an interactive presentation of some of my engine's (Sculpture Clay) GUI capabilities. It took me 8 days to write it. Downloaded more than 400 times.
- Release date: may 2005
- Platform: PC, Windows
- Technology: C++, Sculpture Clay 1.0 engine
- Download: 1.1 MB zip file
Terrain Editor
Terrain Editor is a simple heightmap editor, written in C++ as university project. Along the way I learned some new technologies and concepts.
Terrain Editor uses DirectX 9, fixed pipeline, multitexturing (for detail texture), basic per-vertex lighting. Does simple picking to select the vertices that should be changed - casts ray and finds vertex which is closest to it. Verticies are stored in dynamic vertex buffer. It supports few terrain changing operations, like raising/lowering the terrain, painting height, smoothing and roughing it. Supports brushes with custom mask, and dynamic size.
It uses wxWidgets 2.8.11 for UI, HTML display etc., and apart from initial hurdles and integration with DX, I am pretty content with it. Btw, embedding .png picture into executable which would be on the fly converted to be used by wxWidgets... proved to be much more hardcore than I thought, so eventually I used plain old Windows resources (.rc).
If you encounter problems during execution, make sure you have newest DirectX runtime and Visual Studio Redist installed (on computer without Visual Studio).
- Release date: 25 july 2010
- Platform: Windows, PC
- Technology: C++, DirectX 9, wxWidgets 2.8.11
- Download: TerrainEditor.zip (2.2 MB, zip, downloads: 353)
PhySimulation
Some collision detection and physics simulation done for convex polygons. Based on code from Olivier's Rebellion PolyColly. I've done it as part of my summer internship at InImages. It's not very high quality, sometimes objects move in odd directions, think of it in terms of "proof of concept".
There are quite many keyboard shortcuts, some are displayed on the screen, others you might discover through trial and error or by studying source code.
- Release date: 28 october 2007
- Platform: PC, Windows
- Technology: C++, Nurgle version of Sculpture Clay 2 engine (OpenGL, SDL, SDL_Image, SDL_TTF, SDL_Config, AntTweakBar)
- Download: PhySimulation.zip (1.66 MB, zip, downloads: 385)
Pathfinder
Simple implementation of A* path searching on map with varying costs, done as another uni project. You can change the map topology by clicking with mouse (there are 3 predefined maps loaded from files). You can benchmark pathfinding algorithm by pressing B with 1000 runs to see how fast it is (all my tests end in fraction of second).
OK instructions end here, there's a full keyboard cheatsheet right in the application. Thanks to using my home engine and nice A* explanations found on the net, coding this took me few days. Application has been extensively tested on many PC configurations and works fine. Source code included (LGPL).
- Release date: 7 june 2010
- Platform: PC, Windows
- Technology: C++, Sculpture Clay 2 engine (OpenGL, SDL, SDL_Image, SDL_TTF, SDL_Config)
- Download: Pathfinder.zip (1.57 MB, zip, downloads: 365)
CarSimulation
Simple car physics simulation made as a yet another university project :-) you control the car. Environment is simple heightmap with texture on it. I used it as a testbed for new version of Sculpture Clay 2 (which at that time had some 3d support). Yeah, I know, car physics are horrible.
- Release date: 7 february 2007
- Platform: PC, Windows
- Technology: C++, test version of Sculpture Clay 2 engine (OpenGL, SDL, SDL_Image, SDL_Config)
- Download: CarSimulation.zip (2.06 MB, zip, downloads: 397)
BallSimulation
Simple simulation of multiple balls moving in a cylindrical environment made as a university project. Uses RK4 for integration. I implemented general sphere-wall and sphere-sphere collisions using sweep tests. Physics loop is fixed: updated 60 times a second using technique presented at gaffer.org.
- Release date: 20 november 2006
- Platform: PC, OS that supports Java
- Technology: Java, JOGL, Swing, Javadoc + Eclipse
- Download: BallSimulation.zip (85.44 KB, zip, downloads: 393)
Simple DB
Another university project, this time we had to implement in pairs a database in Java, using MySQL. My partner was Micha� Czaicki. Program had to connect with db at external server and allow the user to operate on tree of products and categories... you know, each category contains products, and each product has its name and price; also, categories may contain other categories etc. Fun fact: this project demanded from students some DB knowledge, and the first lecture about databases we would have next year :-) Despite it, everyone completed this task.
Our project also generates PDF files with summary of all the products and it shows the comparison charts of products stored in currently selected node. Note: since it's rather pointless to run this project by other people, it demands MySQL server and the needed libs are really heavy, I decided not to include it for downloading.
- Release date: 17 december 2006
- Platform: PC, OS that supports Java
- Technology: Java 1.5, MySQL, Swing, Javadoc, IText, jFreeChart + Eclipse
Caves of Sadness
University project, which is a small simulation of pack of aliens. Each of them has a health bar and a hunger bar. Alien wanders randomly around the map, untill he becomes sufficiently hungry - then goes on hunting spree, trying to find another alien and kill him, filling hunger. Two hunting aliens might even get in a fight - that is visible by triangles coming from one to another. If enough aliens get killed, another ones get spawned. You are an invisible observer, who can damage/heal aliens, and tweak their hunger, by clicking with mouse.
This was my first project with displaying complicated 3d models with textures. Indeed, alien model was downloaded from some free 3d model repository. It's stored as a Milkshape (.m3d) foramt. The other parts of the map were created by me, in Milkshape program.
Another new thing to me were the collisions in 3d, displaying text in 3d, and steering the player in FPP mode. While playing with the game, I added "alien mode" - it changes fov and speed, also you can walk on walls. How everything works and the keyboard shortcuts are explained in the game - just take a look a the wall where you start. Whole source is included in the download file.
- * Release date: february 2008
- * Platform: PC, Windows
- * Technology: C++, Sculpture Clay 2 engine (OpenGL, SDL, SDL_Image, SDL_Config, AntTweakBar), some Milkshape code for loading 3d objects
- CavesOfSadness.zip (2.98 MB, zip, downloads: 374)
JnR Techdemo 1
Techdemo showcasing some of the features of Sculpture Clay 1 engine - in this case, mainly particle system. It contains references to Ulairi name, which was a name of team that long ago was trying to develop a game called Jump n RotN, currently abandoned. There's a problem with sound on 64 bit systems, it looks that FMOD's dll doesn't work on them. Btw, it looks much better when run than on screenshots :-) especially the fire IMHO is quite cool.
- Release date: 15 november 2004
- Platform: PC, Windows
- Technology: C++, one of the early versions of first Sculpture Clay engine
- Download: JnR_TechDemo1.zip (1.19 MB, zip, downloads: 379)
Liero TURBO
Liero TURBO is my Total Conversion of the ever-famous, having cult like status Liero. I completely changed game physics, weapons and gameplay, also tweaked a little sounds and graphics. I have also created more than a dozen of new, fresh and very playable maps (included in the zip).
- Release date: may 2003
- Platform: PC, Windows
- Technology: Not written by me (originally written in Pascal); as for the modding, I used Lierokit, Liero Hacker, Liero M8 and GFX2
- Download: Liero TURBO.zip (648.43 KB, zip, downloads: 238)
- Homepage: Liero TURBO homepage
Lord of the Rings RPG
This a pre alpha techdemo of FRS engine made by Rangers of the North, quite big team of amatours I was part of for over 4 years. It was great time, I met fantastic people who tought me loads of things (not only technical). Mostly, I was doing there 2d gfx, coding in Delphi flocking behaviour of animals, writing some articles and spamming forum. As for this techdemo, I coded virtually nothing. Now former RotN members changed name to Artifex Mundi and are continuing work on commercial version of FRS engine. Good luck, guys and gals :-)
- Release date: january 2003
- Platform: PC, Windows
- Technology: FRS engine (Delphi, C++, DirectX, OpenGL)
- Download: Dolina 1.0 (14.6 MB .zip file)
- Homepage: Rangers of the North page
Game of Life
Anooooother university project. Application which implements Convay's Game of Life algorithm. You can interactively paint on the board with mouse LMB (white) / RMB (black) or you can choose one of several predefined interesting systems. You can change the size of board, generate noise / clear everything and step through the algorithm step by step, or simply let it run at full speed.
Full sources, documentation (polish) and UML diagram included. If you have a 64 bit system (like I do) then you will be unable to run this program since Turbo Pascal generates 16 bit executables. In that case, using DOSBox will do the trick.
- Release date: 25 january 2006
- Platform: PC, Windows
- Technology: Pascal, Graph module, some assembly for mouse routines, Turbo Pascal 7.0
- Download: GameOfLife.zip (174.06 KB, zip, downloads: 378)