Partial GraphQL models with pydantic

I was recently building a client for a GraphQL service in python and was faced with the problem of modeling the message types. Since those are essentially json models, I turned to pydantic with which I had good experience in the past. Although in theory this should be relatively simple, I encountered some annoying problems right off the bat. Lets take trevorblades’ country info GraphQL API for example. Its schema type for Country looks like this:...

February 5, 2022 · Nitzan Zada

Hugo Blog Makeover

For a while I wanted to refactor my blog website. I initially built it using VuePress because I liked Vue, but, the trouble of maintaining the themes and underlying javascript quickly became more than I bargained for. Since I follow the golang ecosystem closely, I stumbled upon Hugo. It looked easy enough to get my head around for my basic needs, while remaining extendable. PaperMod and PaperMod-Nord Looking for some simple elegant themes I fell in love with the PaperMod theme....

November 10, 2021 · Nitzan Zada

Error Monitoring in Godot using Sentry

I’m a big fan of the Godot game engine, and lately, since players have been testing the game more often, I’ve decided to add some monitoring solution to get a better view of what’s failing players as they try to play. In this post I’ll show how to integrate Sentry’s .Net SDK in Godot and use it to receive usage reports and error monitoring. What’s Sentry? Sentry is an open-source error monitoring tool I picked up on a while ago....

March 21, 2020 · Nitzan Zada

Godot 3.2 and an Android Version

I’ve been waiting for the 3.2 version of godot to release for some time and alas it has, bringing with it the much needed support for Mono on Android. Although playable on desktops, I’m very excited about the prospect of showcasing the game for potential testers on their mobiles. Although technically a click away in the new Godot version, creating an Android version wasn’t easy, several mechanics broke and some didn’t make sense on a mobile and had to be upgraded....

March 9, 2020 · Nitzan Zada

Back in Control

As discussed in the previous post, the subject of this latest version is improving controls. Player selection Clicking or dragging a player character now causes selection, meaning their skill bar will appear. In addition, many players tried right-clicking the ground as a means of commanding a move, just as expected in almost every RTS, so I also added a much expected right-click move command. Ability range indication Trying to use a range limited ability now shows the player’s required proximity....

December 7, 2019 · Nitzan Zada

My Items Bring All the Boys to the Yard

As promised back in June, I’ve refactored the whole collectible item aspect. The server holds configurable rules that determine which and at what rate items drop from enemies and makes them sprout from monsters accordingly. Other than that, at the moment, collecting items doesn’t really do anything in terms of gameplay. Although, just like monster kills, collected items are recorded and displayed on the demo match board so be sure to check your spoils....

September 10, 2019 · Nitzan Zada

Test demo is a Go

At last I’ve managed to stabilize the client and make it playable. I ended up adding a lot of new stuff on the server side as well - match recording, an API and a webpage to show off match results. After downloading and playing the demo you can see your match results in the listing displayed below and in the dedicated page here. This is a very early take on the concept and is offered here as nothing more than a way to get early feedback from testers and curious gamers about controls, mechanics and the overall concept of a tactics rpg....

August 12, 2019 · Nitzan Zada

Time to Play

The last week was a fun milestone. Up until recently, although the game was playable, you couldn’t really get the characters to do what you had in mind for them. A few behaviors expected from an RTS were missing: After executing an ability on an enemy the character would stand idle. The expected behavior is to continue with the default auto attack which is what I ended up implementing. After killing an enemy the character would always stand idle....

July 21, 2019 · Nitzan Zada

Buffs, buffs everywhere

The task of adding character buffs to the game required adding some cool complexities to the state engine, including stat effects, allowing transient alterations to the character’s stats, and state slots enabling characters to act-out multiple effects at a time. Buff system and triggers The buff system took much thinking but little actual code, I ended up designing it as part of the already existing character state machine module. The task leading to adding the buff system was implementing an “enrage” mechanic, causing an enemy to apply a buff to himself when it’s hp falls under a certain amount, for that, I added trigger semantics allowing me to implement various types of triggers....

June 28, 2019 · Nitzan Zada

Moving Around

I haven’t had a lot of time to spend on ToM development but here’s what’s new. Map panning I was glad adding panning, it’s one of those features that when added, even though small, make the overall experience much closer to what you had in mind. This also opens the door to larger maps, one of my next big tasks on the board. Support enemies I’ve added some more complexity to playbooks - allowing for enemy actors to interact with each other....

June 8, 2019 · Nitzan Zada