Crave For Games


Here is a list of devlog notes from the StoneDrop video-game. Both progress/changelogs notes and technical articles are presented here. If you are solely interested in the articles itself there is a special Articles page.

The notes are sorted by the time of creation (not the time of publication!), so it's better to look for updates at the Facebook page.

ScriptableObject use cases in Unity

Useful talk about ScriptableObject class usage in Unity.

Show more...
Unity performance optimizations for mobiles

Key points from a Unite talk about performance optimizations for mobile games in Unity.

Show more...
Effects is Unity through graphics pipeline customization

Key points from a Unite talk about customizing Unity rendering pipeline (primarily deferred rendering).

Show more...
Performance optimizations in the game Assassin's Creed Identity

Key points from Ubisoft Blue Byte team talk at GDC about their way to overcome performance limitations on mobile devices.

Show more...
Unity content optimizations

Key points from a Unite talk about content optimization techniques for Unity.

Show more...
Optimizations in INSIDE

Key points from Playdead talk about optimization techniques and tools used in the Inside game (powered by Unity).

Show more...
The Rendering of INSIDE

Key points from Playdead talk about techniques in the Inside game (powered by Unity) which allowed to increase visual quality and improve rendering performance.

Show more...
Unity optimization tips from JoyCraftGames
No English translation...
DOOM'16 rendering pipeline

Extremely interesting implementation details of idTech 6 which is used to run recent "Doom" videogame. Conjunction of forward and deffered rendering via camera frustum clasterization and mega-textures usage seems very uncommon after working with Unity.

Graphics Study: adriancourreges.co...[1]

idTech 6: advances.realtimer...[2]

Show more...
Talk about rendering optimizations in Narcos mobile game (RU)

Usefull talk (RUS) at Unity User Group SPb 2016 about Unity tips and tricks to speed up rendering on mobiles from developers of Narcos mobile game.

Show more...
Build a39

- Game controls refined: tap to select a cell, double-tap or second tap to approve your turn.

Show more...
Build a38

It was a long time since the last progress report. Here is a short one for last one and a half months:

1. In the beginning of August

Show more...
Build a36

- Unity updated up to 5.4.0f3

- AI robot display mock-up added, OS loading animation added

Show more...
Build a35

- The most interesting levels from "New Levels" moved to the "Story" section,

- Info about level status (locked/unlocked/started/completed) and difficulty is now displayed in the menu (figure 1),

Show more...
Build a34

- Field initialization algorithm optimization (no more freezes on level start and before AI turns),

- Levels file size reduced,

Show more...
Web-site updated

The web-site got a new look. Now you can find both the developer log notes (craveforgames.com/...[1]), and all published technical articles (craveforgames.com/...[2]) there. Also the game has a simple info page now (craveforgames.com/...[3]).

Show more...
Короткие видео о гейм-дизайне
No English translation...
Работа с GameObject'ами и их компонентами в коде (Unity3d)
No English translation...
Using Dithering in custom shaders (Unity3d, Cg)
No English translation...
Build a28

- All field-objects-related animations reworked,

- Now the animations doesn't stop the game process, you don't have to wait until a stone finished it's fall

Show more...
Build a25

Some critical bugs were fixed: now levels with symmetry can be loaded :) Also the level ending prediction prompt was not working before the bugfix if the human player was the second player on the level.

Show more...
Оптимизация кэширования вычисленных данных при анализе игровой ситуации (Симметрия)
No English translation...
Оптимизация кэширования вычисленных данных при анализе уровней
No English translation...
Build a24
No English translation...
Build a23
No English translation...
Автоматическое тестирование графики (Unity3d)
No English translation...
Build a20

The a20 build contains a very important functionality required for the upcoming alpha-tests - the graphics settings. Now almost all settings are tweakable in the "Graphics" tab of in-game settings menu.

Show more...
Уровни детализации шейдеров (Unity3d)
No English translation...
Building iOS test builds (Unity3d)
No English translation...
Build a19

- Game font was updated,

- Now it's possible to make the UI transparent to focus on the level solving process,

