Calculating Weapon Damage Using Ideal Ranges

The Problem

Whilst building a turn based strategy shooter, weapons needed to have “ideal ranges”. For example, a melee weapon should only work from 1 tile away, a shotgun should prefer short ranges, a sniper rifle should prefer long ranges, etc. The non-melee weapons should still work outside of their ideal range, but with reduced damage.  Continue reading “Calculating Weapon Damage Using Ideal Ranges”

Android: Selecting A Weighted Random Item From A List

The Problem

In Pixel Blacksmith, visitors arrive in the shop and have demands that need fulfilling. The  visitors are mostly random, but each visitor is weighted to appear more or less frequently,  to allow for rarer visitors. These weighted probabilities also need to be modifiable, to add seasonal visitors etc. Continue reading “Android: Selecting A Weighted Random Item From A List”

Android: Converting Display Pixels (dp) To Real Pixels

The Problem

Occasionally whilst developing a UI in Android, padding will have to be set programmatically, this usually happens when padding varies according to the number of items on screen. These values must be set in pixels, but the size of a pixel will vary massively, according to the density of the screen (for example, 2 1920px by 1080px and 192px by 108px screens may be the same physical size, but the former will have 10 times more pixels in any given centimetre). As such, display pixels (essentially a unit that aims to avoid this issue) must be used, however these values need converting into real pixels. Continue reading “Android: Converting Display Pixels (dp) To Real Pixels”

Android: Asynchronous ORM Database Install

The Problem

Many apps need to ship with a local database, and many apps also use a ORM to handle their database actions (I personally use and recommend Sugar). Tying together these two approaches requires some sort of compromise, often manually copying a SQLite database around the device’s filesystem.

Instead for City Flow a different approach was decided: Installing the database on first run, providing progress updates to the user.

Continue reading “Android: Asynchronous ORM Database Install”