📜 ⬆️ ⬇️

Adventure Jam 2016

image

I want to tell you about the experience of participation in Adventure Jam 2016. Some time ago I decided to try to take part in some gamejam and posted a post about finding a team in one of the VKontakte communities. It took more than a month, no one wrote, and I already forgot about this venture, but suddenly the artist Sergey contacted. Pretty quickly, we found a major competition of two weeks in length, the theme of which was adventure games. It was decided to do the classic point'n'click quest. The team was filled up by animator Boris and composer Vasily, for several Skype sessions we discussed the setting and the plot, and then got to work. Under the cut, you will find a small post-mortem in four parts on behalf of each team member, with a description of the process, problems and solutions, impressions and conclusions that each learned from participation.

Part of Victor (code)


I. Engine
After we determine the genre and mechanics, it is time to choose a weapon. In order for your game to be played by the largest number of people, it must be as accessible as possible. Few people want to download and install builds of several hundred megabytes, however, many participants chose this path. Launches for games that support the browser, more than an order of magnitude, so the ideal option was to do something under the web. I have quite a lot of experience with C ++ version of Cocos2d-x, but it is focused on desktops and phones / tablets, but the JS version allows you to run the game, including in the browser. I have never written anything on JavaScript before, the duration of the jam is only two weeks, so this option caused some concerns, but having experience with the framework itself and C-similarity to JS looked like a good compensation.

Ii. Chronology
Development began with the import of a test scene and the effect of parallax (when different layers move at different speeds, creating the illusion of depth). This is where Python really helped, in which there is a wonderful psd-tools module, it allows you to read PSD files and export layers as separate images. The script parsil received from the artist scene and generated a daddy with pictures and json with coordinates.
')
Then it was the turn of the main character, you had to teach him to move around the scene and interact with the objects of the game world. I decided to set possible paths in the form of a graph, when I clicked on the stage, the heroine walked to the nearest peak, making her way around the width of the path. When the object for interaction was close enough, buttons with possible actions appeared on it.

image

The basis of the gameplay was ready, it was necessary to release the plot. It took about a week of fairly vigorous programming in the evenings after work. Past acquaintance with the engine gave its fruits, there were no significant problems at this stage, but everything took time. The culmination was the night before the deadline, I had to sit sternly until 4 o'clock in the morning.

Iii. Javascript
JavaScript seems to be created for code like mode hell. The speed of development compared to C ++ is more than 3-4 times, no joke. One post ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript ) and the examples from the engine was enough for me to begin more or less to speak in a couple of days. Of course, haste affected the quality of the code, but, on the other hand, this is what jam is.

As an IDE, I used WebStorm, autocomplete works fine, errors are highlighted. To debug, instead of the web version, launched a native build, in which the R button was reloaded to reload all the scripts from the disk. I had to sacrifice the possibility of step-by-step debug, but it turned out to be not very necessary. As a result, the workflow was as follows: we write the code, alt-tab into the application, R, everything loads in a second, we look at the changes, alt-tab in the IDE, we write the code. The rate of iterations is incredible.

Another positive point in JavaScript is the ability to override the method of an existing class or extend it without inheritance, like this:

cc.Node.prototype.runActionWithDelay = function(delay, action) { this.runAction(cc.sequence(cc.delayTime(delay), action)); } 

In the coconut, everyone usually inserts his crutches, taking advantage of his open source, and then there are problems with updates. In the JS project, all additions and changes to such a plan can be assembled in one place and update the version of the dvjik using copy-paste.

The fill mechanism turned out to be quite simple, cocos compile -p web -m release, archive, upload to gamejolt.com or itch.io, there you can also specify the size of the window with the game, which allows you to avoid torment with permissions. Games using Cocos2d-x, despite the simplicity and ease of development, on GameJolt quite a bit, I think ours was the first project on the JS version.

Iv. Problems
Animations of characters and actions were made in Flash, using frame-by-frame cutting for import. Unfortunately, I did not find normal SWF support for the HTML5 version of the engine, although I had previously successfully used SuperAnim in the C ++ and Lua versions for these purposes. The frame-by-frame animations did not have a very positive impact on the size of the build, in just a few days it got rid of up to 130 mb. And although no one complained about the large size in the web version, users of the mobile version of this game will immediately notice that something is wrong. As a possible solution for animations, you can use Spine, it is well supported by the engine and allows you to avoid giant atlases with frame-by-frame animations.

