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.
Key points from a Unite talk about performance optimizations for mobile games in Unity.
Key points from a Unite talk about customizing Unity rendering pipeline (primarily deferred rendering).
Key points from Ubisoft Blue Byte team talk at GDC about their way to overcome performance limitations on mobile devices.
Key points from a Unite talk about content optimization techniques for Unity.
Key points from Playdead talk about optimization techniques and tools used in the Inside game (powered by Unity).
Key points from Playdead talk about techniques in the Inside game (powered by Unity) which allowed to increase visual quality and improve rendering performance.
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...
idTech 6: advances.realtimer...
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.
- Game controls refined: tap to select a cell, double-tap or second tap to approve your turn.
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
- Unity updated up to 5.4.0f3
- AI robot display mock-up added, OS loading animation added
- 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),
- Field initialization algorithm optimization (no more freezes on level start and before AI turns),
- Levels file size reduced,
The web-site got a new look. Now you can find both the developer log notes (craveforgames.com/...), and all published technical articles (craveforgames.com/...) there. Also the game has a simple info page now (craveforgames.com/...).
- 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
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.
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.
- Game font was updated,
- Now it's possible to make the UI transparent to focus on the level solving process,
- Multicolored stone model and materials were updated (check out the last two tutorial levels),
- Columns and occupied cells materials updated,
- 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)
- 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;
- 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
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 :)
A lot of work have been made recently. Besides algorithms optimization and LevelSolver improvements there are some noticeable changes:
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.
Objective: exclude debug method calls and data computations from release build.
Solution: Conditional attribute.
Pretty legit deductions about OOP and why all attempts of following it will eventually lead to an overcomplicated code with some inconsistencies:
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.
An mock-up of an antagonist was added to visualize AI opponent.
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 :)
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!
Presentation (pdf): beta.unity3d.com/t...
A bunch of examples of shaders with cool special effects using Depth and Normals buffers.
Youtube playlist: goo.gl/XCJ8Ma
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.
I've finally came up with the name for my game development "studio": CraveForGames. The web-site now is up and running:
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
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.
Goal: save valuable game data as files (not in PlayerPrefs) in WebGL build.
Approach: JS workaround, source code attached.
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 :) )
Goal: be able to record all events in the game (save replays) and allow player to cancel his turns.
Approach: Command - a programming pattern.
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
Coroutines, the source code is attached.
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
All lessons are made by a professional and fully cover topics they are touching.
I use a state machine approach (see more examples at gamedevelopment.tu...) 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.
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
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
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 :)
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:
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.).
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.
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);
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.
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.
- 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
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).