Dmitrii Nikitenko
    Russia, Russian, English
contacts: kembl07@gmail.com, skype kembl07, ICQ 1413559, Toptal
Facebook Twitter LinkedIn



I've been developing C# games for last 6 years and mainly I use Unity3D framework. As a team leader the projects I participated in, I developed almost completed a 3D Android strategic game which I can show by request (cause a pre-publish state), and a big Car simulation multi-user game which example located on - city map example.

Frameworks: Unity3D (since v2), Exit games PhotonServer (since v1), uLink, Awesomium, Coherent UI, CarX, Teamspeak, Nhibernate, IoC/Di, etc.
Brief proofs: My Unity3D profile since 04/2009, my ExitGames profile since 04/2010.
Source example on GIT: SpawnContext.cs (github.com)

Try racing track from my recent game Mehanos. Read more about this project with examples at this link.

I like developing core strategic logics, AI behaviour (a unit action in a case of some game situation), network interaction logics.

Also I have extended experience with design patterns, optimizing, vehicle physics, GUI, Bonus and Referral systems, big SQL Databases, developed big file exchange system. I am a BSD/GNU/Linux administrator.

CEO last 5 year, Senior Developer for last 8 years

Goal: Build a consistent AI engine based on linked representation of objects.

Hobbies: games, Ingress Agent, gym, QuakeLive, fixing a car, radiotechnics

Tags: C#, Unity3D, OOP, AI, Android, t-SQL, uLink, Photon Server, .NET, network, game, Teamspeak, Visual Studio, Cross Platform development

Read more about my recent game RedButton with screenshots and video at this link.

Several videos from my car racing project Mehanos. Read more about this project with examples at this link.

The City. Seamless map system demo.

Harbour. Complex optimized map.

Parking. Map with dynamic borders.
Also you can see that brief video about one of my last work. Link between Unity3D and Proton server. This video contains English subtitles.


Try Jumping Ball it is a 2D game for chilren, it is built on Unity 2D engine. Read more about this project with examples at this link.


The list of areas from my rather interesting projects:

Weapon system
  My experience includes developing of dozen different types of weapon such as:  Machinegun, TankBarrel, MissileLauncher, MineThrower, ElectricSpot, Laser. I can make all types or heavy stationary turrets with autofire option. Light weapon for soldiers, micro and huge robots, tanks, mobile rocket systems is my first preferable work after AI algorithms. 
  Also weapon may have smart logics to select nearest, heaviest or weakest target to destroy. The target may be fly or ground units. Kinetic weapon can predict where to fire to gift dynamic targets with bullets just in time :)
  Be sure - I know how to produce all kind of charges for listed weapon.
  One type of weapon is a DamageZone where units lost they health points as much as long they stay in a predefined perimeter. This damage perimeter can be movable by some in-game logics.
  One of my lovely coded weapon is Zeus. When a player taps on the screen, a huge flash will bring the death to any units in a range.
  All weapon might be upgraded by several ways such as range, rapid, damage, voltage.

System of enemies
 In a Last game, I worked with six types of enemy units, there were enemy divided by Physical damage, Middle damage from automatic weapon, Heavy damage robot  units, Vehicle/Tank units, two types of plane units - attack plane and bomber. Last unit type was Boss, which has its own attack behaviour.
 All units have damage and health stats, death behaviour, motion algorithms.
 Any unit type has it self animation when shoot, die, etc.
 Also I have experience in work with algorithmic car racing opponents, simple track behaviour and an AI like real time car driver simulation with an obstacle occlusion.

Game map
 I worked on system which can dynamically load map objects according player position in seamless game world. All unique objects what exists on map are download only once and can be cloned to next position without duplicate downloading. All objects have priority order which lets game download roads before grass or buildings. You can try that city system there. This is not big ~2km х 1.5km part of city Rostov-on-Don, where player can drive a car. All necessary information to place objects within 3D world stored in SQL database and client side got this data by persistent client-server connection. I used PhotonServer on server side for this project.

Physics
 Big experience in vehicle physics modelling. Steering assistance, ASR, ABS, ESP, Suspension, Nitro, with WheelCollider and with Pacejka Magic formula. I know how to change car parts on the fly without visual jumps of the car body caused by uncompensated forces.

Character
 I made system which can change car parts in real-time and apply new physics parameters to the car model. Big work on fast car paint engine, where player can draw its own decoration and write words directly on the car with exists set of decals. All data stored in XML file and backed to one texture when player enter to the game according to current game quality. 
 I know how to apply animation, work with Mecanim blends, make re-targeting. I wrote different types of a character camera several times.

Server
 I know how network works in OSI levels, how to construct a Unity3D network interaction. My best experience (4 years) in work with PhotonServer. This is fast, reliable, multi-threading server framework. I used it as server-side solution for the racing car game. As senior developer I wrote huge amount of classes, methods and other stuff for this framework and know almost all about v3, you can find my conversations in PhotonServer forum. One of the biggest system was server-side cache technology helps us to reduce the amount of requests to the database and rise system performance. 
 Also I widely used PHP with MySQL as back end, and familiar with Memcached.

