Email:  

 
Unity3d/C# games developer last two years

    And also experienced in other related with games development magics and shamanism like:
  -   Node.Js/Javascript to develop web services,
  -   Amazon cloud services(to host server side applications and Web client),
  -   C++ (used since 1993),
  -   C# and .Net stack (WPF/Silverlight, WCF, MS SQL) - since 2010,
  -   HTML/Javascript/CSS to integrate Web client with browser if necessary or create simple Web sites like this
 
  
Strong software development and software design background (over 15 years)

includes taking a part in development of world-class products for such corporations like Alcatel-Lucent and Motorola and complex enterprize applications for less known corporations.

 
  Amulets,artifacts and magic wands:
 -  IDE: MonoDevelop (preferable for Unity3d and Mono), MS Visual Studio (any C++ and C# .Net projects for Windows), Eclipse (for Node.Js), XCode (only to do something for Apple/iOs only)
  -   Of course, revision control software: SVN (lovely), Git, Mercurial; also Microsoft TFS, Unity3d Asset Server, IBM Rational ClearCase
 -   Issue-tracking systems: JIRA, MS TFS, IBM Rational ClearQuest, services like Assembla Tickets, Google code etc and many less known.

  -   Project management: MS Project (lovely), Project Libre, other (including my brains, common sense, paper and pencil)
  -   proficient with Adobe Photoshop and 3d Studio Max. Of course, I am not the artist so my skills with this tools are limited to placeholders creation or adopting ready art to developer needs.


Constantine Khorunzhev


...and Four Arctic Foxes...


Offers services of skilled Unity 3d/C# game developer:

Skills summary



I suppose that the full set of my skills and my sources base best covers the following needs and situations:

  • You are Game studio who planned to develop standalone or clent-server really multiplatformed slot machine or other 2d or 3D game: same application with minimal modifications could be published at Facebook or your own Web site, at mobile platforms, for Desktop computers with different OS and most popular video game consoles. This is because the Unity3d engine supports almost all significant platforms (see full list ) and even can be compiled to run as browser application with usual Flash player Adobe plugin or specialized Unity3d Web player plugin (also provided for all Web browsers).
        I have already developed the prototype of client-server Slot Machine framework with this awesome engine. Please see my portfolio for details.
  • You are 3d or 2d Artist or Writer or other person who desire to convert the set of your arts into RPG-like 3D presentation or interactive book with traditional or non-linear story. Of course, something like Valentino Caravany Museum will be very expensive because it contains a big quantity of art... But the artist is yourself...
      I have developed the framework which simplify the development of such applications so cost of such projects could pleasurable amaze you.
 
  • You are Game studio who have the own great project in progress but also have the new great idea...
       Usually all permanent staff is busy with this great project, but you can hire me as contractor to develop prototype from scratch following your requirements. In this case it is enough the part-time involving of your project manager and game designer.
      Then the project can be without problems either paused and continued later yourself at more appropriate time or you can just charge me to establish the distributed team of free-lancers for this project.
  • You are startup who needs at early stages of project in persons with enough wide set of skills to either implement some small things out of main speciality themselves or control and integrate results of free lancers.
        Also I can help to fast create temporary team: as my native language is Russian and I have rich experience in collaboration with Russian-speaking free lancers for highly distributed international teams, I can help in your interaction with talented Russian, Belorussian, Ukrainian and other Russian-speaking 3D and 2D artists and software developers.
  • You are Entrepreneur who have the great idea and plan to start croudfunding company.
       Such projects often needs in set of game demo and functional prototypes and technology proof of concept prototypes. Of course fund rising itself could be successful without prototyping. But prototyping is highly recommended to simplify fund-raising and reduce the technology and project estimation risks, basically the risk of too optimistic costs estimation.
  • You are 3d Art Design Studio who admired the idea of services like Prezi but thinks that 3d presentations like that are too simple and less artistic that it could be. But still thinking about something like specific Content Management System to allow users without software developer skills create Unity3d presentations themselves with customizing of scenes with usual web interface (or other Unity3d client-server application, which is closer to something like very, very simple 3d Studio Max ;-) ). I have developed client-side prototype which partially implements the functionality of player of such 3d presentations and can be fine starting point for such project and simplest(just to test client-side) server-side application. Player plays JSON files with references to resources.3d editor is really the interface to create such JSON file with manipulating 3d object at 3d scene. Please see my portfolio for details.
      It is possible because it is possible to develop Unity3d client which can download from server side some data like types of items and their places at scene, pictures, textures for 3d models and 3d models themselves, sounds and video and dynamically build the scene following these data.     Unity3d applications could be placed at Web-site or Facebook as well as provided as mobile application. Such applications also can dynamically download data, some of textures, some of sounds and texts from server-side part and build scenes dynamically. So it is possible to develop application and editor which can allow to you edit some texts and some other data yourself without involving Unity3d developer.
       

   Note, one of the main purposes of prototyping is the decreasing of risk of too optimistic estimation of project costs. So basically prototyping is high desirable to clarify most technically unclear moments and to clarify the future architecture of application to create the enough full and detailed for calculations hierarchical list of necessary jobs. In project management it is called Work Breakdown Structure.
   Additional benefit is proving to investors the ability to develop your great game and provide look and feel of future game in well addition to pre-production video.
  For most cases single software developer and part-time 3d and 2d artist is enough for prototyping. Really as risk mitigation Prototyping also could be done with so-called "programmers art" or free models and graphics by software developer himself, but at this stage of production the cost of software development in most of cases much greater then price of art. So art is the bad point of force application in attempts to save money, and art is anyway can be used to produce the pre-production video.

