07.03.2022 -- #

Oblastle Dev Log 002

Welcome back to another update on Oblastle, the geography quiz game I’m building for my friends and family. Flags are now waving helping players as hints along with other improvements and fixes.

New countries

Continuing the .svg map export from amcharts, I’ve now added Ukraine and Germany to the game. That just leaves Russia to do for the initial release. And yes. I realize the irony in the game being named Oblastle and not having any Russian oblasts. They are coming very soon!



Russia is massive and it’s easier to start with smaller countries.

Live domain

Though the game is pretty rough I went ahead and bought a domain and put it live so I can start getting feedback. Play now at https://oblastle.fun/.


I want Oblastle to be challenging also fun for players without deep geography knowledge, aka me. Worldle got away without hints okay because it’s world geography, country level. In Oblastle we go deeper into the federal subjects of eastern Europe, Germany, and U.S.A. to the point were some help is needed. At the same time the game should stay fair to the advanced player.

hints button

hints button

To remedy this I added a hint system that keeps tracks which hints have been seen and adds the respective emojis to the players share copy/paste.

hints overlay

hints overlay



Thanks to a rich data source on the US I added other hints as well:

  • sky line photo
  • landscape photo
  • capital city
  • nick name
  • population

As of writting not all oblasts in the game have all hint types, still a lot of work there. U.S. States has all types. Ukraine and Belarus just have flags.

sky line

sky line

If a player used flag and skyline hints the share copy/paste would look like this:

#oblastle #65 2/6


Integration tests

With all these map tile, flag, skyline, and other images in the game its getting harder to keep track of them. Connecticut for example depends on five different image URLs, that makes far there ~280 images for the game in S3.

  fullName: Connecticut
    lat: 41.6219
    lon: -72.7273
  mapSrc: http://travisshears.com/image-service/images/oblastle/map-tiles/us-ct.jpg
  nickname: Constitution State
  capitalCity: Hartford
  population: 3596080
  flagSrc: http://travisshears.com/image-service/images/oblastle/flags/us-ct.jpg
  contextSrc: http://travisshears.com/image-service/images/oblastle/context/us-ct.jpg
  skyLineSrc: http://travisshears.com/image-service/images/oblastle/skyline/us-ct.jpg
  landscapeSrc: http://travisshears.com/image-service/images/oblastle/landscape/us-ct.jpg


In order to avoid bugs where the frontend of the game tries and displays an image that I don’t have I want to cover these URLs in an automated test. Originally I wrote a unit test in the backend repo that looks through the oblast.yml and calls each image url via http. This was a bad idea to start off with, putting side effects in a unit test, and sure enough became super flaky preventing me from committing via pre-commit hook failures.

Now I’ve updated the image url test to simply look through s3 itself, code. This tunes out to be much faster and less annoying.

New success / share screen

Thanks to player feedback I realized I 😅 forgot to include the correct answer in the share/end of game overlay.

share overlay

share overlay

That has now been added along with a context image showing the oblast in highlighted in a map of it’s country.

Backend round logic

Another improvement going live this week was adding the concept of rounds to the oblast randomization. At one puzzle per day there are enough oblast for ~half a year. Before this change the next half a year’s order would be the exact same. Now by incriminating the random seed apply to the array of oblasts each time we repete the order is random.

Code for that here.

Whats coming next?

Most importantly, 🇷🇺 will be added this coming week. Then I hope to get a basic stats system up and running.

Looking forward to your feedback, play now at https://oblastle.fun/.

Stay tunes to oblastle tag for more updates.

\- [ oblastle, tech, svelte, aws, game-dev, typescript, node-js ]