SQL
 In the car simulator project I worked with Ms SQL Server database which contains our game world state and all information for the City level. That game map can be built from a scratch with a couple of SQL requests. It consisted of 700 objects what appeared around the player according to its current world position. Since all these objects stored in database we needed an optimal way for adding and requesting it from DB.
 I can write or fix a tricky sql query, solve sql database related issues, make schema, user functions, stored procedures and extended CLR-Stored procedures. I like work associated with query optimization and db performance tuning.
 Aside of Ms SQL Server I can deploy servers and work with MySql, Postgresql.
 
Audio
 AudioManager. That class can play an audio in a loop or one shot mode in a given 3D point. It has several mobile optimizations, for example it can play in loop only one equal audio clip, when several audio sources try to play it. Also this class try avoid Unity3D bug when loop audio sudden stop playing when another call to play income.

Bonus
 Full bonus system where objects drops to the ground according to some game event. The system contains of nine types of bonuses like DamageUp, ScoreUp, NuclearAttac, FreezeAll, etc. which allows player to improve his efficiency. Each bonus has settings to act within time like RangeUp or set immediately action like "a big bomb explosion".

FX Effects
 EffectManager can play range of different particle effects by Enum id. Each effect can be placed to some destination in 3d, may be started and turned off.

Object OOP system
 Enemy Units, Walls, Weapon, Buildings and other war field objects are derived from one BasicObject class. All objects have they own spawn status, unique identification number, etc. In some cases design patterns may be implemented such as Strategy or Facade, in some cases it is unnecessary.

GUI system
 I know well enough a pre Unity3D 4.6 GUI system, to avoid using it :) My group designed optimized GUI named xGUI which looks close to Windows WPF and may store all interface mark-up in XML files. 
 I know how to build GUI which will adapt to different screen resolution by Height and Width.
 I know how to work with mouse, pinch, zoom, slide screen interactions.
 Also I worked on multi language system, which allows store all languages in XML file. This system may be linked with some font manager and will show necessary font for current language.

Resources management
 Game optimization bases on code optimization and RAM management. In all projects I tried to minimize memory consumption. I know how to load and clean up  asset bundles, manage texture size, use profiler, benchmarks and debugging to get best results. Other useful tools are Android Dalvik Debug Monitor Server, SQL Server Profiler, network dumpers.

Player settings
 I know how to store player settings between rejoining to a game. I made my own class which interacts with UnityEngine.PlayerPrefs and helps to load or store the user defined data. Usually in first application run this class generate unique string for current player and may send it to server for later game identification.

Shop logics
 I made several shops. Some of them can store list of products on a server side. It is a bit difficult but give the control over product list and prices without rebuilding of the game client. In some situation shop content may relate to current map settings. In one shop realization (for racing game) the referenced product might be downloaded and installed to the car to show how it looks in 3D. In other shops each product have only a 2D image presentation.

Rating / Benchmark
 Several game events can have counters which are stored on server side, all gamers can see overall statistics which adding more sport interest into game.

Monetization
 To deploy any project well need a bit of money usually, I know how to develop this kind of systems and link they with game logics and GooglePlay payment service.

Network
 I develop big multi-player game based on Unity3D and Photon server. Custom data packets, network optimizing, player position prediction, cheat prevention all this task was my every day work.
 Today even if game is single player most of it have player activity monitoring to correct game-play process, work with bugs and cheats, store and show game stats, so you almost always have to have a network some layer in the game.

Web-bridge
 In web based Unity3D application some time needs to send some data to web back-end, it is not very difficult thing, if you know JavaScript enough, like me :)

Core game logics
 The inner game structure usually consists of some GameManager and set of maps, which player can enjoy. I have experience in different approach to create map sets. One is a server side configured map list, another is a client side static map list where the each map will open for playing only when gamer achieve the win on a previous one.

Secondary
I worked on benchmark system, game stats system, quest system, camera manage, skyboxes and so on stuff. .Net/Network reverse engineering, stack machines, .Net Reflection, Multi-threading, locks, priority, etc.
Understanding of third-Party framework integration: PhotonServer, Detonator, FinalIK, ShooterAI, Control-Freak, Flurry, OpenIAB, Playmaker, Shuriken Magic Effect Pack, VolumeGrass, CarX Framework and more.
RayKom, Ltd.
Founder & Senior Developer
2010 - Present

Project management and develop. Core functionality, AI, optimization, base game logic, multi-player network interaction, Database developing 
Skills: Unity3D, PhotonServer, C#, t-SQL, Game AI, group managerial tasks

Digital Telephone Networks
Project Manager, Senior Developer
2006 - 2010
Big multiuser media systems development
Skills: OOP, t-SQL, Perl, PHP, GNU/Linux, SUN Solaris, FreeBSD, group managerial tasks

JEOComm
System administartor
2006 - 2001
Unix and Windows server farm administration, user dialup system administration, daily database operations.
Skills: t-SQL, Perl, PHP, GNU/Linux, FreeBSD, squid, samba, bind, dhcp, vpn, managed switches, shell scripts
Rostov State University
Specialist in Applied Mathematics
1998 - 2004
Specialist degree (Bachelor + 1 class) Mechanics and Mathematics Department of Rostov State University

Rostov College of Communications and Informatics
Specialized Secondary Education
1994 - 1998
Radio and Television, Communication specialist.
I am searching for a job in a European innovative company dealing with gamedev that can offer possibilities for my professional development. I am preparing to take the IELTS/TOEFL exam. I like to improve my language skills and now have an intermediate level of English and can pass interview.
Latest version of this resume located at cv.mehanos.ru




Just give me a game problem :)