Experience gathered through patience and hard work since 2009.
Don't wanna be here? Send us removal request.
Link
Pretty much everything you need for Netcode. By far the most useful videos was about Rocket League and Overwatch.
3 notes
·
View notes
Text
This year was very productive
Following up my previous post about the new job in AGAVA LLC. With my help, the company opened 2 new directions - Playable Ads and Web Games (Yandex and VK platforms, more coming soon). Playable Ads was hell of a task direction because I've had to go to Zoom meetings with a few different companies and negotiate the engine licensing. I've got to paint my gray hair at this point. Besides that, I've created a knowledge base and fixed most of the technical problems that were significantly slowing down the production.
I’ve met with talented young people full of energy and will to push the company forward. This fully aligns with my interests and responsibilities, so working with them was a bliss. Best gamedev job I’ve had all these 13 years hands down.
Just a few things remaining to do, like moving the studio to another visual Git client, writing a guide for teamwork with Git - and then we're good to go. Later on, I'll bring some more cool new tech into the studio. Planning to open a new "Online Web Games" direction, teaching how to write deterministic netcode and strict OOP design in Unity.
0 notes
Text
New Job, YandexGamesSDK and more open-source.
I was hired by AGAVA LLC as a Technical Consultant. An old friend of mine owns this game studio. He's heavily investing into mobile hyper-casual WebGL games made on Unity Engine. I'm responsible for consulting developers working on about 15 different projects, helping them solve difficult technical issues with the engine and reviewing the code (sort of like a Tech Lead position). New job brought some open-source side-projects. I was never planning to license it to the public because I didn’t think we want competing companies using Unity Engine, but here it is under the MIT license. https://github.com/forcepusher/com.agava.yandexgames You can find more useful stuff at my github, I’m currently releasing reusable parts of the simulation engine from personal game project. They’re still in development though.
1 note
·
View note
Text
My take on explaining OOP to traditional programmers.

OOP... Everyone is bragging about it, yet only a few figured out how to use the thing in a meaningful way. Many developers tried it. Majority is now having seizures, while others enjoy trolling them.
I’ll start by saying that the term “Object-oriented“ sounds too generic and this is the first major entry barrier to the paradigm. What if I tell you to think of each object as a separate standalone program ?
Each class solves a problem. They receive the required parameters to solve problems trough a constructor, then its methods are being invoked via an Interface (often with additional parameters). That’s very similar to a command-line program. So Class is a program definition, and its instance object is a running program. Think of a “new” keyword as a Factory spawning programs. Interface is a messaging protocol to allow programs to talk to each other via method calls. We should not have to hold each program by hand and write a lot of imperative code. Tell the program to talk to another program instead. This is the way declarative programming is done.
Class should not be just a data container. We don’t want to write useless programs that do nothing within their own context, right ? Besides, internal object state should be vigorously protected by encapsulation. But what about a “List” class ? Well, that’s a pretty useless program indeed. However, List manages array allocations for adding and removing entries. It has behavior, so it’s a valid object. In most cases, trivial data classes should be structures instead, so they are treated as immutable primitives.
Lifecycle of a program is similar to an object - the program is born, it does the job, and when the time comes it dies. In the other hand, procedures and functions just execute. We need to create objects to solve problems, behavior cannot be floating on its own. Often we have the urge to create a static utility class that does all sorts of things, like “Math“. This violates single responsibility principle because math is too broad. So we would split it into separate “Lerp“, “Abs“, “Pow“ classes. Some of them could be static, as long as they represent a single immutable instance of an object that is essentially a pure function. So we don’t have to create a new object instance for every “Abs“ operation.
TL;DR: From the code standpoint, practical use case for OOP is division of a large program into smaller programs for easier maintainability. This is true for every other major programming paradigm, but objects happen to fully achieve this goal without any compromises. Because an object encapsulates a complete program with state and interface for communication with other programs. This approach achieves synergy with domain modelling. Whatever prevents an object from encapsulating a small complete program, is a bad practice.
1 note
·
View note
Text
Barging into Open-Source.
I’m pretty excited to start my open-source development career with a pull request into AssemblyScript* compiler.
https://github.com/AssemblyScript/assemblyscript/issues/1617 https://github.com/AssemblyScript/assemblyscript/pull/1618 (* a strict variant of TypeScript for WebAssembly).
0 notes
Photo
Personal WebGL project progress. Online multiplayer. https://www.disturbing.space/ See more at https://www.patreon.com/bananaparty
1 note
·
View note
Text
Another finished game - Frostfall.
This was tough to work on, but we finished it and getting ready for the release. I was responsible for implementing and designing architecture for realtime netcode, bot AI and some core gameplay features.
youtube
Full 5 hour livestream https://www.youtube.com/watch?v=E2SVy4kL3C8 Trailer https://www.youtube.com/watch?v=kmV7qL8pRhY
0 notes
Link
Recently made a new asset. I had to make something universal. Using it myself in 2 different projects right now. One is using Photon, while other is using UNet.
10 notes
·
View notes
Text
Fanless Gaming PC.
Behold, a gaming PC with no moving mechanical parts. It's still ahead of the time, but already viable. It's small, completely silent, and doesn't need any dust cleaning maintenance because it has no airflow.