Show more...
Shader tips and tricks.
Part 3 - Post-effects, ShaderReplacement rendering
No English translation...
Shader tips and tricks.
Part 2 - Animation, passing shader parameters
No English translation...
Shader tips and tricks.
Part 1 - Normal maps, Ambient Occlusion
No English translation...
Preprocessing levels for AI (board games)
No English translation...
Build a17

All in-game icons were updated. Any feedback is welcome!

Show more...
Build a16

- Multicolored stone model and materials were updated (check out the last two tutorial levels),

- Columns and occupied cells materials updated,

Show more...
Normal-mapping in custom shaders (Unity3d)
No English translation...
Build a15

- New stones materials created (you can check them all by changing the shapes of the stones in the "Custom Game" menu);

- Now it's possible to change stone's size to ease the game perception (gif 1)

Show more...
Additions to Predictional Hashing AI algorithm (StoneDrop)
No English translation...
Искуственный интеллект с поиском в глубину (Философ)
No English translation...
Level analyzer (StoneDrop). Part 2 - Optimizations
No English translation...
Level analyzer (StoneDrop). Part 1
No English translation...
Build a13

- The Story section updated, new levels introduced (they were automatically found by the LevelSolver). Now all levels except the firs one are relatively hard. Also different objectives are used in the new levels;

Show more...
Progress

- Multicolored stones added (they can be used by both players to assemble a line) and two last tutorial levels featuring these stones added,

- Stones connection system reworked

Show more...
Timelapse DevLog

I've decided to video-record my work. It's a great way to reduce distractions and procrastination time. The records also may be interesting for a viewer if he wants to check out the tools I use in my workflow or a music background that helps to create StoneDrop :)

Show more...
Ошибка Out Of Memory (Cannot enlarge memory arrays) в WebGL билде
No English translation...
Progress

A lot of work have been made recently. Besides algorithms optimization and LevelSolver improvements there are some noticeable changes:

Show more...
Progress

I've made some drafts for stones geometry. Right now on the StoneDrop website you are able to select one of the six available shapes (UPD June 2016: only three of them left) by clicking on a small shape icons in custom game menu.

Show more...
Жадный искуственный интеллект (Ева)
No English translation...
Conditional Attribute (C#)

Objective: exclude debug method calls and data computations from release build.

Solution: Conditional attribute.

Show more...
Object-Oriented Programming approach flaws

Pretty legit deductions about OOP and why all attempts of following it will eventually lead to an overcomplicated code with some inconsistencies:

video 1

Show more...
Progress

The AI algorithm became more intelligent: now it's analyzes the game one turn ahead. Besides that some degree of randomness was added. The overall difficulty was increased: the new algorithm beats the old one 764 times out of 1000.

Show more...
Запуск модели вне Unity. Турниры между ИИ игроками
No English translation...
Progress

An mock-up of an antagonist was added to visualize AI opponent.

gif 1

Obviously, there is no 3d model right now and animation speed parameters are not ideal but it's already closer (opposed to nothing) to what I wan to see in the final game :)

Show more...
Progress

A custom game menu (mock-up, figure 1) was added. Now you can adjust game parameters and select the board to beat your opponent on!

Show more...
Progress

Just finished working on the reflections in my water:

video 1

Show more...
Real-time VFX with a depth buffer and a normal buffer

Presentation (pdf): beta.unity3d.com/t...[1]

A bunch of examples of shaders with cool special effects using Depth and Normals buffers.

Show more...
Game programming language

Youtube playlist: goo.gl/XCJ8Ma[1]

It's an extremely useful and inspiring set of videos from Jonathan Blow (developer of Braid and The Witness games) with ideas about new programming language for game developers.

Show more...
Progress

I've finally came up with the name for my game development "studio": CraveForGames. The web-site now is up and running:

craveforgames.com/[1]

Show more...
Interactive water surface shader (Unity3d)

This time I've tried to explain WaterSystem in a video.

video 1

Show more...
Progress

I'm on a half way to a beautiful interactive water in the StoneDrop game.

I've implemented a fragment shader which performs water surface movement computations

Show more...
UI and Tutorial Design

Informative and useful presentation from Apple where they accumulated main insights and conventions about designing UI and tutorial levels. Following those advices helps your game to be intuitive and easy-to-learn for iOS users. Almost all ideas perfectly fit the Android market too.

video 1

Show more...
Saving data in WebGL build (Unity3d)

Goal: save valuable game data as files (not in PlayerPrefs) in WebGL build.

Approach: JS workaround, source code attached.

Show more...
Progress

Game autosave and autoloading was implemented. Right now the last unfinished level always automatically loaded and there is no opportunity to restart the level but it will be changed when the UI is be ready (UPD June 2016: autosave and autoload disabled, UI is ready :) )

