Commit graph

1577 commits

Author SHA1 Message Date
Matt Penny e2d4631ad1 Use .sox, not .jsox for elevator_move_loop1
Effects aren't used for this sound, so .jsox is unnecessary
2024-09-09 22:07:49 -04:00
Matt Penny 2fcea7f9d2 Work on CMake conversion: material generation 2024-09-07 20:00:45 -04:00
Matt Penny ad38717b04 Update clock digit image name in Blend file so it previews properly 2024-09-06 01:37:47 -04:00
Matt Penny b999e139fa Work on CMake conversion: VPK extract and texture conversion 2024-09-06 01:26:08 -04:00
Matt Penny 2f1171fccf Stitch together clock digits in .ims file, not makefile
Simplifies asset conversion for CMake transition
2024-09-06 01:26:08 -04:00
Matt Penny 12f1332d9d Copy awe_total via .ims file, not makefile
Simplifies asset conversion for CMake transition
2024-09-06 01:26:08 -04:00
Matt Penny dfe9a39d7a Use latest Ubuntu LTS (24.04) for docker build and fix git permission issues 2024-08-28 19:48:50 -04:00
Matt Penny bf6a5a643f Support building from source code archive (#85)
Save git describe output on `git archive` and fall back to saved
output for version number if building outside of a git repo.
2024-08-26 16:36:12 -04:00
Petteri Valkonen d757d8645a
Add missing hyphen to Docker image make command argument (#86) 2024-08-25 19:09:39 -04:00
Matt Penny 9e1dfa338b Fix stair lighting in chamber 14 2024-08-22 20:12:46 -04:00
Matt Penny 769f3aa4f1 Fix chamber 13 end room doorway bounds
Prevents seeing out of bounds.
2024-08-22 20:03:33 -04:00
Matt Penny 34a9a93997 Fix mesh gap in chamber 15 hazard hallway ceiling 2024-08-22 17:15:55 -04:00
Matt Penny 1e05c88d43 Check in missing QR code image 2024-08-20 22:52:51 -04:00
Matt Penny 429dc0bd91 Add version text to landing menus
If the current commit has a tag, the tag name is used as the version.
Otherwise, the short hash of the current commit is used.
2024-08-20 21:05:29 -04:00
Matt Penny da028cd405 Update credits with link to current repo 2024-08-20 19:59:36 -04:00
Matt Penny 0016834245 Constrain visible rooms in chamber 15 problem areas 2024-08-20 19:57:42 -04:00
Matt Penny ab56ffb380 Add can_see argument to whitelist visible rooms
Useful for room shapes which cannot be handled by standard visibility
checks.

Normally this can be addressed with additional rooms and doorways, but
sometimes a room is required to be a complex shape (for example, to
accomodate animated static geometry).

These instances should be few and far between, so leaving this as an
opt-in feature that can be used during level authoring.
2024-08-20 19:52:50 -04:00
Matt Penny d5a1c302b1 Fix portal indicator HUD not working through multiple doorways
* Doorway normals now always point toward room A. This was intended
  and code was written for it, but typos prevented it from working.
* Consistent doorway directions allowed resurrection of previous
  collisionSceneRaycastDoorways() implementation
2024-08-20 17:37:29 -04:00
Matt Penny e85ac2fdf1 Fix side room door visibility issue in chamber 15, and enforce one doorway per room pair
More doorways can be supported but it complicates the culling logic. It's
easy to work around so leaving unsupported for simplicity until needed.
2024-08-19 17:19:59 -04:00
Matt Penny c3f3e5e191 Update development_progress.md with chapter 15 progress
This document is for general progress, not 100% completion, so checking
off chamber 15.

All chambers still need some bugfixes/polish.
2024-08-13 00:08:13 -04:00
Matt Penny 21a120846a Clarify vpk directory structure in add_vpk_here.md 2024-08-13 00:07:48 -04:00
Matt Penny d6af2ebb46 Clarify @doorway example in docs 2024-08-04 10:49:21 -04:00
Matt Penny c9f1ed96fe Use proper window/doorframe material in chamber 14 (plasticwall003a) 2024-08-04 10:41:27 -04:00
Matt Penny 7c213b7199 Basic chamber 15 lighting 2024-08-04 10:41:16 -04:00
Matt Penny 906afdd792 Enable vertex colors for metal_modular_floor_001 and plasticwall003a 2024-08-04 09:28:16 -04:00
Matt Penny 23464eea7c Moving platforms in chamber 15 hallway 2024-07-29 22:26:51 -04:00
Matt Penny 56c14389a9 Fix graphical issues with chamber 15 rotated portals and ball trap (#73) 2024-07-26 18:48:03 -04:00
Matt Penny 9822ffeac9 Support precise (i.e., rotated) culling of static geometry (#73)
Standard culling is quite coarse, for performance reasons:
* Only uses axis-aligned bounding boxes
* One visible object in a BVH node will make all others in the same node visible

These properties allow the bounding boxes of rotated objects to clip through
the back of portals to be considered visible, causing improper rendering.

This commit introduces a new optional argument for `@static` level
objects: `precise_culling`. Static geometry marked for precise culling
will be culled based on its exact (i.e., rotated) bounding box, in the
same way dynamic/animated geometry is.

Precise culling is more expensive than standard culling so it is opt-in.
It is intended only for the few situations that can hit the edge cases
described above.
2024-07-26 18:47:58 -04:00
Matt Penny 4d95d53ad3 Fix floor extending under divider in chamber 15 2024-07-25 20:40:27 -04:00
Matt Penny bc13a1cc6c Fix activated ball catcher being obscured in chamber 14 2024-07-23 21:34:52 -04:00
Matt Penny 3a2efced6d Fix crash on savefile load if player is far from start
The player's bounding box was not reinitialized on save file load,
causing the collision detection area to include the space between the
level's starting point and their current position.

In large levels (i.e., chamber 15) when far away from the start, this
caused the internal collider limit to be exceeded resulting in a buffer
overflow and crash.
2024-07-19 20:13:17 -04:00
Matt Penny f67ba7a5cc Fix activated ball catcher save file serialization
Previously, all activated catchers would reference the same ball
when saving, causing position and signal issues if the referenced
ball's launcher was in use.

Fixes glitchy ball movement in chamber 15 final room.
2024-07-17 23:46:31 -04:00
Matt Penny ef179ec553 Finishing touches on friction and jump boost 2024-07-13 02:20:01 -04:00
Matt Penny 3bbb62b1c8 Fix UV map on floor in chamber 15 room 5 2024-07-13 02:17:26 -04:00
Matt Penny 9e34f89ccc Push objects out of portals when forcibly closed
E.g., cutscenes, player death, fizzled, touched by moving surface, etc.

Keeps objects in bounds.
2024-07-07 20:47:14 -04:00
Matt Penny 2eb881b59f Better limit jump boost speed 2024-07-07 20:23:57 -04:00
Matt Penny 1211edb383 Forward/backward velocity boost on jump (#8) 2024-07-05 00:28:16 -04:00
Matt Penny 5fa1a4c4a1 Push objects out of portal when opposite one changes
Previously only pushed out when current portal changed.
2024-07-04 00:26:51 -04:00
Matt Penny e6fde28d16 Make fling opposition check axis-aligned
The previous implementation handled flings in any horizontal direction.
However, this allowed moving against flings by first moving slightly
perpendicularily to them. In other words, the fling direction could be
changed midair allowing free movement relative to the original direction.

One way to solve this is by saving the initial fling direction (direction
of travel while in air and FLING_THRESHOLD_VEL is reached). For simplicity
and to minimize errors, just consider movement axes individually. The
game's levels only permit axis-aligned flings anyway.
2024-07-03 23:09:18 -04:00
Matt Penny c521da5f0c Prevent moving against flings 2024-07-03 22:29:56 -04:00
Matt Penny 71f92e21c2 Enable room 3 fizzler in chamber 15 (final fizzler)
Fling is now much easier to perform after movement physics changes.
2024-07-03 22:07:50 -04:00
Matt Penny 847d9e8d70
Better match movement physics of original game (#77)
Source-like acceleration, friction, air control, and portal funneling.

Also improve anchoring to moving platforms.
2024-06-28 16:17:49 -04:00
Matt Penny c8ab62103e Update player position when dead
Fixes getting stuck in the air on death. Only velocity is applied -
player input is disabled..
2024-06-18 00:33:56 -04:00
Matt Penny 872c436be2 Refactored and simplified more player update logic
* Moved player sound code from scene.c to player.c
* Moved platform position/velocity update to playerUpdateFooting(),
  which is where the other related platform code is
* Moved player footstep state update to playerUpdateFooting()
* Created separate function for processing player input
* Created separate functions for movement and acceleration
* Removed some redundant code

With acceleration now separate, movement physics are ready to be
updated.
2024-06-17 23:52:59 -04:00
Matt Penny 7964ae17db Update collision docs and clarify player roll correction edge case in comment 2024-06-12 02:09:47 -04:00
Matt Penny 925e66b20a Fix some portal raycast and player footing collision
* Doors correctly block portals again
* Elevator floors once again collide with portals and the player
* Buttons and switches now block portals
2024-06-12 01:47:23 -04:00
Matt Penny 09c4bb99ea Refactor player camera update code into separate function
Work toward simplifying playerUpdate() to make it easier to maintain.
In the short term, this will help for updating movement physics.
2024-06-12 00:08:41 -04:00
Matt Penny 8276c3876b Fix chamber 15 switch room 2 wall length 2024-06-11 22:13:42 -04:00
Matt Penny 72cbe59e1b Fix chamber 15 angled wall UV rotation 2024-06-08 23:50:30 -04:00
Matt Penny 473fa00efe Enable room 7 fizzler in chamber 15
Keep last fizzler disabled until movement physics are fixed, otherwise
getting past it is quite difficult.
2024-06-08 23:23:25 -04:00