mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-22 12:05:11 +00:00
ad5e7402fc
* First attempt First attempt at having other Mario objects create ripples. Works very inconsistently, the position of players not currently interacting with the painting seems to influence whether the ripples will work or not * Moved nearest mario code from geo_painting_update Instead of using the nearest mario object for geo_painting_update, I use it in painting.c functions that called for gPaintingMarioXYZPos, substituting the nearest Mario object's position instead, as well as using it for the last floor mario was over. This method still isn't quite perfect and there's a few more things I'd like to fix/change. 1. If a Mario is closer to the painting (perhaps right against the middle) other Mario's can't trigger ripplings at all unless they get closer than the closest Mario 2. I would like for all Entry and Exit ripples to interrupt each other, meaning if multiple Marios jump in, each one triggers a ripple one after the other 3. I want to hear the other player's exit sounds * Add currPositionValid Sets currPositionValid to false for NetworkPlayers who are connected, who changed levels to a level different from the local player, and who are not the local player when the local player changes levels. * Set currPositionValid Sets currPositionValid to false for update packets that don't match local area. Sets it to true for update packets that do match local area. * Send change area/level immediately Adds a function network_on_loaded_area2() which only sends a change level or area event and doesn't clear the sync ids. Calls this function almost immediately as opposed to waiting for LOADING_LEVEL_THRESHOLD frames * Add currPositionValid to NetworkPlayer currPositionValid (which is used by painting.c to determine if a player should be considered for the closest player to the painting) is a variable that tells you if a network player's marioObj has a position which can be relied upon as a valid position for that player. network_player_update_course_level sets it to false for a network player if the new location does not match the local player's location. network_receive_player sets it to false if a network player's update is from a different location than the local player, but sets it to TRUE if the update is from the same location. update_course does NOT set it to true, because the location is not sure to be valid until we've received a location from the player with the right location attached to it. * Use currValidPosition correctly Uses currValidPosition correctly, also add debug text for seeing closest player to painting. * fix merge * Fix merge * Verboser logging and invpos on enter * Multi collision arrays * Removed nearest code, added comments * Added simultaneous ripples on one painting * Added commented Gamepad from Background line * Removed debug logging * renamed secondary network_on_loaded function * Added early multiple paintings rippling at once * Added multiple paintings rippling simultaneously Co-authored-by: djoslin0 <djoslin0@users.noreply.github.com> |
||
---|---|---|
.github/ISSUE_TEMPLATE | ||
actors | ||
assets | ||
autogen | ||
bin | ||
data | ||
developer | ||
docs/lua | ||
doxygen | ||
include | ||
levels | ||
lib | ||
misc | ||
mods | ||
res | ||
sound | ||
src | ||
text | ||
textures | ||
tools | ||
.clang-format | ||
.clang-tidy | ||
.gitattributes | ||
.gitignore | ||
asmdiff.jp.sh | ||
assets.json | ||
c2obj.py | ||
CHANGES | ||
charmap.txt | ||
charmap_menu.txt | ||
credits.txt | ||
diff.py | ||
diff_settings.py | ||
Dockerfile | ||
Doxyfile | ||
dynos.mk | ||
extract_assets.py | ||
first-diff.py | ||
format.sh | ||
Jenkinsfile | ||
Makefile | ||
Makefile.split | ||
obj2c.py | ||
pisetup.sh | ||
README.md | ||
README_es_ES.md | ||
README_pt_BR.md | ||
README_zh_CN.md | ||
rename_sym.sh | ||
SAVE_FORMAT.MD | ||
sm64.eu.sha1 | ||
sm64.jp.sha1 | ||
sm64.ld | ||
sm64.sh.sha1 | ||
sm64.us.sha1 | ||
undefined_syms.txt | ||
util.mk |
sm64ex-coop
Online multiplayer mod for SM64 that synchronizes all entities and every level for multiple players. Fork of sm64pc/sm64ex.
Feel free to report bugs and contribute, but remember, there must be no upload of any copyrighted asset.
Run ./extract_assets.py --clean && make clean
or make distclean
to remove ROM-originated content.
How to Play
Instructions on how to play are available on the wiki.
- The easiest way is to download coop-compiler
Goal (accomplished)
Create a mod for the PC port where multiple people can play online together.
Unlike previous online attempts, this one synchronized enemies and events. This allows players to be interacting with the same world at the same time.