My skills summary

 Senior Software Engineer with 15 years of experience in the IT industry with a focus on software development and software design with C++, C# and other programming languages. Extensive knowledge of Unity 3d/C#. Rich experience of development client-server interaction of Unity3d clients for different platforms (for Flash platform too) with web services. Experience of development web services (http, https) for Unity3d clients with Node.js (Javascript) and using Amazon cloud to hosting it. Experience of work as the member of highly distributed international teams.

  • Over two years’ experience with Unity3D/C#:
      -   3D and 2D gameplay for Unity3d Web Player, Flash, mobile (basically Android) and desktop (basically Windows) platforms
      -   Integration with social networks, In-Apps purchases, Google Play Service, game analytic systems, adware networks
      -   Client-Server interaction with web services (from Flash platform too)
      -   Development the applications with dynamic scene creation and dynamic downloadable textures, sound and video usage
      -   HUD development with NGUI
      -   Development plugins for Unity3d Editor mode, including import load XML-featured results of export from third-party products (like load data from standalone game data editors, FMOD sound system, results of custom scripted export from Adobe Photoshop and Adobe Flash etc).
      -   Experience with third-party plugins adaptation, problems fixing and integration
  • Server-side development for Unity3d projects (basically with Node.js):
      -   Web services (both http and https) with Node.Js (Javascript for scripting, Eclipse as IDE): basically “server imitators” to reduce the dependences to customer “real” server development and provide the easy-to-change reference implementation of requirements to client-server JSON-based or XML-based interaction protocols
      -   Experience with Amazon Cloud (EC2, Elastic BeansTalk, R3 and others). It is extremely useful for creating low budget but highly scalable server side service applications
  • Project management skills and experience:
    Experience includes:
      -   planning (MS Project is preferable) and estimating small projects up to 250,000$,
      -   managing highly distributed international teams up to 10 members and interaction with Russian/Ukraine/Belorussian free-lancers. I prefer the Google products stack to organize such activities.
  • Other useful for Unity3d projects skills:
      -   HTML/Javascript useful to provide interaction with browser for browser Unity3d clients
      -   MS .NET technology stack useful for game editors (WPF/Silverlight, WCF, MS SQL Server)
      -   C++/STL/Boost (MS Visual Studio, XCode)
      -   SVN (lovely), Git, Mercurial, MS Team Foundation Server, Unity Assets Server. JIRA, IBM ClearQuest, Assembla integrated issue tracking, Google code integrated issue tracking…
      -   Apache Ant (lovely), CMake.
      -   Initial level skills with Adobe Photoshop and 3D Studio Max.

 

Software development work experience

Short technology explanation for managers.

Unity 3d is amazing cross-platform engine for 3d and 2d games and presentations. It allows to create even AAA+ products for wide range of platforms:
  • WWW (Web sites and social networks): Adobe Flash Player, Unity3d Web player (better look) and even Google Chrome itself as platform.
  • Mobile platforms: Android, iOs (Apple devices), Blackberry, Windows phone
  • Game consoles: XBox 360, PS3, Wii
  • Desktop: Mac, Windows (including Windows 8 Store Apps),Linux
One of the significant advantages of this engine is the fast growing market of third-party plugins, add-ons and assets which allows to reduce the total cost of game development: http://www.assetstore.unity3d.com/
    Unity3d is great as the toolset of international distributed teams. Apple OS X is very popular in USA but less popular outside of USA. But with Unity3d it does not matter which OS use different developers with same project at the same time.