The implementation of the movement was not very successful; the edges of the graph as possible ways restrict freedom too severely. Although many popular quests (for example, in Machinarium) use just such a system, it is better to set zones for walking with the help of polygons. I'm not sure that I would have managed to implement this option in the framework of the jam, but in the future I plan to use it.

V. Results
Before starting the jam, you must have some kind of basic code for the selected game type. It is always a pleasure to write your bikes, but it is better to do it ahead of time, to leave as much time as possible to write directly to the gameplay. In the rules of some jams, it is expressly forbidden to use any own add-ins above the engines, but with one exception: if the code is laid out in public access and is available to other participants of the jam, it is allowed to use it - this is the reason to put your products on GitHub. I wrote everything from scratch, and a part of my time estimates turned out to be overly optimistic, which, alas, affected the intensity of the last 2-3 days of development before the deadline.

10-20 percent of the time needed to be left on polishing and playtest is a very important point that is easy to forget in the heat of the battle. It is easy to skip any annoying extreme mistake, and it will have the most sad effect on the estimates. In this jam, one of the key mechanics I started writing at night, three hours before the deadline, as a result in version 1.0 there was a certain amount of unpleasant roughness. Fortunately, the rules of jam allowed cosmetic patches to be made, after the restoration of hp and mana, all the flaws were corrected.

I was extremely pleased with the process and the result, thanks in large part to my teammates. Jam delivers in a very short time to get experience similar to the experience of developing a commercial project in a studio for a significantly longer period. There are virtually no risks, so you can use any technology or language. Freedom is limited only by time.

Part of Sergey (art)


I. Setting / Styling Development
At an early stage, it makes sense to decide on the setting and style of the project. Here I will make a small digression. The fact is that in the gaming industry there is a mainstream, widespread settings (fantasy, sci-fi, etc.) and stylistics (visual languages ​​in which these settings are embodied), which are loved by players. At the same time, copying and compiling is common, it is often difficult to distinguish one fantasy project from another, since forms and techniques wander from one project to another. I am convinced that doing the same thing as everyone makes sense only if you have enough resources and skills to do it better than others. In conditions of limited resources, it is more efficient to simply differ, to have a recognizable face. If you were able to choose a unique visual language, the player will forgive you for possible flaws in the performance, he will remember your game. If you did the same as the others, but did not reach to raise the bar higher, then everyone will forget about your game, barely closing the application window.

This raises a logical question: how do you do something new? The answer is simple and logical: you need to take the material out of the video game environment. It can be related professional environments, for example, illustration and other forms of visual art - you can find ready-made, developed graphic languages ​​that have not yet been embodied in games (like, for example, the creators of Year Walk did - compare what they did, with the works of illustrator Jon Klassen). You can also search for material in other areas of life, but then you have to rework and unify it into style.

As part of this jam, I decided to take the second path, and took scary objects from post-Soviet children's playgrounds as material. I don’t remember that someone used such aesthetics in video games, so it was very interesting for me to step onto an unplowed field.

1) Material collection and selection
Even before the start of the jam, I thoroughly delved into the depths of the runet and collected a lot of references. After analyzing them, I concluded that the objects from the playgrounds are very different aesthetically, and drawing them without prior selection and unification would be a mistake. Most of all the objects differed in material - they were wooden, usually hewn from logs, metal and made from roughly painted cement blocks. Each type is a very rich material, but for simplicity, I decided to choose one type - wooden statues.

image

2) Preliminary sketching of objects.
The task of this stage is the search for styling and design of objects. Drawing statues one-on-one without styling is not the best idea, because the result would be less expressive and more heterogeneous. It was necessary to conduct a search for expressive means, to see how objects will look at all, being expressed through a line and simplified. This is precisely the stage where the material was processed into recognizable and rhymed forms.

image

image

At this stage, I already had material that could be shown to my colleagues and discuss what we are doing at all, what emotion we convey, so that it is not just in words. The material that I collected at the previous stage could be processed very differently, and each variant would have its own intonation. When styling and design are understandable, other team members can already understand what aesthetics we embody, whether they like it or not, and how they will build their work. In working together, it is very important to make sure that you mean the same thing.

