When interviewing for the position of head of development in some companies, the author had to listen to the same story during the conversation:
“We have 3-4 programmers who have been “sawing” one project for six months (or a year — the time period depended on the company). Nevertheless, despite the efforts, there is still no workable “demo” that can be launched and demonstrated to the Customer. We are looking for a manager who could organize the work.”
The strangeness of the situation lies in the fact that seemingly smart and experienced company managers think about organizing the development process not at the beginning of work on a project, but only when the recruited team fails. Meanwhile, the process should be thought about at the very beginning.
In this article, the author shares his successful experience in organizing the development process in the Larian Studios toolkit department.
About the company
Larian Studios is a small company with a staff of just over 100 people developing a series of Divinity role—playing games. The company consists of several studios located in different countries. One of the studios is located in St. Petersburg. The games are released for different platforms, including Windows, Linux, Mac OS X, Xbox ONE and PlayStation 4.
To develop games, the company uses its 3D engine and its integrated development environment. Despite the fact that the engine is ported to different platforms, development is carried out on the Windows platform. This is due to the fact that the development environment is written using WinForms and WPF technologies and runs under the control of the environment.NET Framework.
The integrated development environment is an application within which you can run the game as a whole, or a separate game mode or level. We can say that this is a kind of container for launching the game, which is equipped with various tools for creating levels, editing surfaces, arranging objects, creating and editing scripts, dialogues between characters, etc., etc.
The Larian Editor is used to create the game Divinity: Original Sin 2
Despite the fact that the development environment looks impressive, and a lot of UI elements provide access to extensive functionality, however, the convenience of its use leaves much to be desired both due to the overload of the interface itself and due to the fact that its individual parts are not consistent with each other. This is the main problem.
About the requirements
The basic requirements for the toolkit can be expressed by 3 conditions:
It should look professional, and not like a “knee” software.
It must have the specified functionality and be convenient to use.
The time and cost of development should not exceed reasonable limits.
The tools are developed for internal customers. These include all those people who directly make the game. These are visual effects designers, 3D animators, game designers, scriptwriters, etc., etc.
About the department
The toolkit development department is small. Its composition:
1 lead programmer (aka manager)
1 quality engineer
About the process
To organize the work of the department, it is necessary to put the development process. The set process will help to deliver projects on time and with the specified quality. Since the team is small and everyone knows each other, we do not use a heavy and regulated by all sorts of rules, but an easy development process. Many things are not formalized in it, and others are based on oral agreements. However, there are clearly structured things that I want to tell you about.
Stages and stages of development
The development process in the toolkit department can be divided into 4 stages:
At this stage, our internal Customers prepare the concept of the program being developed and formulate the basic requirements.
At this stage, we are evaluating the project and creating its plan.
At this stage, the program is being developed.
Improvements are being made to the program, bugs are being fixed.
Stage 1. Concept development
Work on a new tool begins with the development of a concept. This is done by our internal Customers such as visual effects designers, 3D animators, game scriptwriters, etc.
The process of creating a concept consists of several stages:
Awareness of needs
At this stage, interested parties realize their needs for the tool and the reasons that push them to have such a tool developed inside the studio. Such reasons may include:
Until recently, we used a tool that was licensed from a third party. But the price for the license has increased so that it is cheaper to develop your own tool.
The existing tool does not support the new platform for which the game is being developed, or it cannot be used to implement a requirement that should become one of the key ones in the new game.
The existing tool is inconvenient to use, which significantly affects labor productivity and, as a result, the speed of game development.
Formulation of requirements
At this stage, stakeholders formulate requirements for a new tool. These requirements include both the functional part (what the tool should do) and the ergonomic component (how comfortable the tool should be to use).
Search for analog solutions
The search for solutions to the problems formulated in the previous step should begin with the study of analog programs. In our case, such analogues are Unreal Editor, Unity 3D, FxStudio Designer and other programs. Deep knowledge of such tools allows you to spy on successful solutions and use them in your own application.
Layouts allow developers to create a visual representation of how the tool being developed will look. At first, it is enough to draw several key screens, such as the main application window, the main data editing window, and toolbars. As you develop, you can add layouts for other windows as well.
Preparation of the document
The final document is formed by combining mockups with requirements. The document is divided into chapters on a screen—by-screen basis: each screen is a separate chapter. At the beginning of the chapter, the layout of the corresponding screen is given, and below it — the corresponding requirements in text form.