|
|
0a9ab389c2
|
fix bug in tracing left jump path: we should consider rightmost x coordinate from enemy (which we now do)
|
2025-02-01 01:33:26 +00:00 |
|
|
|
9e9675aaab
|
decrease memory consumption of quad tree by refraining from storing bounding box metadata (except for the global root which stores the width and height)
|
2025-02-01 01:03:57 +00:00 |
|
|
|
73aeeb5301
|
remove timing print statements from game-type.sml
|
2025-01-31 06:26:09 +00:00 |
|
|
|
547b5bac97
|
use an immutable vector (always of length 4) for representing quad tree's internal nodes
|
2025-01-31 06:24:51 +00:00 |
|
|
|
76c5f9d662
|
change maxSize of quad tree's leaf nodes (from a max length of 3 to a max length of 9)
|
2025-01-31 06:01:02 +00:00 |
|
|
|
e23e2f0997
|
precompute graph to be used for dijkstra's algorithm, resulting in CPU usage that never exceed 7/home/humza/Downloads/sml/oh-my-stars/fcore/path-finding.sml with 5 enemies and eliminating lag
|
2025-01-31 04:32:53 +00:00 |
|
|
|
f3a0b2bc81
|
write code for new loop implementation of dijkstra's algorithm, which uses a precomputed graphy; however, this is not used yet as we need to add the graph to the game type first, and pass it along with other parameters, down to the path-finding.sml function
|
2025-01-31 04:10:58 +00:00 |
|
|
|
a24ada0f37
|
implement code for precomputing reachable platforms so it can be reused (but haven't modified implementation of Dijkstra's algorithm to use it, and haven't added it to game type yet)
|
2025-01-31 03:46:28 +00:00 |
|
|
|
0cdd81189c
|
implement function to trace left jump, thereby completing 'build-graph.sml' (and fix a bug in trace-jump.sml where a left-tracing function mistakenly made a tail call to a right-tracing function)
|
2025-01-31 00:35:36 +00:00 |
|
|
|
70f04c2e92
|
implement function in build-graph.sml to trace path of right jump to detect reachable platforms (different from deciding how enemy should move to next platform in trace-jump.sml)
|
2025-01-31 00:18:17 +00:00 |
|
|
|
2103a8e8ac
|
implement quad tree folder for building graph horizontally (but still need to trace the left/right paths)
|
2025-01-30 13:25:39 +00:00 |
|
|
|
bbb957f016
|
get path-finding.sml to use function in build-graph.sml to find reachable platforms, and remove now-dead code from path-finding.sml
|
2025-01-30 13:06:32 +00:00 |
|
|
|
755e5da7f7
|
fix bug in bin-vec.sml 'deleteMin' function: we previously deleted two elements, but we are supposed to delete one, and now this is fixed
|
2025-01-30 12:55:36 +00:00 |
|
|
|
29389d3561
|
try coding a level
|
2025-01-30 08:34:38 +00:00 |
|
|
|
859414035d
|
when tracing left jump, consider the enemy's 'x' coordinate to be the leftmost point of the enemy
|
2025-01-30 08:21:15 +00:00 |
|
|
|
73b4e607ae
|
delete function to getPlatformBelowPlayer because it is no longer need now that player stores platID (but still keep function to get platform below enemy as that is still useful)
|
2025-01-30 00:11:01 +00:00 |
|
|
|
2446f3ea14
|
in trace-jump.sml, begin descent depending on enemy's size
|
2025-01-29 23:51:02 +00:00 |
|
|
|
d55126b52a
|
implement left jump/left drop tracing in trace-jump.sml, and verified that it works
|
2025-01-29 23:04:28 +00:00 |
|
|
|
89abab31ab
|
implement function to trace drop (while moving right)
|
2025-01-29 19:35:40 +00:00 |
|
|
|
97a638b54d
|
from TraceJump.traceRightJumpAscent function, check (after we have reached ascent and if we have still not found nextPlatID in path) if we can find nextPlatID if we trace the descent path after having reached the ascent
|
2025-01-29 19:24:03 +00:00 |
|
|
|
fac7a81767
|
trace path we can (move right + jump) using quad tree, as it is easier to implement than a pure math based approach
|
2025-01-29 19:12:24 +00:00 |
|
|
|
a6b04ff98e
|
implement functor to fold over quad tree
|
2025-01-29 07:34:48 +00:00 |
|
|
|
7138a05cd3
|
move quad tree helper functions which are useful in quad-tree.sml and will be useful in quad-tree-fold.sml, to quad-tree-type.sml, so quad-tree.sml only exports public API suitable for users
|
2025-01-29 07:07:54 +00:00 |
|
|
|
abeff178c6
|
fix bug of enemy occasionally dropping off platform occasionally (incorrect int comparison in getMoveLeftPatches function)
|
2025-01-29 02:56:21 +00:00 |
|
|
|
e2f5f18089
|
when enemy jumps or drops without needing to move horizontally to reach platform, tell enemy to stay still so we don't risk falling off platform
|
2025-01-29 02:23:44 +00:00 |
|
|
|
296e120d12
|
delete redundant case statement in enemy-behaviour.sml, where bestPath is empty (same case expression is repeated in startPatrolPatches function so doesn't need to be repeated)
|
2025-01-29 00:45:49 +00:00 |
|
|
|
5d590c84a9
|
add code for FOLLOW_SLIME to patrol in the same direction the player is in, when slime reaches a new platform.
|
2025-01-29 00:22:48 +00:00 |
|
|
|
3ced9c8d1d
|
restore ability to drop below platform in physics.sml
|
2025-01-27 23:55:15 +00:00 |
|
|
|
9b7d7a1396
|
fix compile errors after previous commit (which involved reimplementing the quad tree to eliminate the possibility of a class of bugs I was experiencing; the problem was that the quad bounds were being passed recursively in different functions, but the long argument list in these functions made it difficult to see where the mismatch was)
|
2025-01-27 23:41:59 +00:00 |
|
|
|
6369be21fa
|
tentatively refactor quad tree to make it more succinct + eliminate a class of potential bugs (passing wrong quad values through recursion)
|
2025-01-27 23:27:52 +00:00 |
|
|
|
42b42220d0
|
fully restructure quad tree from one that holds overlapping items in parent nodes, into one that holds overlapping items in each quadrant instead
|
2025-01-27 06:04:52 +00:00 |
|
|
|
b7a609b447
|
fix quad tree queries (queries should not choose only one quadrant because they may validly visit two or more quadrants if query covers two leaf nodes), resulting in regressions. Fix one regression: reimplement wall patches (this time also optimised because there is no intgermediary list)
|
2025-01-27 04:52:49 +00:00 |
|
|
|
1c4ff62744
|
small amendment to getPatrolPatches: make sure enemy is always fully on platform while patrolling (does not go off edge) as this is more predictable + looks better
|
2025-01-26 23:32:20 +00:00 |
|
|
|
8f7bb3bb16
|
when FOLLOW_SLIME has no following to do, call patrol patches so that it at least patrols area
|
2025-01-26 14:22:27 +00:00 |
|
|
|
bb0cf6bd33
|
better path landing implemented, making sure enemy fully overlaps platform they are trying to reach, and enemy's jump is clearer (before, when enemy landed on platform, they went straight to the top of the platform, but now they jump a little over the platform which looks clearer)
|
2025-01-26 13:23:20 +00:00 |
|
|
|
c25afb6f03
|
small amendment do getMoveLeftPatches (change how yDiff is calculated, (platY - ey) instead of (ey - platY)
|
2025-01-25 19:43:56 +00:00 |
|
|
|
3885cc5cbc
|
make path incentivisation less aggressive (prefer reaching goal by going through fewer platforms if possible).
|
2025-01-25 18:36:30 +00:00 |
|
|
|
6c3621cb3f
|
decrease cost of straight vertical and straight horizontal paths compared to diagonal ones, to make it look like enemy is travelling a more coherent path
|
2025-01-25 13:55:58 +00:00 |
|
|
|
616d97e6fd
|
verify that getMoveRightPatches works as intended through manual testing and platform placement adjustments
|
2025-01-25 09:53:54 +00:00 |
|
|
|
4cf1afb8cd
|
add some additional platforms to game-type.sml for better testing
|
2025-01-25 09:26:30 +00:00 |
|
|
|
01d9c2bd47
|
refactor physics.sml so that we always set plat ID of player/enemy, when player or enemy stands on new platform, and make changes to enemy-behaviour.sml in calculation to jump to the top-right after testing
|
2025-01-25 09:17:58 +00:00 |
|
|
|
c7ed5d3cce
|
refactor player and enemy records to have a platID field (representing the last platform that player or enemy stood on), and fix resulting compile errors
|
2025-01-25 08:41:42 +00:00 |
|
|
|
c8f56f3077
|
attempt at coding functionality to jump/drop when platform is to the right and not overlapping with current platform
|
2025-01-25 08:34:05 +00:00 |
|
|
|
d8af1da6de
|
prevent subscript error from occurring by validating eID and pID are both different from ~1, as the PathFinding.start function expects this to be the case
|
2025-01-25 00:48:56 +00:00 |
|
|
|
0be8e0dc5f
|
progress coding function to make FOLLOW_SLIME go rightwards if next platform is towards the right
|
2025-01-25 00:23:30 +00:00 |
|
|
|
7a5517571d
|
add functionality for enemy to walk to appropriate position if next platform is below current one, but only partially overlapping with current platform so enemy will not reach it if they drop down from current position
|
2025-01-24 22:51:20 +00:00 |
|
|
|
5e6a831add
|
write 'getJumpPatches' function in a slightly less redundant way
|
2025-01-24 09:48:57 +00:00 |
|
|
|
d07b0a35ca
|
amend minor regression bug: in 'canJump' function, check to make sure prevPlatform is lower than nextPlatform
|
2025-01-24 02:12:04 +00:00 |
|
|
|
02d94fc3c7
|
handle not-so-uncommon edge case: when platform enemy is on can be jumped from to reach next platform, but enemy is not in a position to jump (top platform slightly overlaps bottom platform in x-axis), make enemy walk left/right first so enemy reaches point where it is possible to jump from
|
2025-01-24 02:09:20 +00:00 |
|
|
|
e644160e38
|
enemy dropping below platform (without any bugs) is fully implemented now
|
2025-01-23 01:06:16 +00:00 |
|