3) Outline composition
At this stage, I thought up the plot of the game at the same time as thinking about the composition of individual backgrounds. Initially, we planned to make several scenes and even a mini-game. Jem, as usual, made his own adjustments - we managed only one scene, and the plot did not turn out complete. However, within the framework of jams, projects that look not as a complication, but as full-fledged works, look more profitable. Here we made a mistake - you need to more accurately understand your strengths and distribute them so that you have time to fulfill the minimum amount of our plans. It is often worth making the content less worked out in order to do more. Unfortunately, I have a habit of burrowing in the details, this is my chronic mistake. Perhaps a dozen jams wean from this. It would be nice.

image

Ii. Content production
Actually, a couple of days have passed since the start of the jam, and the following problem was striking: the other team members could not really start work until I gave them the content. The animator Boris could not begin to animate the character until there is no character, and the programmer Victor could not collect the scene and deal with the movement of the character until the composition of the scene was determined at least on the cubes. It was necessary to urgently do something about it.

1) Character
Therefore, I postponed the work on the background to quickly make a character. Unfortunately, I didn’t really have time to think about its design, and, worst of all, I couldn’t even decide on its color scheme, while the background color scheme is unclear. In an amicable way, the decision of the character should be made depending on the environment in which he is located, but there was still a lot of work to be done on it. So I quickly made the character randomly, hoping that he would fit in color in the future background. In case, if it does not fit, the animator and I have stipulated the possibility of repainting it, provided that the forms themselves remain unchanged.

image

So, the character was ready. Because of the costume, he turned out to be some coraline ommaj from a famous animated film, which I regret. It was worth making the character more unique. Anyway, the character was cut into vector parts and given to the animator to make the basic motion animations.

2) Background
As for the background, such a solution was suggested - to use for the prototype a background that had not yet been drawn, but already with sliced ​​and properly named layers.

image

They did it, and in the future, the guys worked with this prototype backdrop, and I could safely work on finalizing the graphics in my room.

3) Design background:

image

-preliminary sketch (thumbnail sketch) of the composition
- developed linear drawing (lineart). I rarely make detailed linarts because I don’t want to do extra work — linarts vary greatly when painting an object and are not even partially used. Therefore, this stage is not so different from the previous one.
- fill forms, each object - a separate fill in the silhouette. Just at this stage I gave the children a draft version of the graphics (see p.2).
- prescription of each object one by one inside the fill, starting with the largest masses. This is a dangerous number. The fact is that by doing so, we violate the principle “from the general to the particular” and we risk getting a picture with an absolutely fractional color scheme where the objects are not combined with each other neither in color nor in tone. Therefore, it makes sense to do so only if you have a lot of experience and you have a good idea in your mind which color should be where, or if the composition is very simple. I did this because otherwise I would not have time at all, I had to rely on my experience. The classic solution to this problem is how academic artists do: before they begin a picture, they do etudes, in which they estimate the overall color and tone solution. But they have no other choice, because if they spoil the picture, that's all, nothing can be done. In the figure there are other ways to solve this issue, in general, everyone does as he likes.

image

The result was such a background. I also want to mention that I prescribed the background, taking into account the color of the character, it is necessary for the character to be readable at any point of the background. So it was not necessary to repaint the character.
Here, in general, and all. For the last few days, we have mostly worked in a rush on gameplay and plot points, the work on graphics, animation and sound has already been completed.

Iii. Afterword
In two weeks of jam, I left the house only a few times, I had to work a lot and quickly, but I already had experience of participation in jams, and I knew what I was going. The experience of the fact that for a small amount of time and concentrated work, you get something new and alive, is very valuable. This is not at all similar to how work is done in studios, with their large established hierarchy, sluggishness and commercial orientation. The essence of gamejams is precisely in the freedom and joy of creativity. For some, this is a good opportunity to try to translate ideas that they have long wanted to implement, for others - an opportunity to find new mechanics, for someone to get rid of the limitations associated with working for the customer and the need to meet his expectations / requirements. I am very grateful to the colleagues with whom we made this game, for the fact that they invested their time and their talent in our common venture, everyone invested as best he could.

Part of Boris (animation)


