Table of contents:
My name is Konstantin Nosov (Gildor is just a nickname, of course). I'm a video game senior software engineer from Saint Petersburg, Russia. You are on my personal website.
I started programming when I was in a school, in early 90's. The first programming system was ZX-Spectrum with 8-bit Z80 CPU on board. My first programming language was Z80 assembly, and I programmed exclusively with it nearly 5 years before I got access to PC system and started to program with high-level languages like Pascal, C and C++. I graduated with honors from the Saint Petersburg State University of Aerospace Instrumentation. My area of expertise was "system programming". Qualification is a Russian equivalent of Master degree (6 years of education).
I like programming, I do it at work and (sometimes) at home. I like to solve complex tasks and to develop things which were not made by other people earlier.
I started (non-professional) game development in 2001, when John Carmack released his classic Quake 2 source code. I have completely re-created the Quake 2 engine. It was rewritten using C++, I have added support for the Quake 3 player models and playing on Quake 1, Kingpin, Half-Life and Quake 3 levels (I have had some challenges with Half-Life, plus I have yet to finish Quake 3 support because I have switched to the UE Viewer project). Project goals (except educational) were to create fast renderer with some eye-candy features (like lightflares, correct lighting etc) and to support community-made resources from other games - there are a lot of nice maps made for the Quake 1 etc.
I decided to switch to professional game development in 2006. I worked as a senior programmer in the "Parallax Arts Studio" (the company was closed in 2008). The game title was "Exodus from the Earth". My expertise was an engine optimization (for speed and memory use) and working on XBox 360 port (abandoned at the final stage). Some low-level engine systems were completely rewritten for better performance. In Parallax Arts Studio I've got a task to create a new animation system for future projects. I did not found good open-source animation systems to learn, so I decided to look at the Unreal Tournament 2004 internals - it had very good animation system (for 2007). So I began to disassemble some parts of this great game ... and in autumn of 2007 very first private version of the umodel was created. Umodel's animation system was used as a base for the new animation system developed for the Parallax Arts Studio. The project was closed, so I've used one of created tools as SkelEdit available on this site.
Probably my work in Parallax Arts Studio was my most significant professional experience in computer games industry. Later I worked in Driver-Inter Ltd. for Nival Network for their long-build project Prime World (which probably never will be finished), worked on a few smaller projects which were abandoned before being able to see the world ... None of them were provided such amount of interest like our "Exodus from the Earth".
I have a lot of personal projects, but most of them are not available to public. The most significant projects are:
- UE viewer (legacy name is "Unreal model viewer", renamed due to request from Epic Games); the project is under active development
- modified Quake 2 engine (some details are available above, screenshots are on the project page)
- implementation of the fast deflate algorithm for zlib
- very fast single-pass macro assembler for Z80 CPU (ZX Spectrum) with builtin Turbo Pascal like editor, it was compiled with itself; I made it when I was a student
About the reverse engineering ... I'm reversing a lot since the time when I worked on 8-bit Z80 computer, but it was never be in the center of my interest. I prefer to create something by myself than to dig into somebody's (often not fair) code. But sometimes I need to learn some cool contemporary technology, and very often the only way to get information about it is reverse engineering (disassembly). There is another application for reversing too - sometimes it helps me to verify correctness and optimality of my own code generated by compiler, because on some circumstances assembly code looks more understandable than it's C equalent.
The first major experience in reversing was Quake 3 disassembly. The reason of doing this research was my own question: why Quake 3's renderer is much faster than Quake 2 while processing more complex geometry? During this work I've made a new renderer for the Quake 2 which was based on the reversed Quake 3 (Quake 3 source code became available only a few years later). Later, when I got enough OpenGL experience, my renderer was significantly changed so there is nothing from Quake 3 left there.
Updated 11.04.2013: this section is obsolete now because I work in Ubisoft Reflections now. I'll update this section later.
My last job in a videogame industry was a lead programmer in one small independent company. We've tried to work on a sea battle game "SeaCraft" using the Unreal engine 3. I coded 90% of the game prototype. Epic Games was impressed with our demo and we've got full UE3 license on special conditions. Unfortunately the project is almost dead now due to financial problems. We had full UE3 license, experience and desire to make a game, but no money to do this. Of course if I'd be young and single I could work there, but I have a full family and I'm responsible to maintain us. That's why I work in a non-videogame company now.
I have a great passion of making great games. Unfortunately the market for game development in Russia does not currently have such opportunity. Russian videogame industry is going in direction which is not interesting for me, mostly to simplify game development as much as possible and to develop games for web and social networks. So I'm looking for a job in a strong foreign videogame company in a team that has an experience of making AAA games. My dream is to work in Epic Games development team, but I quite understand that this is just a dream and most likely will never become reality. But there are a lot of really cool development teams which are making great games, no matter they're using Unreal engine or not.
Currently I'm under active job search. Some great companies was ready to hire me but didn't do that because of various reasons. For example, one Canadian game company did not hired me because the cost of migration of me and my family was too high for them. Sigh ...
My resume is available in a form of linkedin profile. MS-Word form is also available on request.
My contacts are listed below. Sorry for not posting my email address here - I don't want to feed spam bots.
|Epic Games forums||http://forums.epicgames.com/member.php?u=1349315|
Thank you for reading,