substract -> subtract
[anarch.git] / TODO.txt
blobddf70b6a9bc261c2153a61644318011caee3f23b
1 general:
3 - Port to OpenDingux.
4 - Rewrite python scripts to C (faster, less bloat, fewer dependencies).
5 - run on raspbery pi
6 - mod: terminal messages (when standing near terminal, a message appears)
7 - option for turning off the status bar
9 level ideas:
11 - outline:
12   1.  City, player sees the big Macrochip building (a smaller one) in the
13       distance and has to get to its entrance. Beginning of the level is linear
14       and serves as a tutorial, things like exploding barrels or acess cards are
15       explained.
16   2.  Inside Macrochip smaller building. End leads to an elevator that goes
17       under the ground.
18   3.  Warehouse:
19   4.  Factory:
20   5.  Small boss level:
21   6.  City, player is on the other side of the smaller Macrochip building, the
22       level partially overlaps with level 1, but the player can now go further.
23       Big Macrochip HQ (skyscraper) is seen in the distance, player has to get
24       to its entrance.
25   7.  Inside skyscraper, 1st floor.
26   8.  Inside skyscraper, higher floor.
27   9.
28   10. Final boss level: on top of the skyscraper, player climbs up in a spiral
29       towards the roof. There is a boss (or two) on the top with a few smaller
30       ones, the exit is blocked by a lot of trapped warriors which the player
31       has to slowly kill, which means he has to first get rid of the other
32       monsters.
34 - Long section under squeezer, player has to run and keep hiding in side rooms   DONE
35   to not get killed.
36 - Elevator with 4 exits, on each world side.                                     DONE
37 - Teleport to a football stadium outside?                                        DONE
38 - Key to door that need to be unlocked can also unlock a door in previously      DONE
39   visited area which will just hide secret.                                      
40 - text on the wall -- some letter can be create- text on the wall --             DONE
41   some letter can be createdd
42 - Enemies can be placed on a single square higher fround to prevent their        DONE
43   movement.
44 - Many teleports at place A and one teleport at place B, giving a low chance of  DONE
45   reaching B: player has to gring teleports until randomly lands in B.
46 - Underground storage level start: be at the bottom of an elevator pit.
47 - ceiling with "holes" through which sky (background) can be seen -- can be done DONE
48   by having the ceiling texture set transparent and then alternating ceiling and
49   no ceiling
50 - boss level: skyscraper top, player goes upwards in a spiral along the OUTSIDE  DONE
51   side of the skyscraper
52 - two levels could partially overlap, e.g. level one, a city, could overlap      DONE
53   with a later city level, the player could recognize he's e.g. on the other
54   side of a channel or a wall that he was before
55 - invisible maze                                                                 kinda
56 - wall made of elevators (or squeezers), serving as a big auto-opening gate      DONE
57 - a key spot to which the player can only get by jumping from a distant high
58   elevated place
59 - player has to jump from one elevator to another, which can only be done when   kinda
60   they're both moving down
61 - multiple doors in a row (can look interesting)                                 DONE
62 - narrow (1 square wide) corridor filled with enemies blocking it
63 - narrow (1 square wide) corridor blocked by barrels that have to be exploded    DONE
64 - teleport on elevator?
65 - teleport at the bottom of a 1 square narrow hole, by jumping into the hole     DONE
66   the player gets teleported
67 - narrow corridor with elevator
68 - maze from walls and/or props                                                   DONE
69 - narrow bridge with platformer elements over a hole full of enemies             kinda
70 - server room                                                                    kinda
71 - window (low unpassable ceiling) through which finish can be seen from the
72   start location of the level
73 - three locked doors in a row at the beginning of the level, the player has
74   to go to three different locations for each key -- a "hub" level
75 - office building                                                                kinda
76 - plasma bots guarding a big stock (store) of plasma ammo
77 - warrior (enemy) right before the player at the start of the level
78 - T-shaped corridor in which two rocket-firing enemies stand facing each other   DONE
79   so that the player can kill them by stepping between them, letting them fire,
80   then stepping back, making them kill each other
81 - enemy trapped between barrels
82 - teleport that leads to another teleport which is on a single high elevated
83   square from which the player has to jump down and won't be able to return,
84   making it a de-facto one-way teleport
85 - teleports placed so that the player can shoot himself with a rocket or plasma  DONE 
86   (for fun)
87 - exploders in a maze, hiding behind corners
88 - teleport leading to a center of big room full of enemies                       kinda
89 - easter egg -- a level that looks funny on the map, e.g. forms a text or a      DONE
90   picture
91 - squeezers with low-elevated base (a hole), on a side of a corridor -- if the
92   player is curious and jumps in, he's doomed to die -- perhaps there can be
93   many of them while one is in fact an elevator, which the player has to spot
94   and take in order to advance
95 - bullet-shooting enemies behing windows (low ceilings) in rooms that can't be   DONE
96   reached
97 - locked door that cannot be unlocked at the beginning of the level as a         DONE
98   visual indication of entrance
99 - elevator in a narrow (1 square) vertical hole with doors at the top and        DONE
100   bottom, looking like an actual elevator in buildings
101 - player goes through a difficult platformer section and at the end has to make  DONE
102   takes card and has to go through the whole section again in order to also
103   take the other one
104 - big platform made of elevators that are moving in a short vertical distance,   DONE
105   giving an impression of a shaking, unstable platform
106 - warrior and/or exploder right behing doors
107 - tight maze made of barrels filled with warriors in which the player has to
108   only use knife in order not to explode the barrels and hurt himself
109 - enemy on an elevator that doesn't stop at aligned with the floor, so that      DONE
110   the enemy is "trapped" on it and only appears briefly to shoot at the player
111 - barrel on elevator
112 - platforming vertical section in which the player is going upwards out of a big
113   hole
114 - level with a lot of closed doors, done by including a door texture in the      DONE
115   level wall textures and then sing it for "fake" doors
116 - invisible bridge (perhaps not straight) made of blockers (invisible walls)     kinda
117   over a hole, leading to an easter egg
118 - start of level: a corner blocked by an invisible wall, to indicate entrance    DONE
119 - small pyramid from diffetently elevated floor tiles
121 bugs:
123 done:
125 - try to remove the debug flag (-g1) from compiler and see if it decreases size
126 - compile on BSD and WinShit
127 - Profile, epsecially Pokitto, small periodical tearing can be noticed (some
128   periodical updates probably).
129 - Compile Pokitto overclocked version.
130 - Refactor.
131 - Check grammar in source code.
132 - Polish the emscripten version (is basically unplayable on phone, horizontal
133   mode doesnt show whole screen etc).
134 - Polish controls (bindings, mouse sensitivity etc.).
135 - Polish weapon switching, maybe add a key to switch to previous weapon?
136 - add headbob
137 - Switch music tracks when level starts?
138 - SDL: handle the quit signal so that the program can be closed by closing the
139   window.
140 - On Win$hit builds display an anti-windshit text, by macro.
141 - save/load (optional):
142   When a level is finished, the state at the beginning of the next one (health,
143   ammo, time, ...) is automatically saved and can be restored via load option in
144   the menu. This save as well as some other things (game progress, inagme
145   settings, ...) will be preserved even adter game restart if the platform
146   implements a saving function.
147 - more levels
148 - port to GB Meta
149 - "Smart" weapon switching. e.g. don't auto switch to knife unless necessary, or
150   auto switch to a weapon from knife if ammo is picked up.
151 - option for vertical auto aim
152 - add blinking
153 - make zBuffer 8bit only?
154 - texture coords of floor walls should start from the floor? NO, CAUSES ISSUES
155 - vertical visual noise when standing on elevator
156 - sprite positioning inccuracy
157 - try to compress images: store images as 4 bits per pixel + 16 color palette
158   (subset of the 256 color palette), check if performance stays ok
159 - custom font
160 - make barrels explode
161 - enemies
162 - weapons
163 - sounds
164 - add enemy moving/dying sound
165 - create tables for monster and weapon stats in constants.h and read from that
166   instead of cheking with ifs
167 - check if monsters are hit by bullets from completely up close
168 - menu
169 - GUI
170 - make enemies not move through items:
171   create a 2D bit array saying at which squares there are colliding items, then
172   check collisions for both player and monsters against this array (elevate
173   these squares for collisions only) -- will also be faster
174 - more level prop items
175 - let player start with 100 HP, but allow for collecting a higher amount, e.g.
176   up to 150.
177 - limit maximum ammo amounts
178 - boss (the last one killed) should drop key card, for boss levels (hardcode).
179 - music:
180   Probably just one long music track playing over and over -- KISS. The frontend
181   could have a callback function play_music_bar(n) which would be called by the
182   backend, the music track would be in sounds.h.
183 - easter egg(s)
184 - level 2D map (with revealing, bitmap), special key for quick displaying map
185 - add universal corpse sprite?
186 - if space left, try blurring (lerp) the level background, see how it looks
187 - replace textures in distace with constant color for performance (setting)?
188 - enemies close to a wall often don't get drawn
189 - Architecture change: make platform files compilable and move main.c to game.h
190   (so that pokitto is .cpp, GB is .ino etc.).
191 - Bytebeat is bugged on Pokitto, outputs different values than on PC. Fix this.
192 - Player jumps higher on lower FPS, is able to jump on 4 squares. Also check the
193   distance jump.
194 - disable transparency for walls for performance (setting)?
195 - On desktop, SDL makes a high-pitched noise because of DC offset. Maybe put an
196   average DC offset for each track into assets so that music player can use this
197   to normalize the track?
198 - Player is sometimes squeezed to death in door (appeared in level 9).
199   Investigate, fix.
200 - Add option for advanced head bobbing which will also shear the camera along
201   with offsetting it.
202 - compile with different compilers (gcc, clang, musl, ...) and settings, make
203   a build script that creates multiple binaries (with different combinations of
204   compilers and settings)
205 - High pitch noise in SDL music AGAIN!
206 - Add SW buttons to emscripten version so that it's playable on mobiles.
207 - When SDL level starts without moving the mouse, the camera sometimes rotates
208   wildly.
209 - Player can be thrown inside a wall (by an explosion it seems), seems to happen
210   near door. If this can't be prevented completely, automatically unstuck the
211   player into a playable area.
212 - Try to recolor textures and give them a bit more of variety.
213 - Even if music is off, after turning on a few samples are played (also on
214   Pokitto).
215 - At the beginning "FPS cant be reached" is always displayed.
216 - automatic tests: a frontend that will play the game, check the state, rendered
217   frames etc.
218 - make SFML frontend
219 - Add FOV options. RCL doesn't project sprites with different FOV correctly -
220   FIX!
221 - When selecting continue from menu, the player shoots - fix!
222 - FIX: running diagonally (forward + strafe) player can jump over 3 squares!
223 - add time slowdown constant
224 - On Pokitto/GB Meta sometimes after turn on the game starts midway loading the
225   first level.
227 scratched:
228 - option for disabling wall transparency, for performance?
229 - weapon autoswitch: when a stronger weapon becomes available via picking up
230   ammo, maybe it should automatically be switched to (could have disable
231   setting)
232 - Ability to play SFX slower to e.g. give some monsters lower pitch?
233 - Force monsters that are squeezed (e.g. on door) to always move.
234 - try to make z-buffer 3 line instead of 1D, possibly like this (to keep
235   performance):
236   - at compile time selct X = power of 2 closest to vertical resolution
237     (or something like that)
238   - in pixel funct do something like
239       if (pixel->y % X == 0 && pixel->y != 0)
240         write to z-buffer
241 - open door by shooting at them?
242 - add jump pads?
243 - add "pletivo" transparent wall texture?
244 - make monsters die when squeezed?
245 - add robot deactivator item? (encourages "stealth" gameplay)
246 - optional graphics enhance: vertical wall shading ("ambient occlusions")?
247 - some monsters could reflect plasma, i.e. not be hurt by it, but reflect it
248   back towards the player
249 - Port to ncurses?
250 - Port to some fantasy console?