Table of contents:
- The beginning
- My Projects
- Reverse Engineering
- My work at Video Game Industry
- Current Work
- Contact Information
Hello dear Visitor!
My name is Konstantin Nosov, my nickname is Gildor. I'm a video game software engineer from Saint Petersburg, Russia. Welcome to my personal website. At this page you may find some information about me.
I started programming at school, in early 90's. My 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 first years, before I got access to the 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 support for 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 a 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. The project (with source code links) could be found on this site.
I decided to switch to professional game development in 2006. I first job in that area was a senior programmer in "Parallax Arts Studio" (unfortunately the company was closed in 2008). The game title we worked on was "Exodus from the Earth". My expertise was an engine optimization (for speed and memory use) and work 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 any 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 Russian computer games industry. Later I worked in Driver-Inter Ltd. for Nival Network for their long-build project Prime World (which is on "beta" stage for years), 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. Unfortunately the source code resides on 5" disk, so I can't grab it from there.
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). Sometimes people are referring to discovering file formats as "reverse engineering" too, but that has nothing in common with disassembly experience, so that's not about me.
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 or C++ equalent.
My 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 on the same machine with 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 renderer (the source code of Quake 3 engine 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 (and I think nothing from Quake 2 either).
My last job in Russian 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 a 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 for doing this... The market for game development in Russia does not currently have good opportunities. 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'm smart enough to understand that this is just a dream and most likely will never become reality :) There are a lot of really cool development teams which are making great games, no matter they're using Unreal engine or not.
In 2013 I worked in Ubisoft Reflections for a few months, in a team developing PS4 version of The Crew game. That was the most interesting job in for 2013 - I've got a lot of PS4 and parallel processing experience there. Ubisoft is a very big and very good company, it works like a large family. Unfortunately life in Newcastle (North England) was too hard for my family, every day was a chalenge. I didn't expect that climate somewhere could be stronger than in Saint Petersburg! Also we've got huge finansial difficulties there, my salary was too bad to live in UK with a family - it was almost enough to survive, but we had to forget about any entertainment for us or for our children (many "thanks" to my recruiter who put me into this company - he persuaded me that this is the most I can get, and that this is a very good money - nothing were true ...). I even tried to find a second job there to keep working in Ubisoft (this is allowed for Ubisoft's employees). However company had denied my attempts because of some UK border agency policies. So I had to do a choice - either to have an interesting job, or to make my family happy. Very hard and awful decision, I can say!
So, I left the company after roughly a half of the year working there ... My reputation was broken because I acted like "unreliable person", I think. Every time I tried to find a new job, recruiters asked me - "why did yu leave Ubisoft so quickly?" Nice question!
Of course, now I've got some experience with family relocation. That was my very first relocation, it was very hard and had a lot of moments which required special attention and where I did mistakes - including salary and accomodation. I hope next time will be better :) (if "next time" will happen at all).
Currently I work remotely from home, at 4D Pipeline. This is a small programming company working for various famous companies in Computer Graphics area. Like outsourcing, but more "advanced", and more interesting. Most of my work was made for NVIDIA, and for Donya Labs (Simplygon developers). I work in realtime and raytracing computer graphics areas. Working with modern game technologies like Unreal engine 4, Simplygon, Enlighten.
My CV is available in a form of linkedin profile, that page also had email and other contacts. MS-Word version of CV is also available on request, but it is fairly compact (there's a recommendation to keep CV in 2-3 pages).
My contacts are listed below. Sorry for not posting my email address here - I don't want to feed spam bots.
Please do not contact me using facebook for conversation about use of the UE viewer (umodel), your problems with 3ds Max or about game modding - consider using my forum instead. Most of your questions could be shared with other people (i.e. nothing "confidential" there), so I'd prefer to not answer the same questions to many people many times. Even more, if you will use search (even google) you may find answers to your questions, or at least thread on my forum where the same question was already asked (and may be answered).
Thank you for reading,