Specs: Intel i5-8400 (70% clock speed limit by disabling turbo) Palit GTX 1050ti KalmX (Passive, 70% power limit via MSI Afterburner) Samsung NVMe SSD 960 EVO 500GB (Windows) Samsung SATA SSD 840 EVO 1TB (Storage) FSP Aurum Xilenser AU-500FL. (Fanless PSU) Kingston DDR4 16GB 2400CL12 1.35v (Low power XMP 2133CL13 1.2v) Thermaltake Suppressor F1 (Mini-ITX case, 200mm fan disabled) Thermalright Macho 90 (Huge freaking CPU heatsink) GIGABYTE Z370N (Mini-ITX motherboard) Idle temps: CPU: 55C GPU: 50C Gaming temps: CPU: 80C GPU: 90C 8 hour non-stop gaming temps: CPU: 85C (far from 100C limit) GPU: 94C (close to 97C limit) NVMe SSD: 81C (throttling to 1630/450MB/s read/write in synthetic benchmark) VRMs: 80C Build at your own risk. Possible component failure. Hit “Keep reading“ if you crave for more.
Stock i5-8400 runs at 3800MHz on all 6 cores. I disabled turbo boost so it goes only up to 2800MHz. Underclocked GTX1050ti doesn’t need that much CPU power. I did some videocard tests without GPU underclocking as well. Once it reaches 96C, it starts throttling severely from ~1300MHz to 900MHz and below to prevent going over the spec.


NVMe SSD cooling was a PITA, it always floats around 65-80C depending on usage. Despite the specified 70C maximum operating temperature, it doesn't throttle until 82C. I was able to actually get it to throttle only in a synthetic benchmark. After some testing and reading I figured that it throttles at 70C only if it detects temperature spikes. So if you make sure that SSD chips make contact with the heatspreader, there won't be any throttling at all in real use scenarios.



The main problem of this build was noisy PSU and UPS. I had to return a Fanless Platinum Seasonic 400W PSU to the store because it was buzzing like a vibrator, and APC UPS wasn't happy about such low power consumption as well. You WILL run into these issues if you're going to build a completely silent PC. Avoiding coil whine is the hardest part to get right.


I'm still not entirely sure about GIGABYTE motherboards. Time will tell if their stuff is indeed ultra-durable or not. If this build survives over 3 years, this will be a huge success.


But can it run Crysis ? Well sure it can, it runs GTA V on High/VeryHigh settings in 1080p at 80-110FPS.




Comfort is rated at 5/5. My PC is running nearly 24/7. I sleep next to it and do a lot of routine gamedev work like programming, so dust resistance and acoustic comfort is a big deal. Cleaning dust filters every month on a regular PC is annoying, to say the least. But if you only crave gaming performance, this build won't be the smartest choice. Gaming at 3/5 because money spent on a terabyte SSD, fanless PSU and 16GB of RAM can be spent on a videocard with higher performance, like 1060 or 1070ti. Although, running your games off an SSD is much better than from an HDD. Content creation at 3/5 because CPU lacks hyperthreading. Still it's a 6-core CPU, so you should be fine. Storage drive could be HDD instead of SSD to greatly increase storage capacity. At least it has 16GB of RAM to run virtual machines and other memory-heavy applications.
Once you stick an HDD inside your build - acoustic comfort is completely gone tho. The thing goes SKRRRRA.

