Client gets its due

Monolith Mondays No comments

Week 15 has ended on an upbeat. Most of the week was finally dedicated to the client, getting its map UI to tolerable levels, and tweaking the forms to be easier on users.

Client Deployment

First order of business was to move away from Flask‘s Werkzeug engine onto a production server. Werkzeug is what ran the client thus far, a small and lightweight server designed for development (only!) purposes and not able to scale beyond a few users. However, Gunicorn is another beast entirely, and combined with Nginx it can scale indefinitely. Or so it was advertised. Trouble began almost immediately after I told Gunicorn “Hey, buddy, why limit yourself to only one worker thread? Use 5!

Apparently Gunicorn does not support sticky sessions. We need our sessions to be “sticky”, ie...

Read More

Multithreading and optimizations

Monolith Mondays No comments

  • Anything to get out of client work, Entity.self?
  • Shut up.

Week 14 was one of those weeks – full of violence and titillation.


For the first time in 15 years, the Dominance server is a multithreaded beast. This brings to a close one of the major goals of V2, rest in peace V2 devs.

So what does this mean? How does it work? What will be the effects?

The Server (pydom) is a daemon. It listens for new connections, logs people in and out, and maintains an index of players. It also listens to player’s commands – be they info requests (“What do I see? What’s my mana?”), command requests (“Move my avatar Grizzly over there.”) or chat requests (“Say “Hi” on the public channel”)...

Read More

Verbotenland und Ezul`s Bane

Monolith Mondays No comments

Week 13 was full of announcements and surprise development updates featuring some major news. I’m not going to repeat what was said in elaborate detail in those posts, but focus on the other developments of last week.


Verbotenland is the place players will see only if they try hard enough, and will visit never. It’s the home of Ezul`s Bane and an occasional admin or several. V1/2 had Bane spawn 100k pixels away, which made it easy to limit spells (if distance > 10k then fail) so players wouldn’t be able to visit (or heavens forbid, subdue) Bane. Now, due to technical constraints of an actual map, I’ve decided to inject VL inside the main game map, though far away so it won’t cause any issues...

Read More

Feature Complete! And a Happy New Year!

Announcements No comments

Dominance V3 is now feature complete. All the gameplay mechanisms are in place, all the functionalities work as advertised and barring an occasional bug or dozen, the game is alpha-testable. In the nick of time as well, as in a few hours we are entering 2017, during which we’ll work to polish the client to a presentable state and start open beta testing once more. Beta 7 is beckoning.

In the meantime, I wish you all a Happy New Year, by once again displaying the mutilated picture Entity.(Syrus) made for Dominance once upon a time. See you soon!

Read More

Movement is now movement

Development Updates No comments

Back in the V3 (first post), I announced there will be changes to how map works. In Map and vision, a month later, I demoed the first prototype of a new topography-driven Dominance map. Finally, today, we have the map taking affect on how the movement works and vision is calculated.

Obligatory history lesson

V1/2 had no map, we all know this. They had objects, objects had coordinates, and that’s about all that existed – relationships between objects were measured in distances, and if distances were smaller or larger than an arbitrary value, an action would occur. The load of calculating distances, that was done in the database itself, was enormous, and further arbitrary measures had to be taken, such as the Green circle (for the unlucky few that remember it), were used to limit the amount ...

Read More

Trucking spell fuel

Monolith Mondays No comments

Week 12 has ended, and with its passing we now have completed last great portion of tick processing that was missing – Spell execution.


At the end of V2b6 Dominance had 66 spells. For V3, I’m keeping at this amount, and will expand only after we see how these 66 breathe.  Of these 66, 21 are “passive” or “knowledge” spells:

  • 12 Unit transformation spells
  • 9 Gem spells

These spells would allow unit transformations of setting of their respective gems into artifacts. The remainder of spells are actively cast from the spellcasting menu and can be generally divided into the following:

  • Forge Artifact
  • Settlement upgrade spells (3)
  • Settlement influence altering (3)
  • Settlement growth altering (2)
  • Avatar damage (3)
  • Avatar scrying (1)
  • Avatar buffs and debuffs (10)
  • Avatar special effects (1)
Read More

Tick Tock.

Monolith Mondays No comments

Week 11 was all Tick. Well, almost all of it. At least five sevenths of it. Maybe less.

Artifacts are now a thing. We can initialize casting the artifact, and the system will assign standard name, surname, prefix and whatnot that you are used to. Wooden pendants to Interplanar Lu’rhans, at standard prices, all of the arti functions now work.

I was ready to start writing tick functions there and then but decided to take a detour into avatar Attack function.

Attack used to be an order that made sense only when targeting dynamic targets – such as other avatars. It also used to move avatars on tick after all other avatars. Some things have changed in this regard.

  • Until I implement terrain-based obstacle course evasion, both move and attack functions still teleport avatars around.
  • Avatars move...
Read More

Features change since V2beta6 (part 1)

Announcements No comments

I just wanted to get this off my chest. Some of the features introduced in last three betas, and planned for DoA beta 7 were good. I’m keeping and expanding these:

  • Avatars in battle – they now join their troops and add flavor. Only extremely high-powered avatars are actually disruptive to combat.
  • New combat system in general (mindbenders were utterly broken) – now we pump defense, and treat defense as hit points.
  • Changes to units (remember the time when Un’Haadar Kas, the elitest of the elite, were the worst unit in the game?) – There is more diversity now and every high level unit can be reached from three different base units.
  • New spells – stuff like Great Escape, short-duration combat spells, even oddballs like Warp Chaos Gate brought dynamics in play the game never featured before...
Read More

Spells and Artifacts galore!

Monolith Mondays No comments

If week 8 was all about combat, week 10 is all about spellcasting. Let’s open with a screenshot.


Spellcasting is finished, if you will pardon the placeholder graphics, though to be honest the entirety of forms in the game so far are placeholders. This is nothing to worry about at this stage, naturally.

We can now invite elders into spellcasting, init, abort, withdraw from assists, break spells by withdrawing when the resulting difficulty is too high to maintain, and everything else that’s normally a thing in Dominance spells. I expected that spellcasting would require three different forms, in the end it turned out about 5 were required:

  1. general spellcasting – where you see the spells and their status,
  2. prepare spell – once you selected a spell you need to set mana and vehemence, and also...
Read More

Into Spells and Research

Monolith Mondays No comments

Week 9 has ended and this is what I’ve been up to recently.

Since the combat was completed the first order of business was to implement event logs. Events are (so far) filed in two categories:

  1. Informative events, such as log in/out notifications, Neaya offers/rejects and similar, that are filed as a simple summary without geographical data
  2. Full events, that contain short and long versions of the report (such as combat or a breakdown of avatar effectiveness while influencing of a settlement) and locational data so “Go To location” is possible.

This now works and can be used to track major events.

After events I wanted to do something constructive but the dead private/empire chats were bothering me...

Read More