I. Flash
Talking about the work of the animator in this project is a real punishment. Practically everything that I did was not done at all or not at all in the way it is usually done. We didn’t discuss the character’s animation character with the production designer, practically didn’t discuss the graphics (it worked out here, because Sergei made the character as conditional as possible, which essentially untied the animator’s hands, that is, me), we “baked” the animation of the character’s interaction and background objects, to small jumps in the clarity of objects, we used Flash exclusively as a graphic tool, since the animation was imported into the game in the form of raster sequences. This was done, of course, not because of disorder, but because of a catastrophic lack of time.
Therefore, to describe the work on character animations can be very short: I did it very quickly and very wrong.

Ii. Motion preparation
But to tell about the animation of objects of the background - wooden sculptures, it will be useful. Here, the animator generally has minimal freedom: objects have practically no moving parts and pre-rendered motion phases (object states that cannot be made by simply moving its parts, for example, a gradation of “split” of the key keeper). To combat these uses the technique of "preparing the movement." Reception is formulated as follows: the preparation of the movement is more important than the movement itself. The eye, or rather the brain, is often deceived and "draws" the missing parts of the movement, a sin not to use it. Consider an example.

image

image

The duration of the key keeper's splitting animation is twenty frames, and half of them we do not even use for movement, but on backswings: ten frames, the statue slightly increases in height, the whiskers and eyebrows are slightly lowered with the outer ends down. During this time, the eye pays attention to what is happening - the movement began. From the tenth to the twelfth frame, the statue starts a sharp downward movement (eyebrows and mustaches play in the opposite direction, imitating inertia), in the thirteenth frame we substitute the image of the slightly split statue for completely split. This phase is slightly lower than the previous one, and the illusion of continued movement is preserved. The only moving part in this phase is the key and from the thirteenth to the twentieth frame he performs one swing, completing the movement. Thus, when playing, we get a coherent movement, although there is no splitting animation in this sequence at all. After that, you can quietly say to yourself: “Hurray!” - we deceived the eye using the minimum number of phases.

Part of Basil (music)


I. Introduction
When I was offered to participate in the jam, I agreed almost immediately, I really liked the visual solution of the game, as well as the conceptual part - the games that would bring you back to childhood, not as much as it may seem, therefore, trying to recreate this feeling is interesting. task. In addition, I liked the approach of the author of the idea of ​​Sergei, who was not in the director's despotism “I need to know better,” but in the full creative freedom “you know better how it should be.” In this case, you are your own customer, and who will accept work more strictly than an internal critic? So it was an interesting proposal, and I agreed.

Ii. Music
Music in games of this genre, as a rule, plays an important role: it should not be annoying, because we do not know how long the player will solve a particular task before another track sounds. Therefore, it is important that the melody is unobtrusive and does not detract attention to itself. During the development of our scene, it was decided to make three melodies - the starting one, the melody “something went wrong” and a dynamic, boosting theme. It sounds quite simple, if we talk about classical horror, but in our case - it is still a feeling of childhood, some fabulousness of everything that happens. The music was supposed to emphasize the mood, not scare.

Thus, the first two tracks were based on improvisations on electric pianos (I used the waldorf blofeld synthesizer as an instrument with wide possibilities for soft and deep sound), the synthesizer part in the “background”, electronic bass and string sections. I decided to give up drums and percussion altogether. The result was quite unobtrusive themes that, when played in a loop, did not strain the player and freely replace each other. The third theme music was made using the same instruments, except that in addition to the lingering sound of the strings, short musical phrases were used, and quite classical sounds. Also, the mood of the third theme was quite significantly different from the first two, which ultimately made it possible to highlight a sort of culmination of the game narration.

Iii. Sound design
Speaking of sound design, I was repelled by the materials of our characters. As a rule, all these are wooden idols, therefore the cracking and creaking of a spreading tree became the obvious solution. Such an approach justified itself in the moments relating to the "Keeper of the Key", to create the sound of "wooden sneezing", the movement of whiskers from short samples of various squeaks turned out to be a rather interesting task. , , , - , , . — , . , , . , , , . , .

IV.
, . . , , , , . , , . — . - , .

, , :

http://www.indiegamejams.com
https://itch.io/jams
http://jams.gamejolt.com/browse/active

Source: https://habr.com/ru/post/302652/


All Articles