But the other gods disagreed, saying “Surely no one number is more beautiful than any other!”. So the Creator set out to build a universe based around his beloved Thirty-Two, one that would demonstrate once and for all the supremacy of that particular number.
A while ago, I got a mobile phone that could run specially-crafted Java applications. Being a small and rather cheap phone, there were a number of limitations on the programs it would run; for example, it had a very slow processor, a tiny (96x64) display, and would not accept programs larger than 64KB. I wondered what kind of game might suit such a limited platform - it would have to be turn-based, not rely too much on graphics, and would preferably be algorithm-based rather than requiring stored level maps. The obvious solution: a roguelike!
So I set about planning how I might squeeze a roguelike into a form acceptable to this phone. I recalled hearing about how Elite generated multiple galaxies filled with stars and solar-systems based on a very small random seed, I recalled . As I pondered storing items, monsters and levels space-efficiently, I started obsessing a little over the number 32, and, well, here we are.
The creator carved out thirty two planes, each thirty-two cubits square, and linked them together.
The dungeon is a series of 32 levels, each 32x32 squares. I haven’t decided on whether levels should be regenerated every time.
A creature, either a monster or the Player is represented by two 32-bit words, called Intrinsics and State. Intrinsics is a bit-field, where each bit represents a particular skill or attribute, while State has a number of things packed into it.
Bit | Intrinsics | State |
---|---|---|
0 | Claw (1 damage to 1 adjacent square) | X coordinate |
1 | Blast (1 damage to all squares +/- 45 degrees from a line in a given direction, radius 1 - so, the three squares on a side or corner in the given direction) | |
2 | Swipe (1 damage to all nearby squares, radius 1 - so, all adjacent squares) | |
3 | Beam (1 damage to all squares on a line in a given direction, radius 3) | |
4 | Hard Blast (1 damage to all squares +/- 45 degrees from a line in a given direction, radius 3) | |
5 | Hard Swipe (1 damage to all nearby squares, radius 3) | Y coordinate |
6 | Zap (1 damage to adjacent square, but recursively chains to a randomly-chosen adjacent square, to a depth of 3) | |
7 | Penetrating Beam (1 damage to all squares on a line in a given direction, radius 5) | |
8 | Penetrating Blast (1 damage to all squares +/- 45 degrees from a line in a given direction, radius 5) | |
9 | Penetrating Swipe (1 damage to all nearby squares, radius 5) | |
10 | Penetrating Zap (1 damage to adjacent square, but recursively chains to a randomly-chosen adjacent square, to a depth of 5) | Current HP |
11 | Mighty Beam (2 damage to all squares on a line in a given direction, radius 3) | |
12 | Mighty Blast (2 damage to all squares +/- 45 degrees from a line in a given direction, radius 3) | |
13 | Mighty Swipe (2 damage to all nearby squares, radius 3) | |
14 | Mighty Zap (2 damage to adjacent square, but recursively chains to a randomly-chosen adjacent square, to a depth of 3) | |
15 | Mega Beam (2 damage to all squares on a line in a given direction, radius 5) | Max HP |
16 | Mega Blast (2 damage to all squares +/- 45 degrees from a line in a given direction, radius 5) | |
17 | Mega Zap (2 damage to adjacent square, but recursively chains to a randomly-chosen adjacent square, to a depth of 5) | |
18 | Mine (adds an invisible mine to the current square that detonates for 2 damage the next time a creature walks over it) | |
19 | Fetch (targets any visible creature or item. Monsters are moved to the nearest unoccupied square to the caster, items are moved to beneath the caster's feet) | |
20 | Teleport (targets any visible monster or item, moves it to a randomly-chosen empty square within radius 10) | Current MP |
21 | Heal (regain full HP) | |
22 | Fire Damage (adds 1 to the damage multiplier if the target does not have Fire Resist) | |
23 | Acid Damage (adds 1 to the damage multiplier if the target does not have Acid Resist) | |
24 | Sonic Damage (adds 1 to the damage multiplier if the target does not have Acid Resist) | |
25 | Electric Damage (adds 1 to the damage multiplier if the target does not have Electric Resist) | Max HP |
26 | Fire Resist (negates the Fire Damage bonus) | |
27 | Acid Resist (negates the Acid Damage bonus) | |
28 | Sonic Resist (negates the Sonic Damage bonus) | |
29 | Electric Resist (har-de-har) | |
30 | Regeneration (regain 1HP/1MP every turn) | Suggestions welcome |
31 | Fast (twice as many turns) | Suggestions welcome |
Upon creation, a monster will have a number of its Intrinsics bit set, according to the level upon which it’s generated - so a monster on level 5 will have five intrinsic abilities, and every monster on the last level will have everything. The player starts with no intrinsics, but can add them via equipment, enchantment, etc.
Upon creation, a monster will have its Current HP, Current MP, Max HP and Max MP set to the level on which it’s generated - so a monster on level 5 will have 5HP, 5MP, etc. The player starts with maybe 3HP/0MP, just so he can’t be insta-killed, recovers 1HP every few turns (unless he has Regenerate, in which case every turn), and their max HP/MP is the maximum depth of the dungeon that they’ve visited.
I think there should be some kind of MP cost associated with using intrinsics, just so a freakish level-1 monster can’t spam you with Mega Blast, although I’m not sure how it would work.
Ideally, the intrinsics would be purely random, but you might wind up with a level-4 creature with every kind of damage bonus, but no actual offensive skills. I don’t know if that’s going to be a game-balance problem, though.
Nothing yet.
Nothing yet.