Show more...
Game record, Undo operation (generic gamedev approach)

Goal: be able to record all events in the game (save replays) and allow player to cancel his turns.

Approach: Command - a programming pattern.

Show more...
Multithreading (Unity3d, C#)

Goal: perform heavy computations in the backgoround w/o affecting game performance and responsiveness on Android, iOS, Standalone and WebGL build targets in Unity.

Approach: custom class based on BackgroundWorker and Coroutines, the source code is attached.

Show more...
C# Lessons (Rus)

If it accidentally happened that you know Russian language, then you'll find this youtube playlist of lectures about C# extremely helpful (in case you are interested in game-development in Unity3d): goo.gl/wvyHHr[1]

All lessons are made by a professional and fully cover topics they are touching.

Show more...
Finite-State Machine

I use a state machine approach (see more examples at gamedevelopment.tu...[1]) in my Referee class to be able to control all the game (I mean gameplay) events and at the same time to encapsulate all the logic behind them in one class.

Show more...
Progress

Main model class was refactored and game-data storage was improved. Right now it's possible to record all the actions on the level and use it to undo any number of turns or to watch a replay

Show more...
Progress

1. I've spent some time digging into the topic "how to create a web-site" and created a simple web-page with WebGL build of the StoneDrop.

2. The simple AI player was added

Show more...
ECS vs. MVC
No English translation...
Progress

Simple model and basic view for the game was created. Right now it's possible to play human vs. human on one device. The board and game configurations are adjustable but only in the editor :)

Show more...
Entity component system (ECS)

I've come across an excellent lecture with the examples of using ECS (ECS is a key concept in Unity3d, Unreal Engine and probably in many other game engines) with maximum profit from this approach to the objects organization:

Show more...
Serialization (Unity3d, C#)

All project data (except for the localization) are stored as serialized objects, which contain all the information about a particular aspect of the game (player state, game progress, levels of a singleplayer, levels and game-boards created in editor, etc.).

Show more...
Import from Google SpreadSheets to Unity3d

Configuration data import occurs only in Unity editor. For the import process I use the library GData.dll and the written class (available in the attached Unity-package) with convenient methods of authorization and import from the Spreadsheets.

Show more...
Configuration files. Workflow

Operating procedure with the configuration data in a project:

1. All settings are made in Google Spreadsheets in a predetermined format (separate sheets of one table for different data: localization, levels, player options, game boards);

Show more...
Game architecture

First draft of application architecture is ready and presented on the figure 1. I've tried to make it in an UML diagram style, but for me it's more convenient to have a combination of class diagram and data flow diagram.

Show more...
Devlog

Here I'll be posting my goals and progress on the game with details and solutions I've made.

Sometimes it will be reports of time or money spent on different related activity, sometimes - questions or polls.

Show more...
Concept

Mechanics:

- The game will be a modification of 3D tic-tac-toe on sticks

- It will be possible to deviate from standard 4x4 flat field and customize initial field size and shape, initial game state and cell heights

Show more...
Starting point

About me: I live in Saint-Petersburg, Russia. I've got masters degree in computational physics in 2015 in SPbSU. I have 1.5 years experience of commercial game development in a big company and three unfinished independent projects (all are in team, one of them is still alive, but I've done almost all work required from me).

Show more...