Node JS is great cross-platform open-source tool for development fast and easy scalable server applications/web services.
Such applications is necessary for most of games which needs in interaction between players or to store some data of players remotely or to remove some calculations out of local client for security reasons (for instance, for gambling games). The server applications developed with this tool can be hosted at most of clouds as cloud application or at cloud virtual machine or at "true" dedicated server or locally (for test & development purposed) for Windows, Mac OS X,and Linux.
As Node.Js is very easy to use, it is the best choice for fast prototyping of server applications. Such approach allows to develop "full" server and Unity3d client-server application at the same time more effectively by reducing dependencies between client and server development.
  For Node.Js exists several IDE; my lovely IDE for this tool is based on Eclipse Enide

   Node.Js also has a great number of third-party libraries to simplify interaction with both different SQL databases and NoSQL databases. Integration with NoSQL databases is really important for game development because databases like famous MongoDB or Redis or Amazon cloud specific Amazon DynamoDB is really more appropriate for game development then SQL databases. Just because for most of cases the requests to databases in this area are just retrieving or writing sets of data corresponded to some concrete object with concrete unique identifier.
Amazon Web Services is one of the most famous in the world provider of multiple cloud services. I think this is the best alternative to dedicated server for small client-server games (and for great games at stage of development) and traditional web hosting for web sites with usual popularity.
As many other clouds it allows to create the virtual machine at which it can be installed all things which could be installed at real dedicated server. Amazon calls this service EC2 - "Elastic computer cloud" to emphasize the flexibility of such virtual machine: "Amazon EC2 allows you to select a configuration of memory, CPU, instance storage, and the boot partition size that is optimal for your choice of operating system and application.". This quotation is true.
   And yes, such virtual server could be absolutely free for one year if its usage enough low: really this is usual situation during development stage and most of personal web sites even built with CMS like Joomla! or Wordpress. If the usage of server become enough intensive (game is finished and have enough quantity of users), the cost will be raised proportional to usage but really remained enough reasonable.
    Principle "pay for used resources only" and avoid cost of support for infrastructure for your own "real" servers is enough profitable.
    But this approach is still require the skills of system administrator to manage this server. Just because almost no difference in remote administering of virtual server and real dedicated server.
    So for game development by small teams or Indie developers it is more interesting other cloud services like Elastic Beans, S3 and many others: instead of usage the server virtual machine, it could be hosted the server application itself, the database itself, the static content itself... This is even more cost efficiently, more reliable and more secure if you have no enough skilled system administrator to provide security and reliability.
    This site and all applications (both Unity3d part and server side web services) presented on it are hosed at amazon cloud.
Microsoft .Net technologies stack seems far from game development. But really Unity3d built on top of Mono which purpose is porting    .Net to Unix-based systems (including Mac OS X and Linux, iOs and Android and many others). So experience of .Net is highly desirable for development with Unity3d and development with Mono.   Many games like "Dungeon & Dragons" or "Gabriel Knight" or even much simpler quest games needs in entering (and then editing) without fails many texts and numerical information.
It is too brutally to force game designers fill the bulk of text documents with specific form like JSON or XML and do it without fails. Best way is to develop the toolset for this game which looks like typical corporate application to enter all necessary data, including the length of ears for different elves races. If it meaningful to calculations of something like strength of magic, of course.
  Using WPF (Windows Presentation Foundation) allows enough fast develop and support UI desktop applications for Windows; Silverlight which is reduced version of .Net allows to develop applications with almost the same look and feel for Web and Mac OS X
  WCF (Windows Communication Foundation ) is the part of .Net stack to easy develop interaction between client application and server application (usually through web services)
   If Mac OS X is the basic platform for your game studio , for the purposes of game data editor it is better to use Mono platform.
    Other common purpose to use .Net or native C++ development is extending Unity3d applications with components based on third-party libraries. I does not mean already adopted to Unity3d libraries like Vuforia (great component for augmented reality), I mean something like libraries for SIP clients.
Mono is the free open source result of partial porting of Microsoft .Net to many platforms, including Mac OS X and Linux. It also can be used to create cross-platform game editors: anything which was created with Mono for Linux or Apple OS X, can be without problems compiled to run on MS Windows too.
  Xamarin is developed by the same team and reuses significant part of Mono. It is also a port of Microsoft .Net to other platforms. It is paid proprietary engine for cross-platform development of applications for mobile platforms and desktops.
Most significant difference between these two systems for development of game data editors is library for UI development: Mono provides GTK+which is similar to obsolete long time ago Windows Forms. Xamarin provides much better UI toolset similar to WPF/Silverlight.
    Unity3d applications can be built to be executed in browsers like Flash or Silverlight applications. And it can interact with Web browsers in both directions. Other words, Unity3d applications can be deep integrated into complex systems with web interfaces by embedding application right into HTML page. Objects of Unity3d application can react on custom messages sent by Javascript code inside of HTML page (see Client-side scripting 7iki page) and use data loaded with AJAX if necessary. Unity3d applications can start Javascript functions.
  
