· 7 years ago · Oct 04, 2018, 09:28 PM
1-- These are old notes on the production of this game that I didn't feel like throwing out
2-- because they represent a lot of effort and they demonstrate the problem-solving that went into the game.
3
4version 0.16
5
6-- write a little bit of code that loops over the axes on a gamepad and shows the direction value for each of them (Joystick:getGamepadAxis)
7-- make jumping respond to stick state
8-- move the stick menu response code because this whole section only runs when a key or button has been pressed
9-- implement activation rate limiting for stick input in menus
10---- make analog stick control toggleable, moveable, and adjustable
11---- add another window accessible from the bottom of the controller controls window
12-- add 12 to controller errors
13-- get everything moved down consistently
14---- fix the cross-device control assignment (e.g. keyboard attack = "start")
15-- check input_type when entering control_edit
16---- figure out why the control_cross message doesn't show up for control_edit device mismatches
17---- fix input device becoming unresponsive for menus after moving window while in controls menu by not going to the main pause menu if the game is already paused, and also for out-of-game quit methods opening the quit check menu-- reset game_status.input_type
18---- try to fix up direction switching with an analog stick in menus, if the active direction is different from the stored current direction then switch the current direction immediately instead of waiting for the cooldown
19---- build the actual stick settings submenu
20---- build in code to make inversion work, should just be more nested branches
21---- make sticks work AGAIN, and make settings menu actually activate
22-- still make sticks work vertically, and make settings menu actually work (unfreeze? and not freeze on error)
23-- build the reset for going into an error state
24-- fix up which stick sensitivity adjustment goes to which actual stick setting (h/v)
25-- move up the bottom of the stick settings menu and make it wider
26-- inversion branches are being tripped and shouldn't be
27---- up and down are being tripped, non-inverted is being tripped, inverted is being tripped when set to "both"
28---- clamp stick sensitivity readings away from 0, that is, make them not be 0, and make positive and negative (both directions) behave the same
29---- fix data not leaving the stick sensing section
30---- make x-only and y-only inversion work
31
32
33version 0.17
34
35---- partition different kinds of enemies into different sub-tables
36---- change loops and branches and so on to check for all types of enemies
37---- fix enemy cleanup and respawn
38---- fix debug text to say what kind of enemy is involved rather than just "growler"
39-- all check
40
41---- fix up calls to enemy_interaction functions so they pass in the right enemy index - check
42
43---- check player landing (player.jump), check main, check states - check
44
45---- make hurt enemies act a little differently, maybe
46-- set up flinch_timer to clear appropriately
47-- fix enemy counter
48---- inv_timer -> also flinch_timer
49-- reset it when it runs out and also the player is on the ground, as in both must be true
50
51---- look how health spawning and checking is done and copy that for enemies and their attacks - check I guess?
52-- also look at player attack handling
53
54-- fix air movement so it doesn't slow down disproportionately when the game slows down - check
55
56---- make it so that all the player reset things reset the player's new inv_timer X flinch_timer
57---- make contact damage and attack damage both trigger player hurt and player inv timer X flinch
58
59---- make enemies clear out when they die! remove type.locations, index ! - check
60
61---- start flinch timer on contact damage (and later other damage!) and tick off during damage clear - check
62
63-- add enemy attacks and responses - check
64-- basically copy the code from player-controlled attacks - check
65-- make attacks happen at random for a random length of time at first (within certain bounds) - check
66-- set sprite, use newly created blast graphics (blast-0) - check
67-- set size (look at dynamic detection) - check
68-- make sure collision checks are happening (enemy_interaction.attack) - check
69-- make sure to set a location for attacks - check
70-- fix up enemy drawing to use common data instead of per-enemy data - check
71-- make sure you're drawing the attacks - check
72-- make attacks actually work and not bug out - check
73-- make enemies unable to attack while dying - check
74-- try making the attack more likely to happen if the player is in range - check
75-- make the map bigger - check
76-- figure out why boss enemies won't spawn elsewhere - check
77-- make player and enemy attack disengage when dying - partially done
78-- make attacks actually work - check, consolidate them later
79
80
81version 0.18
82
83-- make player and enemy attacks disengage when dying - partially done - check?
84-- make attacks actually work - check, consolidate them later - or don't
85-- make the player slow/stop when attacking - check
86-- examine integer falling from ledges versus floating-point falling from jumps - check
87-- figure out the mandatory hang time issue - check
88
89-- add fall damage - check
90
91---- add a control to back out of menus
92-- add table entries - check
93-- change menu limits - check
94-- add menu slot checking - check
95-- change menu text - check
96-- change menu background sizes - check
97-- add action checking - check
98-- fix backing out of stick settings - check
99
100-- make menu scrolling cooldowns cut out immediately if the direction of scrolling changes - doesn't work for some reason
101-- copy the code from right stick checker to left stick checker! - doesn't work
102-- check for dead zone - doesn't work
103-- delete previous attempt and check latest attempt again - bingo!
104
105-- increase fall damage height to 140 and add debug message and remove temp debug message(s) - check
106-- make jumps a little less floaty (reduce hang frames?)
107---- fix fall damage, should not be happening this much! - fixed, don't fuck with the order!
108-- fix hurt state not completing when getting on stairs (check if landed OR attached) - also kill checking - check
109-- add debug command to hurt the player - check
110-- increase fall damage height to 150 - check
111
112-- add climbing chunkiness so that holding the climb button doesn't automatically climb - look at jump code for this
113-- add a new player.movement.state - "climb_completed" - check
114-- check if the player is in that state and not holding the climb control, if yes to both, make player movement state "ready" again
115-- go through and make sure everything responds to the new state properly! - check
116-- make sure the state is reset when the control is released - check
117
118-- put the input functions in their own module - check
119---- figure out why it's not working for the controller! - check
120
121-- move enemy movement into its own function in the enemy_interaction module - check
122
123---- narrow down the player's collision box (4 pixels horizontally)
124-- set up some data in the player structure to make things consistent - check
125---- will still need to change every collision call involving the player
126-- set collision_y to y, set collision_x to x + 2 - check
127-- look at using a metatable for this
128-- use existing collision for structures, stairs, and edges of the map - check
129---- use new collision for enemies and doors
130-- enemies - player.contact_damage, enemy_interaction.attack - player is now immune? fix this! - check
131-- doors - went with a different scheme
132
133---- reset walk speed and attack readiness on death! - check
134
135-- make the game respond properly to position fixing when running into enemies (e.g., player.x = enemy.x - player.width) - check
136
137---- fix enemy attacks showing up after death - check
138---- also showing up at 0, 0 - check
139
140---- figure out why the player is getting launched up so high when jumping on enemies
141-- print function arguments when touching an enemy while in the air - doesn't take arguments
142-- fix jump height = jump height - x - check, fixed falling collisions, didn't fix rising collisions
143-- print jump height - uneven functionality
144---- ENEMY INTERACTION MODULE, YOU FOOL - check
145
146---- make the player able to walk while hurt (maybe more slowly?)
147-- remove previous attempt - check
148---- set it up so the walk speed changes after the player lands - check
149-- try checking for being landed in the damage clear function before, and without, checking for damage clearing - check
150-- make sure walk speed is normalized when hit stun is over - check
151
152---- move stick interpretation into the special I/O module - check
153
154---- Twitter accepts libopenh264, figure out how to quality up that shit
155---- play with known and tested options
156---- if you don't find or figure out anything right away tomorrow, just convert to WEBM-- at very high quality-- and then to MP4 since that worked before
157---- probably just go ahead and do the double conversion
158---- double conversion is shit on Twitter even when it looks fine
159---- direct conversion can look great but won't be accepted
160---- try a different double conversion, MP4 to MP4
161---- just use GIF and make it look decent - check
162
163---- add a door interactable for a way to leave levels and areas and use it for the end of the map
164-- arch-shaped, wider than the player
165-- requires the player to be within its bounds, not just overlapping
166--- data structure - check
167--- spawn function - check
168--- spawn misc - check
169--- render section - check
170--- menu display - check
171--- control assignment - check
172---- make somewhere for it to lead to!
173-- move everything down - check
174-- test each enemy to find the one(s) that doesn't/don't work! - fixed
175-- put the new area above the old one
176---- move everything down again - check
177-- spawn a second door - check
178--- interaction
179-- function and call - check
180---- make a sub-table to put location data in - check
181-- make code to store the data - check
182---- set the data - check
183---- make sure it doesn't trigger continuously! - check
184-- change position (to new door's x,y + character-sprite-appropriate x,y) - check
185---- fix double and continuous entry - check
186-- fade out, fade in
187---- use game_status.action = cutscene, whole-game color intensity (alpha intensity?) changes, a timer or two, 0.4 seconds, to accomplish the fade out and fade in - check
188---- change doors and fades to fade out, transport, fade in
189-- set door_begin at first, set door_used afterwards - ended up being more involved
190---- fix the phantom door problem! - check
191
192---- put something at the end to congratulate players! - check
193---- make it so the jump increase reward is triggered immediately on exiting a door - check
194
195---- seem to have fixed the spawning falling bug, somewhat, sometimes
196-- spawning on structure 8 (not 1!) at the old usual spot with the structure set correctly seems to work right
197
198---- remove the print statements scattered around - check
199
200---- touch up lantern glow, move second lantern down, maybe put lanterns on either side of the bridge - check
201
202---- look at this after demo day! - fixed, put in demo day version afterwards
203---- look at changing on key released chunky I/O event to on key pressed - love.keypressed - check
204-- strip out the freshly unnecessary preventative states - actually don't, I like jumping, climbing etc. better with some pre-emptive ability
205---- however, look into making those less pre-emptable, e.g. holding jump and climb
206-- probably just check if the other control is being held when checking whether to clear the preventative states
207---- no, check if both controls are being held when starting an action, and invalidate one action, probably jumping
208-- move climb decision code into climb function - check
209-- move jump decision code into jump function, or if that doesn't work, into its own function - rather not
210---- use a four-way if-- if one, if other, if both, if neither - probably won't work - does work
211
212---- address repeated/automatic stair use
213-- set unique state afterwards - check
214-- find a way to clear the state properly
215-- deal with walking out of state while holding up or down - check
216
217versions 0.19-0.19R4
218
219---- add debug command to give the player health
220-- add menu item, expand menu background - check
221-- add special_io functionality - check
222
223---- don't draw things that are off-screen
224-- probably not very possible for sprite batches, but try it for individually drawn things like enemies
225-- check position +/- scroll offset to check if it's on the screen or not
226-- no, just use player position - check, doesn't affect frame rate
227---- check into using multiple sprite batches or even individual sprites so as to refrain from drawing more things
228
229---- look at limiting scrolling before it goes too far! that would be a good place to start given the snapping at map edges
230-- inconsistent snapping?!
231-- check if touching an enemy affects scrolling in some way beyond just knocking you back - doesn't seem to
232
233---- make the game scroll properly when climbing or holding the climb control
234-- climbing move distance is overwriting walking move distance, stash it and restore it if there's no movement
235-- or just don't change the value - check
236
237---- maybe implement prediction-based/momentum-based/vector-based/whatever you want to call it-based collision
238-- look at where a motion will put a character, and if it would cause a collision, stop it part-way
239-- see if a point-of-collision data point can be retrofitted into the collision detection module
240-- or just run a check when needed
241-- or just don't do it because you're already resolving collisions in less than a frame
242
243---- make the player able to move around in the middle of the screen somewhat without the screen scrolling
244-- fuck it, just make the draw function say where the character will be on the screen after its current movement and compare it to certain bounds and nullify the scroll amount if it doesn't put the character beyond those bounds
245-- also have some checking for map edges?
246---- draw function can't predict movement because it's run after the update loop, will have to be feedback/response
247-- the player has already moved and the screen has already scrolled by the time the draw function runs
248-- try storing screen-space coordinates of the player and referencing those when deciding how to scroll
249---- screen-space coordinates can be calculated at any time with player.c + game_status.scroll_c
250-- use this to determine scrolling before it happens
251-- check if player.c + game_status.scroll_c will put the player outside of a designated no-scrolling zone
252-- use a game_status.scroll_threshhold table to hold these zones
253---- check the current movement against the appropriate boundary to determine scrolling
254-- fix position when attempting to go past the threshhold
255-- actually fix the position, figure out why previous attempt doesn't work
256-- figure out why scrolling goes into overdrive when going past the threshhold
257-- figure out why you can't scroll farther through normal means, look at map-edge checking
258-- figure out a way to make scrolling threshholds scale based on player's world position
259---- it's not using the latest scroll value! calculate that first! - nearly working
260-- for rolling scrolling threshholds, try subtracting the difference between threshhold and actual
261-- move_distance.c is not overwriting game_status.scroll_c
262---- move_distance.x when walking left is becoming massively negative, triggering the reset/bounding code
263-- scroll offset is being set to the x position
264---- the else checking math does not work both ways! it's not the position fixing!
265---- YOU WERE LOOKING AT THE WRONG CODE! SHOULD BE LEFT, WHICH IS ABOVE!
266---- add a third sub-branch to the left and right branches to cover the middle so that scrolling won't happen if the player is between the two threshholds
267-- reminder that this is necessary because the current code does not and is not set up to allow "free movement", sans scrolling, within the middle of the screen most of the time
268-- when not rubbing against a threshhold scrolling will happen "normally", i.e. every movent will scroll, so it's nearly impossible to break out of the current on-screen position!
269-- or see if another branch is really needed, since scrolling usually won't take effect until reaching a threshhold anyway
270-- neglecting to scroll except at boundaries doesn't work
271---- you're shifting everything over based on one number, try making separate scroll values for the player and the environment
272-- keep the current one as player scrolling, make a new one for the environment
273-- reset the graphics coordinates before and after drawing the player, and then shift them appropriately for the player or the environment
274-- go ahead and (finally) try the zone approach because pressing an opposing direction while past the opposite boundary may be triggering that boundary
275-- it isn't, and it doesn't help, on normal or edge cases
276-- don't correct exactly to the boundary but just before
277-- try getting some help
278---- look at linear interpolation
279-- going left from the right edge of the map, the camera snaps to the right
280-- this is because of the edge fixing code in the main module
281-- for map edges, just don't scroll if the player is too close
282-- no edge snapping mostly doesn't break anything, but the first time the player switches from walking right to walking left, the camera snaps so the player is in the middle of the screen
283-- try flipping which is tested first, in-bounds or out-of-bounds
284-- try flipping the branch hierarchy, area/boundary conditions first, then walk direction
285-- left boundary correction isn't putting the scroll amount at a correct setting, compare with player.x + scroll, add/subtract accordingly
286-- re-find and compare the actual set of data that gives the screen position
287-- player.x + scroll is accurate, just got thrown off by it not changing
288-- print the adjusted scroll amount more often to find where it's over-acting
289-- print it properly, it doesn't immediately adjust game_status.scroll_x
290---- change map edge limits to detect if current scrolling goes past the edges rather than just basing it on the player's position
291---- change background rendering so it stops at the right edge of the map so you can figure out appropriate scroll adjustment values
292-- fuck it, just draw a line there
293-- scroll snap for right edge is, of course, right edge minus screen width; set this limit - FIXED, map edge scroll adjustment works fine
294---- adapt this code for the y axis
295---- now go ahead and fix the scrolling adjustment based on scroll adjustment and possibly player position
296-- try absolute values
297-- try not changing scrolling? - this seems to work as things are right now
298---- right boundary correction doesn't work, walking right into right boundary scrolls massively left
299-- try not scrolling by just setting move_distance to 0 - this freezes scrolling, while the player continues to move past where they were, interesting
300-- try setting move_distance to the negative of what it was, i.e. set the negative of the scroll amount - this scrolls in the opposite direction the player is moving, also interesting
301-- try increasing scrolling slightly when walking into a threshhold, thus putting the threshhold just out of reach again
302---- try using the zero-scrolling technique for normal movement and the follow-player scrolling technique for hitting boundaries - it works!
303---- not 100% but close! maybe like 90% - scrolling can still get stuck on the left boundary
304-- walking right from the left boundary is fine, walking right from the left boundary makes the scrolling stick to the player
305-- try fixing this in the same way, don't scroll if the player isn't walking into the boundary - it works!
306---- adapt this scrolling code into everything that moves the player continuously-- the jump function, the stair function, and the climb function
307-- actually you can just copy it - check
308
309-- figure out why adapted map-edge scroll snapping for vertical scrolling is making things all weird
310---- add more branches to the code to handle vertical scrolling - check
311
312---- put bounds-checking code in its own function
313-- pass move_distance.x, move_distance.y into the function; return move_distance.x, move_distance.y; accept them with x, y = func() - check
314
315-- see if you can have the scroll adjustment function just run once per update (call from main)
316-- one call works but vertical scrolling is weird
317-- worked without actually calling the function so something is definitely fishy - forgot to comment out one call
318-- now behaves differently but not correctly, try moving function call - everything got even weirder
319-- maybe just go back to calling the function for every action because that worked and it accounts for every action in an update loop instead of just the most recent one
320-- actually calculate move distance before returning it! - nope, already was except for walking, doesn't help
321---- go ahead and change it back to each function calling scroll_resolve
322-- also tally up returned move distance in main function so every call to scroll_resolve actually counts
323---- will need to make another(!) stand-in set of variables because move_distance.x and .y are needed to run scroll_resolve, and scroll_resolve is needed to add the proper amounts to game_status.scroll_x and _y
324-- maybe just leave it
325
326---- fix map-edge scroll snapping
327-- try moving snapping into the scroll_resolve function
328-- if you do this then there's no reason to handle any scrolling directly in main, which would make influencing scrolling properly every time it changes much easier
329---- scrolling is trying to go way past the map edge when snapping or approaching snap, figure out why
330-- try moving the move distance declaration in the climb function - didn't help
331-- try returning 0, 0 from the climb function if it exits early - didn't work
332---- problem is almost definitely with the climb function though! going up any stairs triggers it!
333-- seem to be calculating move distance twice in different ways in some functions - fixed!
334
335-- reminder: DON'T TOUCH THE FUCKING CLIMB FUNCTION, I KNOW IT RETURNS NIL WHEN IT EXITS EARLY, IF IT DOESN'T DO THAT IT WILL BUG OUT
336-- never mind, fixed it! zeroes and proper initialization are your friends - also return {a = 1} works for tables!
337
338---- figure out why the first jump is calling for nil-type collision checking
339-- probably set the wrong home structure!
340-- home structure is fine, jump type is nil for another reason
341-- it's trying to do a directional jump for some reason, check jump direction - check
342
343-- figure out a way to fix being stuck too far into a scroll boundary, probably just don't scroll for a bit
344---- pick some further boundaries for this, maybe like right scroll x + 5? maybe even do a basic lerp (1/2)?
345-- scroll less, scroll back - scroll more! - bingo
346-- fix vertical scrolling causing the player to jitter - just scroll normally, it works fine, it looks fine - check
347
348---- move everything to the right so the player can spawn outside of a scrolling boundary
349-- or don't since it's not causing problems and shouldn't cause problems
350
351-- the player.kill function is basically a one-liner, why is it even a function? move it to main - check
352
353-- fix view after death-- resets to the top of the screen, won't go back on its own - fixed, set scroll offset
354-- move scroll offset setting to the player spawn function - check
355
356---- go ahead and modularize or parametrize or do whatever with the up/down/left/right direction inputs when deciding on running the stair function
357
358---- do more intelligent rounding to produce dummy variables for the draw function (maybe)
359
360---- set initial home structure for the player the same way I'm doing for enemies - check
361
362-- rename files so the one lantern and sign (so far) are in more self-evident and appropriate files - check
363---- try to find time to figure out how to fit lights and signs into one decorators file that isn't too hard to parse (programmatically and visually)
364
365-- modularize the enter door function a bit more, specifically its exit door data - or don't, having it pre-set and not tied to a second door allows for one-way doors
366
367-- mute the colors a bit more - check, also made slight design changes
368
369---- remove debug output for lanterns, amend commit, paste code! - check
370
371---- improve lantern flicker
372-- choose a random opacity value, increase or decrease opacity until that value is reached, repeat - check
373-- scale the speed at which the opacity approaches its target based on the frame counter (maybe) - based it on the distance from current value to target value
374--- maybe allow it to overshoot, if so put in an immediate bounds correction, before anything is displayed - check, bounds checking not needed
375-- maybe put restrictions in as far as going up versus going down (so it doesn't increase/decrease continuously) - check, reverses each time
376
377---- make control text more streamlined and readable on itch.io page - check
378
379---- fix knockback from enemies not causing scrolling
380---- try to figure out at some point why jumping is so much more likely than walking to stick the player too far into a scroll boundary
381---- scrolling fails when a direction isn't held while in the air - nothing should be dependent on that, but it is
382-- jump direction is working fine, try a backtrace from the scroll resolve function - didn't help
383-- planned premature exit on map-edge isn't using current calculations for scroll resolution - fixed that, larger problem remains
384---- player.movement.walk_direction is still being influenced when jumping, and its status is affecting scrolling
385-- setting it to "none" immediately before running the jump function causes scrolling to always fail during jumping
386-- also causes the player to be flung up really high into the air on a falling enemy contact - this was a different change
387-- walk function is not actually running
388-- walk direction was already being reset when initiating a jump
389-- temporary fix for this bug: set walk direction to jump direction right before calling the jump function
390-- WALK DIRECTION IN SCROLL RESOLVE, function is checking walk direction, not anything else - check
391
392-- add explanations for the more-used/less-obvious named states - check
393-- chamge to block comments for beter formatting - check
394
395-- add scroll resolution to the contact damage function, because it has collision resolution - check
396
397-- try weighting lantern glow by multiplying the output opacity value of the existing code - doesn't work how I want it to, tweaked the scaling a bit, not really worth messing with further right now
398
399-- set up a custom random seeding method, use os.date, check the time of day (and day of the week?) - check, used a different, somewhat complicated setup
400
401---- try using love.math.newRandomGenerator for lanterns and enemies
402-- assign each one their own generator in a loop - not needed, only one is spawned at a time
403-- restructure lanterns so they don't use a sprite batch, at least for the glow effect - check
404---- remember to initialize the image first, try to reuse it
405--- ask about love.graphics.newImage using a section of an image file (AKA sprite sheet)
406--- try using a canvas to chop up the image
407--- fuck it, just put the glow effect in its own file - done, lanterns.png and lantern-glow-1.png
408---- consruct a table, put in data for the sprite image, location, and RNG, insert into sparks table - check
409-- spin out lamp_target and lamp_actual into per-lantern spark variables - check
410-- read the data back out in the draw section, iterating over the inner tables
411---- fix lanterns being half-drawn and stretched! - check
412---- figure out why glow sprites aren't being drawn
413---- the numbers are changing properly, it's just the visuals that are not working - fixed
414-- forget the individual random number generators for now, and leave enemies alone for the time being
415
416
417version 0.20
418
419-- make scrolling boundaries wider - check, currently first and last 35% of the screen
420
421-- lower jumps - check - actually don't
422-- also increase hang time - check
423-- maybe increase jump speed - check, but re-evaluate later!
424
425-- slow down attacks? - check
426
427---- streamline the controls - check
428
429---- fix up fall damage
430-- increase the height required to take damage - check
431-- add an in-between state where the player is stunned but not hurt
432---- should work now, just need to make the flinch timer take effect
433---- works if player.hurt is set, but it looks like the player has taken damage
434-- set up some more states and checks-- or just key on flinch timer - check, but issues
435---- fix endless hurt and stun effects
436-- flinch timer is not resetting properly! go over the conditionals, make sure one of them catches fall stun!
437-- it's the initiating check! flinch timer > 0 doesn't usually account for overrun
438---- just add a stun status already - check, works
439-- add a short stun after player.hurt wears off if it wears off in the air
440---- if flinch timer is 0 and player is landing, set player stun - check
441-- check up on all the code that checks or changes hurt status, make sure it plays well with player.stun - check
442-- make the player able to climb ledges while hurt or stunned - check
443
444---- tell the user about fall damage and fall stun in the game page!
445
446---- fix the stair scrolling bug again-- holding only up or down on stairs doesn't scroll
447---- no scrolling happens when the climb control is held, but that doesn't explain the lack of scrolling going down stairs
448-- check if the stair function is trying to send out any scrolling at all-- it's not!
449-- climbing ledges isn't scrolling either
450-- it's an internal problem! something is wrong inside of the function
451---- check the scrolling management function - there it is! it checks walk direction and jump direction
452-- add variables to keep track of climb direction and stair climb direction, and check them in the scroll function
453-- player.movement.stair_climb_direction already exists, just change the stair function so it ends up being "left" or "right" -- stair scrolling fixed!
454-- do the same for climbing - check
455---- holding the climb control while walking still prevents scrolling, and I don't know why-- look at this later!
456-- profiling confirms the climb function is running whenever the key for it is being held down, it must be overriding something
457---- the climb function runs whenever the key is pressed! the return value from it when not climbing cancels out walking by replacing the move distance!
458
459-- engage profiling on the scrolling management function - check
460
461-- add a guaranteed quit (alt-Q) from normal play - check
462
463---- prioritize jump power-up, use a spring graphic
464-- make a sprite - check
465-- set up image loading and sprite placing - check
466-- implement collision detection and flag setting - check
467-- increase the required height for fall stun and fall damage while in jump boost mode - check
468
469-- maybe decrease player's enemy-detection hitbox - check
470
471---- figure out the scrolling bug that happens when bumping into the enemy right above where the player spawns
472-- seems to only happen if the player is past the scrolling boundary
473-- x must be less than 120 it seems
474
475---- figure out the scrolling bug that happens when holding left and climbing onto the first two ledges
476
477---- add a full-screen mode and/or a double size mode
478-- double size would be 1280x960
479-- Steam has stats including hardware, try to find other sources
480-- consider fractional scaling, see how it looks and what can be done with it
481---- figure out how to get full screen to look better, and how to pillarbox it while looking better
482-- especially figure out the corruption that sometimes happens switching back to windowed mode
483---- try to see if you can just not render anything past the intended edge of the game view
484-- if not try just drawing a black rectangle over it and shifting the coordinate system over
485---- got a usable full-screen mode working
486
487
488version 0.21
489
490---- make the game start paused - check
491
492---- add in a welcome message when the game starts - check
493
494-- decrease left-right player hitbox one more pixel - check
495
496---- increase scrolling boundaries further (40%), make sure they're consistent left to right
497-- they aren't consistent, reconfigure the math, should be screen edge - (screen size * scroll percentage) - check
498
499---- fix glitched physics when collecting the jump powerup while jumping - check, come up with a cleverer fix later
500
501---- add a more persistent message when collecting the jump power-up - check
502
503-- add better font support - check, added a better font
504-- change the color of the health display based on how much health is left - check
505-- add a better health indicator - check!
506
507-- make the one stronger enemy weaker - check
508
509---- add an indicator for the stun state
510-- make graphics - check
511-- load and assign graphics - check
512-- add a branch in the draw section, in the player part, to check for stun state and show it - check
513-- tone down coloration - check, twice even, maybe tone it down more later
514-- tweak stun time - check
515
516-- see about fetching and examining rendering statistics (love.graphics.getStats) - check
517
518-- maybe have enemies slow down rather than stop completely when hit
519-- lower enemy stun time - check
520-- increase boss death cleanup timer - check
521
522
523version 0.22
524
525-- go over player damage handling in the enemy_interaction module and see if that's what's causing the scrolling bug near the left end of the map
526-- let scrolling happen again
527-- try setting player.movement.jump.direction_actual
528---- you were getting scrolling from player.contact_damage, fix this
529-- use the tactic you used for climbing (temp = returned, if temp then move_distance = temp) - fixed
530---- original bug resurfaced; it seems to be tied to walk direction, doesn't happen unless left is held
531-- player.movement.state is working as inteded
532-- player.movement.jump.direction_intended and player.movement.jump.direction_actual are working as intended
533-- check the scrolling function itself, probably still missing a good way to get the right direction
534---- almost certain it's player.movement.walk_direction
535-- lock that shit down when the player's not grounded already
536-- use jump direction to determine scrolling when jumping - fixed!
537-- refactor player.scroll_resolve to properly sort through all the combinations of conditions for scrolling - check
538
539-- make dead enemies harmless - check
540-- make dead enemies have collision - check
541-- fix scrolling when walking into dead enemies
542---- look at x position while walking
543---- look at scroll values
544-- scrolling is happening twice per frame with this bug-- or is it?
545-- try resetting player position to what it was when entering the contact_damage function, using scrolling data
546-- no, that won't help because the player has already moved before the function runs
547-- try just ignoring contact with dead enemies in the contact_damage function and doing it in the structure collision checks
548-- make it faster and nicer by checking if a given enemy is dead each step through the loop before doing collision
549---- try moving enemies into a separate table when they die and running checks over that table
550-- see if you can merge the structure and dead enemy tables in any sensible and temporary way
551-- maybe change the player's state to gravity when something despawns if they're not in a state where that would fuck things up-- probably only do it when they're at rest or walking
552---- try leaving the enemies where they are but adding invisible structures with the dimensions and locations of the dead enemies that are removed at the same time the enemies are
553---- try re-examining and finding the flaw causing the edge case instead of all this added infrastructure
554-- double-scrolling really is happening, it shouldn't be a problem but it probably is the problem
555-- walking shouldn't scroll the way it is, it should detect something and fix it immediately
556---- try just setting the appropriate directional collision state
557-- it works! it just leaves the player stuck if they keep holding the direction after the enemy is despawned
558---- clear the collision state if the player is next to a dead enemy that's being despawned
559-- check proximity with player.x compared to enemy.x and their respective widths - check
560-- add wiggle room of 2-4 pixels - check
561-- check that they're facing the enemy and have collision in that direction before clearing it, otherwise it'll create another edge case at some point where players can walk into walls or something - check
562-- remove extra debug text - check
563
564-- make debug information draw fully and with proper colors when the player is dead - check
565-- fix debug text coloring more/again/completely - check
566-- add a debug command to turn debug information on and off - check
567
568-- make knockback move you slightly faster than normal jumps - check
569
570-- try to fix up player.movement.walk_direction so it doesn't use nil as a meaningful value
571-- you already did, change the initialization and documentation, and fix the other cases like this - check
572---- replace "none" values with false, change checks to if not var then func() else check var
573---- fix your attempt at fixing up walk direction
574-- the original issue is fixed, the sticking point now is structure collision
575-- fixed up walk direction, but now there's a false = false situation, when you have to compare some values things get hairy
576-- maybe just make unique names for each state corresponding to "none", and then when comparison or copying is really needed, have an intermediary that cleans the data
577-- just change it back, but keep this kind of clashing in mind - check
578---- fix walking so it stops the player from continuously walking into a structure (structure collision)
579-- structure collisions are being set, why aren't they working?
580-- check if the code is checking for collisions before running the walk function - fixed
581
582---- fix up stun heights so jumping off the second step of either ridge stuns you and jumping off the first step doesn't, regardless of powerup - check, and made second step on lower ridge not stun-- but it's inconsistent
583-- stun height and damage height are being calculated before collisions are resolved, fix this
584-- actually they're not, it's just displayed first
585---- there's some other reason it's incosistent and sometimes causes damage or stun before the threshhold
586-- print the height that was used to make the determination
587-- this gives inconsistent jump heights, even though the top of the arc is reported as being the same
588---- check the math between reported jump top and (later-) reported jump landing point
589-- see if it is somehow checking based on falling into structures instead of checking after collision resolution or if you can figure out anything else from the relation between them
590-- also check reported vs. actual top of arc and its relation to other points if that doesn't help
591---- the fall distance is in fact the distance from the top of the arc to the pre-correction landing, even though it's calculated after the correction-- it's not!
592-- the correction is after the check, move it already - fixed!
593
594-- mark the ends of long code blocks showing what they do - marked functions, may do branches and loops later
595
596-- make the guaranteed pause (Pause key) also unpause - check
597
598-- see if you can easily get a better "arrow" for menus
599-- triangle works, fix up horizontal placing
600-- controls, quit, every item under controls - check
601-- active analog stick, axis inversion, vertical sensitivity - check except with certain settings set certain ways
602---- still inconsistent, maybe undo, commit, redo & fix
603-- active analog stick right or disabled, axis inversion vertical or both - check
604
605
606version 0.23
607
608-- speed up lantern flicker and make it a bit more sharp, maybe also more constrained - check on speed and limits
609---- give it some randomness as to whether it gets brighter or dimmer at each change - check
610-- weight the brightness towards the middle or some other point
611---- write a random number function that takes in an upper bound, a lower bound, and a weight point
612---- have it generate a random number in the given range and then generate a new number between that number and the weight point and average the two together
613---- make a game_math module to hold this and a rounding function
614-- pseudocode for the above:
615---- if ceiling(num) = ceiling(num - 0.4999) then return ceiling(num) (because it was num.5 through num.9999, otherwise it go to the next lowest number)
616---- if floor(num) = floor(num + 0.5) then return floor(num) (because it was num.0 through num.49, otherwise it would go to the next highest number)
617---- test these
618---- the rounding works, but not any better than just math.floor(num + 0.5) which you're already using
619---- for the weighted random stuff, I can just use a random number call as an argument to another random call
620---- maybe use the other approach anyway - check
621---- check the resulting random numbers from each of the three methods - check, the weighting works!
622---- code for the different methods for reference:
623-- selected_lantern.lamp_target = love.math.random(selected_lantern.lamp_actual, 160)
624-- selected_lantern.lamp_target = ((love.math.random(selected_lantern.lamp_actual, 160) + love.math.random(selected_lantern.lamp_actual, 160) + love.math.random(selected_lantern.lamp_actual, 160) + love.math.random(selected_lantern.lamp_actual, 160)) / 4)
625-- selected_lantern.lamp_target = love.math.random(love.math.random(selected_lantern.lamp_actual, 160), selected_lantern.lamp_actual)
626-- selected_lantern.lamp_target = weighted_random(selected_lantern.lamp_actual, 160, 100)
627-- slow lantern flicker back down - check
628-- try adding in a time scaling factor - check
629
630-- make powerup indicator separate from debug line - check
631
632---- lengthen the level, including the beginning - check, mostly
633-- change the door exit points - check
634-- change door exit scrolling - check
635-- move over the first climbing part - check
636-- move over the first stairs and their platform - check
637-- lengthen the part before the second climbing part - check
638-- move over the stuff after that
639---- bridge - check
640---- stairs - check
641---- floating platform - check
642---- lantern - check, but keep thinking on it
643---- door - check
644-- lengthen the sky platform - check
645-- move over the powerup - check
646-- lengthen the part before the mandatory stairs - check
647-- lengthen the platform with the exit door - check
648-- put an enemy on the platform before the mandatory stairs - check
649-- make an extra structure after the first bridge to stop the enemy there - check
650-- move back the player a bit - check
651-- fix scrolling when going through the top door - check
652
653-- make run times in debug output use standard measurement abbreviations - check
654
655-- make the area you need to be in to get on stairs slightly wider, so when you get off you can get right back on
656---- fix the right boundary for stairs, should add double what you take away from the left boundary - check
657
658---- add that secondary background already
659-- create background - check
660-- set up data - check
661-- set up draw code, including tiling and parallax scrolling - check
662-- fix appearance
663---- too bright - temporary fix, decide whether to keep the effect it gives when going through a door - fixed
664---- too much coverage - try to squeeze in some redrawing before the deadline - check
665
666---- try drawing the existing background with a sprite batch - check, holy shit 170 FPS
667-- enemies are broken - it's a rounding issue, round when drawing and not when position fixing - same problem
668-- use nearest neighbor image filtering - fixed
669-- slow down enemies a bit - check
670-- slow down door transition - check
671
672-- fix message on keyboard use in analog stick menu - check
673
674-- let the player set stick sensitivity when sticks are disabled-- might need to reshuffle some code and states
675---- it doesn't register because the stick polling function has to check the appropriate stick to generate output
676---- put in a special case based on the current menu - check
677---- use whichever stick is pushed farther - check
678-- works with left stick vertical sensitivity only for some reason
679-- didn't change horizontal sensitivity, and forgot to switch the comparison - fixed, it works
680
681-- display the current threshhold for stick sensitivity when changing it, update until the player accepts
682---- set up a current value for stick positions in stick_poll using established logic
683-- or maybe just add in the needed logic in the display code? might be simple - nah, it would need the full logic
684-- add in the relevant spots to hold data in the controls structure - check
685-- copy the stick interpretation logic to the stick_poll function - check
686-- change the threshhold setting function to use the current intensity - check
687-- change the menu display code to display the current stick status when setting a threshhold - check!
688
689-- type up a glossary of states for controls since you just got confused by them - check, also did some renaming
690
691---- when a list box item is selected, put a left triangle to the left and add a right triangle to the right
692
693-- see if different move speeds for enemies work correctly now - check, they already did