Denis Zdorovtsov


Own game development SiegeUP!

Unity3d + C# 
Developed from march of 2018 in free time after work.
Mobile classical RTS game in medieval cartoonish settings.
Android: https://play.google.com/store/apps/details?id=com.abuksigun.rpg_prototype

Gameplay trailer

Custom level editor

Custom level editor with custom serialization and level loading system that allowed to speed up loading and optimize memory consumption.

Wargaming World of Tanks Blitz 1.5 years since 2018

Game Engine Core team. Support of the proprietary game engine DAVA for multiple platforms: Win, Win10, MacOS, iOS, Android
Build system support for CMake, Gradle, MSBuild, Xcode,
Visual Studio, Android Studio, XCode
The most notable work integration of Wwise into the engine for all supported platforms and migration from FMOD to Wwise.

Zeptolab 2.5 years since 2016

I can't reveal much details about probjects in secret lounches. But I had a great experience working in Zeptolab for more then 2 years.

  • C++14
  • Unity3d/C#
  • EntityX, ECS
  • OpenGL ES2, Android/iOS game development
  • protobuf 3
  • Git, SVN
  • Teamcity
  • Code review
  • Continuous integration
  • Gameplay programming
  • Agile, scrum, poker planning

Casual match-3 game in soft launch C++

Worked within Agile team of about 10 people with pocker planing and 2 week sprints. This was the best workflow I've ever seen, thanks to our project manager.
We used own corporative 2d game engine.
Closed because of low income and expensive advertisment.
Dophin MVP.

Mad-max style game about top-down car fights in soft lauch Unity3d

Also Agile team. The game was built with Unity3d. This was the first time Zeptolab used Unity3d, so, workflow was built from scratch.
The project was closed because of low retention.
Worked within a distributed team. Game designer and project managers worked in office in Barselona. All comunications and documentation in English.

Top-down shooter with asynchronous multiplayer in soft launch (in progress) C++

The project is still in work. The game is developed with new generation of a corporative game engine which provides component based approach.
Practice of code reviews.

First full-time work in ENSET  2013 - 2016

  • C++98
  • Qt5
  • Modbus, SPI, I2C, UART, USB
  • Coding STM32F1/4
  • Driver development for Windows
  • Linux
  • Cross-platform programming
  • Technical support
  • Technical documentation

Welding machine

This was the first my project for the company. For testing of GUI, I made a simulator with a virtual display and a virtual driver of display. So, I become mobile and could work even from home. This approach also appeared useful for making user manual. All screenshots were made in simulator. All the next projects extended the simulator and by the end of work with my colleague we even developed a mathematical model for most important mechanical parts.
The main purpose of the machine is making smooth welding seams on rotors. Whole the control system was developed and coded by myself. All electronic parts were made by my good friend. And mechanical parts where designed and produced by another department.

Balancing machine

This was the most complex project from my point of view. Apart of controlling different devices and sensors, I needed to pass data to the computer in high speed in realtime. I decided to try with USB, because it also allowed to update firmware without extra work. Passing data in realtime required making a driver for Windows and developing debug tools for it. The GUI shown on video was developed by another colleague and all electronics and mechanics were made by other people.

Pressing machine

The project was similar to a welding machine in many aspects, even was simpler. Thus, I just moved a GUI framework to a separate module and used it in the both projects. The control system of a machine made operations with pressure, determined by operator via control board.

Balancing + welding machine

To make products more affordable and improve workflow, it where decided to compose both welding machine and balancing machine into the single device. This way, all components of a machine where connected together via Modbus. The code where kept universal and modular. This was a pretty interesting task for me. The perfect final.

Robotics club of DSTU university 2011 - 2013

  • C
  • C++
  • Qt4
  • Assembler AVR
  • AVR controllers ATtiny13A, ATmega8/16
  • ARM controllers STM32F1/4
  • Lidar URG-04LX
  • SPI, I2C, UART
  • Robot and electronics simulation
  • Team work, leading and mentoring skills
  • Participation in international events
  • Basic electronics development skills

The first thing I've done after university entrance was joining the robotic club which was just founded. So, I've became the forth it's core member.
The club still exists and evolving: https://vk.com/southrobocrew

Local contests

I participated in few local contests and was a leader of a team of 5 students with an autonomous robot for retrieving a box from a maze.

ABU Robocon 2012

This is a big robotic competition of the Asian region. We did our best in Hong-Kong contest but as novices were not able to compete with experienced teams.

The video from one of testings (I'm that skinny guy who is jumping funny) :

I developed firmware for both working robots presented in video (manual and the transport robot). Both were done in pure C on STM32F1 and STM32F4 controllers. The third robot was developed by my good friend.
It was interesting to work with omni wheels configurations which are able to move in any direction. But the most exciting part was driving them!

3. ABU Robocon 2013 LIDAR

This time I worked on a navigation system, based on data received from LIDAR (laser distance detector). Data received from LIDAR were processed by Hough algorithm for retrieving circles and lines. And after that position received from other sensors were clarified with gradient descent relaying on previously saved map of a playground. Unfortunately, data from real LIDAR incorporated too much noises and Hough algorithm worked awful with data from real world. So, the work were finally canceled.
Most of testing were done in open source robotic simulation system Player/Stage. There also where written few data visualisation tools during the exploration work.

4. "Plumber" bot

Robot for tube condition analysis.
The team consisted of about 10 people. I was responsible for development of a control application. It was made with Qt in C++. The control app emits commands to the robot and takes input from joystick, keyboard and GUI.  The challenging part was to translate a video from analog camera connected via tv-tuner in Qt application. Unfortunately the project was closed because the customer ran out of money.

My literature 

  • Just for fun, Linus Torvalds
  • The C Programming Language - Dennis Ritchie
  • Modern Operating Systems, Andrew S. Tanenbaum
  • C/C++ High Level Programming, T. Pavlovskaya
  • Head First Design Patterns, Elisabeth Freeman, Kathy Sierra
  • The Shellcoder's Handbook
  • Design Patterns (GoF)
  • Effective C++, Scott Meyers
  • Effective Modern C++, Scott Meyers
  • Code Complete, Steve McConnell
  • C++ Coding Standards, Herb SutterGame Engine Architecture, Jason Gregory
  • Domain-Driven Design, Eric J. Evans
  • The Art of Readable Code
  • Patterns of Enterprise Application Architecture, Fowler (and articles on his site)


Популярные сообщения из этого блога

Siege Up! Editor (beta)

Движок моей мечты на Си

STM32F4 и программный выход в DFU