AlternativaPlatform is a multiplayer online games and services developer.
We bring joyful experiences and happiness to our users all around the world.

Our flagship project – Tanki Online – has a monthly audience of 5 million players from 50 countries. It had been acknowledged as the most popular browser game of 2013 in Russia.

Russian, English, German, Brazilian and Chinese versions have been already launched and are now expanding. An integrated gaming social network platform is under development right now, with new versions of Tanki and Combat Sector to be released there as well as more in the future.

Company history

We aim to be able to provide beneficial entertainment for one billion people each month by 2020.

To achieve that, we are planning to release 15 good games supporting 25 languages within a consistent ecosystem, a new type of social network.

Our mission is to help our users develop personal qualities, skills and knowledge, find new friends and connect with their family through gaming, both online and offline.

Our strategy

1. Develop an integrated software, hardware and operation platform for small teams to work on multilanguage cross-platform online games.
2. Provide a thorough multilanguage social network for our users.
3. Launch TO and CS on the integrated platform and implement corresponding roadmaps by summer 2015..
4. Develop and release 15 online games with 25 language support for the integrated platform by early 2020.

2014 Development of the platform’s foundation, based on Tanki Online and Combat Sector
2015 Development of games and infrastructure (e-sports, tournaments, voice chats, adding full functionality)
Commencement of work on the third game
2016-2017 Implementation of our own games on the network (12+ games covering a variety of genres)
2018-2019 Involvement of third-parties for the purpose of developing games on our network
1 billion MAU
We are currently looking for talented professionals who share our values and meet our requirements to make them best job offers.

What we offer

  • Material Goods
    • Good salary
    • Cumulative bonuses
    • Participation in profit distribution
  • Training
    • English courses (at the office)
    • Conference trips
    • Any training materials (books, sites, etc.)
  • Healthy Lifestyle
    • Healthy food at the office
    • Extended health insurance
    • Free gym and swimming pool
    • Massage at the office
  • Interesting Job
    • Ambitious goal, we are driven by a desire to do something really worthwhile
    • Constant feedback from a huge audience
    • Challenging tasks and sophisticated technologies
    • Almost no routine or repetitive tasks, every time there is something new to do
    • You choose what you do from a pool of priority tasks
    • Ability to change specialization inside the company
  • Organization
    • You define your work space (hardware, software), comfortable chairs
    • Ability to work remotely
    • Free schedule
    • Processes within a team are set up by its members
    • We actively use the latest engineering practices: GitHub Flow, TDD, obligatory code review, DevOps (ansible, vagrant)

Company policies and values

View media

We are in dire need of:

Backend programmers

Requirements:

  • Practical experience with Linux platforms.
  • Working knowledge of Git and Maven.
  • Strong knowledge of Java, at least 2 year experience.
  • Working knowledge of databases and knowledge of SQL, Hibernate and PostgreSQL would be an advantage.
  • Understanding of TDD, testing processes, experience with JUnit/TestNG unit testing.
  • Working experience with highload servers, understanding of multithread programming, profiling, optimization.
  • Working experience with WEB GUI (GWT, Vaadin) would be an advantage.
  • Knowledge of NoSQL DB (Redis) or Hive would be an advantage.
Test tasks

1. 3D engine

You should implement a simple server-side 3D engine for a MMO game (without a visual representation).

The engine should download a 3D scene and allow to determine a crossing of set rays with geometry (so called "ray casting"). The scene includes objects, each of which is composed of triangular facets. Triangles are two-sided, i.e. a ray may cross a triangle from any side.

A ray is described by an origin point and a direction vector, a crossing of a ray with the first object (if any exists) should be determined.

Supposed amount of objects in the scene is 1 000 – 100 000, a large amount of rays should be processed in efficient way in real time. "Efficient" here implies, first of all, minimizing latency between requests and responses (priority of latency over throughput).

The scene is set in the form of xml (xml-scheme, scene examples shall be attached).

A running engine should read from stdin strings of the following type: origin – coordinates of a ray start point, direction – a direction vector. In general case vectors may be unnormalized:

rayId;originX,originY,originZ;directionX,directionY,directionZ

Example:

1;1,-0.5,5;0,0,-1
2;1,1,1;1,1,1
3;-1,-0.5,5;0,0,-100

The result should be put to stdout in the following format:

rayId:objectName

If there are no crossings, the "objectName" should not be printed.

Example of an output:

1:pyramid
2:
3:pyramid

No other information shall be put to stdout, as it is supposed that the output may be listened by some other program. Errors should be printed to stderr, the format is free.

The solution should consume file name of scene as input parameter, e. g.:

java -jar engine.jar scene.xml

In attached files:

scene.xsd — a XML-scheme

example1.xml — an example of a simple scene (one pyramid)

example2.xml — a scene with 48 objects

2. Refactoring

Class for refactoring in attached files — MyApp.java.

Our expectations from the execution of the tasks:

  • OOP approach.
  • TDD approach.
  • Use of maven or gradle.
  • Simple, clear and logical code.

Requirements to the execution of the tasks:

  • Java or C#.
  • All sources are on GitHub.
  • Binary assemblies excluded.

Download files

Front-end programmers

Requirements:

  • Working knowledge of Git and Maven.
  • Strong knowledge of C# and at least 2 year experience.
  • Experience in developing on Unity is desirable.
  • Understanding of TDD, testing processes, unit testing.
  • Understanding of multithread programming, profiling, optimization.
  • Working experience in game development would be an advantage.
Test task

Make a Pac-Man game:

  • 3D-graphics.
  • AI-controlled enemies (ghosts).
  • Possibilities to add new levels without a programmer.
  • Possibility to change game settings: number of enemies, speed of enemies/player, etc.

Bonus:

  • Saving/loading of the game.
  • Other additions on your opinion.

Our expectations from the execution of the task:

  • Simple, clear and logical code.
  • Operability under different platforms (PC, smartphone, tablet).
  • Precision of code and game design.
  • If third-party solutions (resources, algorithms) are used, it is necessary to indicate their source.

Requirements to the execution of the tasks:

  • All sources are on GitHub.
  • Binary assemblies excluded.

A job with AlternativaPlatform may be a dream to come true! If your profession is not on the list but you are sure we need each other – then feel free to let us know.

Requirements to yourself and your colleagues

  • Passion for your job, desire to realize your hidden potential and master your profession, become a happy person.
  • Systemic approach to workflow organization, planning, and communications.
  • Honesty, open mind, ability to listen and to be heard, sociability.
  • Competence in the chosen line of work.
  • Motivating dissatisfaction with results, constant personal development and desire to teach others.
  • Caring about users and colleagues.
  • Essential spoken and written language skills.

How to join?

If you would like to work with us, share our values and meet our requirements – tell us about yourself at welcome@alternativaplatform.com.

Question tips for your story: What are my achievements I am proud of and why? What is my attitude to my job? What was the last challenging and exciting thing I've done? Why am I better than the others?

We often require suitable applicants to complete a test task and tend to torture them in other ways. The best of the best will get an offer they will not be able to refuse.