Of course, for most cases it is not necessary as Unity3d browser applications itself contains enough advanced and mature features to interact with server side applications. But for some use cases the ability to utilize Javascript functions of web page is very useful.

   Most common case is authorization process. Often user have to be authorized first to access to some web site features. One of web site pages can contain embedded Unity3d browser client-server application. It is not very good idea to require the user to enter user name and password again but inside of Unity3d application. But using interaction with browser the Unity3d client-server application could retrieve all necessary authorization information right from the web page at which it is embedded. For most cases it is just the single "session identifier" which is unique for every concrete user login from concrete device and expired if user logged out or just does nothing enough long time. All other information Unity3d application basically load from server itself.
   Other common reason for interaction of embedded to web page Unity3d application with Client-side Javascript is the necessity of interaction with interface elements of web page. For instance, pressing the button "search" at web page should search something, show the found information at the left part of page and activate something at the interactive Unity3d application placed at the central part of web page.
Such approach could be necessary for existing COMPLEX web sites which is powered by Unity3d application to add some interactive 3d elements. Good sample of such sites are enterprize systems with web interface which are powered by something like 3D infographics(please Google "3d infographics images") or something like internet exhibitions and shops of something like
  • cars customizing company: such companies could desire to show customer interactive models of cars to explain what they can to do
  • construction company. It is possible to show user the 3D model of house and let him virtually assemble from standard elements the house himself.
  • Virtual tours for virtual museums or exhibitions. I mean not only art history but also something like history of technics: user as RPG player could step-by-step learn the evolution of different machines constructions with walking in virtual building from one interactive model to other model and play with these items.
  • or something else which needs both in website-like presentation of information
To do something related with interaction between Unity3d and browser both web page and Unity3d application should be modified. So understanding of all necessary technologies should be enough good.
But of course to create complex web site it is better to hire web designer and web programmer

Some of personal projects


    I have developed these prototypes with Unity3d as the single developer.
All these prototypes are tested for Web platforms(Flash and Unity3d player), desktop and mobile platforms.

    Why I am highlighting Flash: because it is most "narrow" platform for Unity3d applications.

    You can hire me to develop some products based on these prototypes with your own art. You will be owner of final products.
    Sources of these prototypes could be provided on non-exclusive basis. All art of these prototypes are just placeholders.

Some other projects.


In these projects I was take a part as team member




Death Tour

This is the mix of 3d third person shooter and Racing.

Tools: Unity3d, NGUI (HUD only) platforms: Android, iOs.

My contribution:
Unity3d Editor components,
integration with Facebook and Twitter.
   Please see my Resume for details

>
iOs, Android games



Ganja Farmer - Weed Empire


This game is very close to typical "Lucky Farmer", but this fun game is about humorous growing up the cannabis and mushrooms.

Tools: Unity3d/C#, NGUI (whole game NGUI based)

Platforms: Android, iOs.

My Contribution:

- new features development,
- rework in-apps purchases,
- integration of game analytic, adware network etc


iOs, Android games

Ojoo

Enough big educational game based on geolocation of player in real world

In fact this is the set of minigames, victorines etc depended on position of player in real world city and service which allows to add new data.

My contribution:

Developed from scratch the NGUI based experimental prototype of jigsaw puzzle minigame for further integration


Tools: Unity3d, NGUI (Whole Jigsaw component is NGUI-based)
Platforms: Android, iOs.



iOs, Android games

Megapolis, Wild West

These games are very close to typical "Lucky Farmer" Wild West: project of duplicate the popular Flash game of same producer for mobile platforms with same engine and tools as Megapolis. Tool: C++ and XCode, engine: proprietary, platforms: Android, iOs.
Megapolis - resolving some issues,
Contribution: development functionality of "factory" buildings.


iOs, Android games

Adventure games, based on proptietary engines



Typical adventure games, but one of them has small addition which changes everything:

Sequences of keys are generated following the special rules every time when entering location.
Tool: C++ and Lua, Please see my Resume for details.

Tropical Island adventure

This is the project of quests/adventure multiplayer 3d world (supposed the using occulus rift with in future).

Tools: Unity3d,
Planned platforms: Windows, OS X, high-end mobile platforms, game consoles
Contribution: established the team, organized the work process, developed of first prototype as Unity3d developer

Video

Even earler Web Player playable prototype


Please be patient while loading and starting: this product was not supposed the run of this project in web player and also has enough big resolution.
Known issue: not full compatibility with Google Chrome.