#fanless#silent#gaming#itx#pc#build#intel#nvidia#palit#samsung#kingston#gigabyte#thermalright#thermaltake#gta#msi
9 notes
·
View notes
Text
Unity3D Networking summary.
For the past couple of years I was using the new UNet networking, and I understood that it sucks and shouldn’t be used in production only after making a game with it. There are some exceptions to that statement: UNet still works fine if you’re rolling your own networking architecture while using LLAPI/NetworkServerSimple and dedicated servers (based on Unity instance). This way you can implement just about anything you can think of. But coding something like Valve’s Source networking takes too much time, down to the point where you shouldn’t bother unless you’re an AAA studio or have a bucket-load of network programming experience. In theory, HLAPI should have simplified the development process, but it’s not the case. It was never intended to be used in standalone dedicated servers - you have to fight the HLAPI architecture to make use of it. It’s heavily biased towards unity matchmaking services (Relay servers). Why HLAPI + Relay servers suck ? Well, because every network message has to do 4 hops instead of 2, practically doubling the latency. While using UNet relay servers, network message goes like this: Client -> Relay server -> Host Client -> Relay Server -> Another Client. While using Photon most traffic does this: Client -> Relay server -> Another Client. (Sometimes it has to go through host client as well to solve authoritative questions at hand, but you shouldn’t do this too often). Considering UNet’s current traffic-based price model, relay servers should be used only for lockstep RTS games (because they generate next to no traffic). TD;DR Photon is still the king of indie gamedev, especially since they implemented this tool directly in their SDK to help with “Message per second” limitation https://www.m2h.nl/network-traffic-culling/ It actually could be used in first person shooters up to 32 players now. (GTA V has a limit of 30 players, mind you)
2 notes
·
View notes
Text
Good Unity coding practices
https://trello.com/b/Z6cDRyis/good-coding-practices-in-unity3d
I’ve posted this earlier, but I keep updating it every time I discover something new about Unity3D. There’s a whole lot more tips in there now.
10 notes
·
View notes
Text
Just for the record
For the past year I’ve worked on a couple of games with 2 companies.
First was “Punky Town” from Roaring Fangs. I can’t say anything good about their progress except they have really good artists who managed to provide hype content. There’s like 1-2 coders trying to do stuff, but this is their first game. I was responsible for prototyping and building gameplay systems. https://twitter.com/punkytowngame
Next on the list is “Letta” from Radmule Labs. This thing is also still in development, but they actually make decent progress and released an alpha build. I was responsible for optimizing the game for mobile platforms, reducing battery usage, and writing performant code for tight spots. Some of their scenes were dipping below 20 FPS and the phone was getting hot like a stove, but after reducing the overdraw we achieved stable 60 FPS.
Then I was fixing random issues and implementing some UI features in “Trivia Game Show” for the same company. Both games were sold to a publisher and taken off public alpha test, so no links anymore.
5 notes
·
View notes
Photo
Graphics preview of GearVR game concept I was working on. Default terrain shader kinda hits the performance of GearVR, so I had to make a custom unlit one. It has base texture that contains color with baked lighting and a single detail map that adds some detail to the terrain up close. Runs at 60 fps with no effort. Also default shader is very hard to get to look right when exporting splatmaps from WorldMachine. This method allows me to export the colormap as is. Oh, forgot to mention that this fixes tiling precision artifacts on Android.
7 notes
·
View notes
Text
One shot, one kill. No luck, just bad game design.
3 notes
·
View notes
Note
Hi there! I was just wondering if you're still working on the Cornerstone Combat System in SL! It was truly one of the best combat systems on the grid and I've been hoping for a full-fledged version of it since it came out. Anyway, thank you!
Hey, sorry but I’m not planning to work on anything in Second Life unless Linden Lab changes their politics towards content creators and game developers. They harass us by banning random stuff for made up reasons and refuse to give us support no matter if you have premium account or not. If they banned something - it’s never going back up and you have no right to resubmit it (they’ll just ban it again if you do).There are other reasons why SL version of Cornerstone might never get updated. Sorted by severity:
Time. Finishing a new version of Cornerstone and adding new combat classes like Mage or Archer would take the same amount of time as rolling the standalone version of game on Unity3D. Reason for that is extremely limited scripting language and engine.
Second Life sucks. It has very steep learning curve and almost everybody who runs it for the first time says “This thing sucks” and never logs in again unless that someone is a hardcore pervert looking for online buttsecks.
Horrible interface. The initial setup to be able to use the combat system is not something that everyone could handle. You would need at least a couple of weeks to figure out how things work, otherwise you will keep running into frustrating issues.
Limited controls. Custom gesture bindings simply don’t cut it. Left mouse button has to be pressed ALL THE TIME to play efficiently.
Frame rate issues. Even GTX970 struggles to render an average good looking scene, so it ends up looking “more cinematic” at ~30 FPS.
Server cost. 300$ a month per 100 CCU is ridiculous, and they won’t even provide you decent performance. The lag is insane when going over 50 players on one server. Even while using the costly Photon Cloud networking solution, you get 100 CCU for a single 100$ payment.
But there are also things that SL makes easier.
Avatars and their customization. It takes a whole lot of time to create an appealing character customization system.
Payment system. Payment options aren’t going to implement themselves when you are rolling your own game.
Existing community. Easier to gain popularity at the beginning.
Networking. Setting up proper networking is painful and hard.
Low quality expectations. Regular gamer won’t appreciate things made it SL, because games had better quality content since 90s.
Those positives clearly aren’t enough to beat the negatives, especially when it comes to making a sequel.
7 notes
·
View notes
Text
Dat feel when you’ve released first version of your own online game, people enjoy it so you spend months or even years beating the crap out of each other. Then you finally start working on a fully featured sequel. But unfortunately this is real life - you simply run out of money. Bretty hard to pay for art assets when there’s barely any dosh for living. So you are forced to look for contract work and suspend development of your own project for very long periods of time.

15 notes
·
View notes
Text
Unity3D texture loading bug.
If someone gets “Could not open file sharedassets0.assets.resS for read” error message in WebGL build - simply restart Unity3D and recompile. Switching build platform from Windows to WebGL causes this. There was no information about it on Google and I normally reboot my PC only once a week, so you can get the idea how much time I spent figuring out this issue on my own.
4 notes
·
View notes