@hytopia.com/examples 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai-agents/package.json +2 -2
- package/big-world/package.json +2 -2
- package/block-entity/package.json +2 -2
- package/child-entity/package.json +2 -2
- package/custom-ui/package.json +2 -2
- package/entity-animations/package.json +2 -2
- package/entity-controller/package.json +2 -2
- package/entity-spawn/package.json +2 -2
- package/frontiers-rpg-game/assets/maps/{city.json → stalkhaven.json} +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-brute/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-brute/rodent-brute-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-brute/rodent-brute-named-nodes.gltf +4634 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-brute/rodent-brute.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-brute/rodent-brute.gltf +3322 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-brute/rodent-brute.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-ranger/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-ranger/rodent-ranger-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-ranger/rodent-ranger-named-nodes.gltf +4057 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-ranger/rodent-ranger.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-ranger/rodent-ranger.gltf +3084 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-ranger/rodent-ranger.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-spellcaster/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-spellcaster/rodent-spellcaster-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-spellcaster/rodent-spellcaster-named-nodes.gltf +3562 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-spellcaster/rodent-spellcaster.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-spellcaster/rodent-spellcaster.gltf +2577 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-spellcaster/rodent-spellcaster.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-warrior/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-warrior/rodent-warrior-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-warrior/rodent-warrior-named-nodes.gltf +3699 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-warrior/rodent-warrior.bin +0 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-warrior/rodent-warrior.gltf +2721 -0
- package/frontiers-rpg-game/assets/models/enemies/.optimized/rodent-warrior/rodent-warrior.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/enemies/rodent-brute.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/rodent-ranger.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/rodent-spellcaster.gltf +1 -0
- package/frontiers-rpg-game/assets/models/enemies/rodent-warrior.gltf +1 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/clouds-test/clouds-test-named-nodes.glb +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/clouds-test/clouds-test.glb +0 -0
- package/frontiers-rpg-game/assets/models/environment/.optimized/clouds-test/clouds-test.glb.md5 +1 -0
- package/frontiers-rpg-game/assets/models/environment/clouds-test.glb +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/adventurer/adventurer-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/adventurer/adventurer-named-nodes.gltf +5390 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/adventurer/adventurer.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/adventurer/adventurer.gltf +1752 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/adventurer/adventurer.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/adventurer/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/auctioneer/auctioneer-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/auctioneer/auctioneer-named-nodes.gltf +3049 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/auctioneer/auctioneer.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/auctioneer/auctioneer.gltf +1647 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/auctioneer/auctioneer.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/auctioneer/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/banker/banker-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/banker/banker-named-nodes.gltf +3120 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/banker/banker.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/banker/banker.gltf +1415 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/banker/banker.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/banker/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/blacksmith/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/blacksmith/blacksmith-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/blacksmith/blacksmith-named-nodes.gltf +2830 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/blacksmith/blacksmith.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/blacksmith/blacksmith.gltf +1076 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/blacksmith/blacksmith.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/cook/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/cook/cook-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/cook/cook-named-nodes.gltf +2526 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/cook/cook.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/cook/cook.gltf +1329 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/cook/cook.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer/farmer-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer/farmer-named-nodes.gltf +3609 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer/farmer.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer/farmer.gltf +1914 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer/farmer.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer2/baseColor_1.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer2/baseColor_2.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer2/farmer2-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer2/farmer2-named-nodes.gltf +3609 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer2/farmer2.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer2/farmer2.gltf +1946 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer2/farmer2.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer3/baseColor_1.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer3/baseColor_2.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer3/farmer3-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer3/farmer3-named-nodes.gltf +4296 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer3/farmer3.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer3/farmer3.gltf +1836 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/farmer3/farmer3.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/fisherman/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/fisherman/fisherman-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/fisherman/fisherman-named-nodes.gltf +3444 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/fisherman/fisherman.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/fisherman/fisherman.gltf +1708 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/fisherman/fisherman.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/hunter/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/hunter/hunter-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/hunter/hunter-named-nodes.gltf +3825 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/hunter/hunter.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/hunter/hunter.gltf +1740 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/hunter/hunter.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/king/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/king/king-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/king/king-named-nodes.gltf +3905 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/king/king.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/king/king.gltf +1560 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/king/king.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/knight/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/knight/knight-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/knight/knight-named-nodes.gltf +4313 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/knight/knight.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/knight/knight.gltf +2706 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/knight/knight.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/knight-commander/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/knight-commander/knight-commander-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/knight-commander/knight-commander-named-nodes.gltf +3761 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/knight-commander/knight-commander.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/knight-commander/knight-commander.gltf +2023 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/knight-commander/knight-commander.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/librarian/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/librarian/librarian-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/librarian/librarian-named-nodes.gltf +4109 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/librarian/librarian.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/librarian/librarian.gltf +1562 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/librarian/librarian.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/lumberjack/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/lumberjack/lumberjack-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/lumberjack/lumberjack-named-nodes.gltf +3259 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/lumberjack/lumberjack.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/lumberjack/lumberjack.gltf +1615 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/lumberjack/lumberjack.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mage/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mage/mage-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mage/mage-named-nodes.gltf +4417 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mage/mage.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mage/mage.gltf +1766 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mage/mage.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mechanic/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mechanic/mechanic-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mechanic/mechanic-named-nodes.gltf +4322 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mechanic/mechanic.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mechanic/mechanic.gltf +1647 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mechanic/mechanic.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/merchant/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/merchant/merchant-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/merchant/merchant-named-nodes.gltf +4109 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/merchant/merchant.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/merchant/merchant.gltf +1562 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/merchant/merchant.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner/miner-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner/miner-named-nodes.gltf +4579 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner/miner.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner/miner.gltf +1790 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner/miner.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner2/baseColor_1.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner2/baseColor_2.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner2/miner2-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner2/miner2-named-nodes.gltf +4836 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner2/miner2.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner2/miner2.gltf +1871 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner2/miner2.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner3/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner3/miner3-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner3/miner3-named-nodes.gltf +4532 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner3/miner3.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner3/miner3.gltf +1748 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/miner3/miner3.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-boy/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-boy/mushroom-boy-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-boy/mushroom-boy-named-nodes.gltf +2164 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-boy/mushroom-boy.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-boy/mushroom-boy.gltf +1623 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-boy/mushroom-boy.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-elder/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-elder/mushroom-elder-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-elder/mushroom-elder-named-nodes.gltf +2438 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-elder/mushroom-elder.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-elder/mushroom-elder.gltf +1407 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-elder/mushroom-elder.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-knight/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-knight/mushroom-knight-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-knight/mushroom-knight-named-nodes.gltf +2844 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-knight/mushroom-knight.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-knight/mushroom-knight.gltf +1500 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-knight/mushroom-knight.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-man/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-man/mushroom-man-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-man/mushroom-man-named-nodes.gltf +2376 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-man/mushroom-man.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-man/mushroom-man.gltf +1506 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/mushroom-man/mushroom-man.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/repairman/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/repairman/repairman-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/repairman/repairman-named-nodes.gltf +2872 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/repairman/repairman.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/repairman/repairman.gltf +1582 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/repairman/repairman.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/villager/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/villager/villager-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/villager/villager-named-nodes.gltf +2530 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/villager/villager.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/villager/villager.gltf +1503 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/villager/villager.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/witch/baseColor.png +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/witch/witch-named-nodes.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/witch/witch-named-nodes.gltf +4015 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/witch/witch.bin +0 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/witch/witch.gltf +1381 -0
- package/frontiers-rpg-game/assets/models/npcs/.optimized/witch/witch.gltf.md5 +1 -0
- package/frontiers-rpg-game/assets/models/npcs/adventurer.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/auctioneer.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/banker.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/blacksmith.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/cook.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/farmer.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/farmer2.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/farmer3.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/fisherman.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/hunter.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/king.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/knight-commander.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/knight.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/lumberjack.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/mage.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/mechanic.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/merchant.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/miner.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/miner2.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/miner3.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/mushroom-boy.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/mushroom-elder.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/mushroom-knight.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/mushroom-man.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/repairman.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/villager.gltf +1 -0
- package/frontiers-rpg-game/assets/models/npcs/witch.gltf +1 -0
- package/frontiers-rpg-game/index.ts +4 -27
- package/frontiers-rpg-game/package.json +2 -2
- package/frontiers-rpg-game/src/GameClock.ts +96 -0
- package/frontiers-rpg-game/src/GameManager.ts +30 -0
- package/frontiers-rpg-game/src/GameRegion.ts +53 -0
- package/frontiers-rpg-game/src/entities/BaseEntity.ts +103 -0
- package/frontiers-rpg-game/src/entities/npcs/AdventurerEntity.ts +13 -0
- package/frontiers-rpg-game/src/entities/npcs/BankerEntity.ts +13 -0
- package/frontiers-rpg-game/src/entities/npcs/BlacksmithEntity.ts +13 -0
- package/frontiers-rpg-game/src/entities/npcs/CapfolkElderEntity.ts +17 -0
- package/frontiers-rpg-game/src/entities/npcs/CapfolkKnightEntity.ts +17 -0
- package/frontiers-rpg-game/src/entities/npcs/CapfolkVillagerEntity.ts +17 -0
- package/frontiers-rpg-game/src/entities/npcs/FarmerEntity.ts +13 -0
- package/frontiers-rpg-game/src/entities/npcs/MerchantEntity.ts +13 -0
- package/frontiers-rpg-game/src/regions/StalkhavenRegion.ts +77 -0
- package/hole-in-wall-game/index.ts +4 -1
- package/hole-in-wall-game/package.json +2 -2
- package/hygrounds/classes/GamePlayerEntity.ts +2 -0
- package/hygrounds/package.json +2 -2
- package/lighting/package.json +2 -2
- package/mobile-controls/package.json +2 -2
- package/package.json +1 -1
- package/pathfinding/index.ts +4 -1
- package/pathfinding/package.json +2 -2
- package/payload-game/index.ts +2 -0
- package/payload-game/package.json +2 -2
- package/player-persistence/package.json +2 -2
- package/wall-dodge-game/index.ts +2 -0
- package/wall-dodge-game/package.json +2 -2
- package/world-switching/package.json +2 -2
- package/zombies-fps/classes/GamePlayerEntity.ts +2 -0
- package/zombies-fps/package.json +2 -2
- package/frontiers-rpg-game/classes/GameClock.ts +0 -166
- /package/frontiers-rpg-game/{classes/GameManager.ts → src/config.ts} +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { WorldManager } from 'hytopia';
|
|
2
|
+
import type GameRegion from './GameRegion';
|
|
3
|
+
|
|
4
|
+
// Regions
|
|
5
|
+
import StalkhavenRegion from './regions/StalkhavenRegion';
|
|
6
|
+
|
|
7
|
+
export default class GameManager {
|
|
8
|
+
public static readonly instance = new GameManager();
|
|
9
|
+
|
|
10
|
+
private _regions: Map<string, GameRegion> = new Map(); // tag -> region
|
|
11
|
+
private _startRegion: GameRegion;
|
|
12
|
+
|
|
13
|
+
public get startRegion(): GameRegion { return this._startRegion; }
|
|
14
|
+
|
|
15
|
+
public getRegion(tag: string): GameRegion | undefined {
|
|
16
|
+
return this._regions.get(tag);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public loadRegions(): void {
|
|
20
|
+
// Stalkhaven, Main City (Start)
|
|
21
|
+
const stalkhavenRegion = new StalkhavenRegion();
|
|
22
|
+
this._regions.set(stalkhavenRegion.tag!, stalkhavenRegion);
|
|
23
|
+
this._startRegion = stalkhavenRegion;
|
|
24
|
+
|
|
25
|
+
// Other regions...
|
|
26
|
+
|
|
27
|
+
// Set Stalkhaven as the region/world players automatically join when they connect to the game.
|
|
28
|
+
WorldManager.instance.setDefaultWorld(stalkhavenRegion.world);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DefaultPlayerEntity,
|
|
3
|
+
ErrorHandler,
|
|
4
|
+
Player,
|
|
5
|
+
PlayerEvent,
|
|
6
|
+
World,
|
|
7
|
+
WorldManager,
|
|
8
|
+
WorldOptions,
|
|
9
|
+
Vector3Like,
|
|
10
|
+
} from 'hytopia';
|
|
11
|
+
|
|
12
|
+
export type GameRegionOptions = {
|
|
13
|
+
spawnPoint?: Vector3Like,
|
|
14
|
+
} & Omit<WorldOptions, 'id'>;
|
|
15
|
+
|
|
16
|
+
export default class GameRegion {
|
|
17
|
+
private _isSetup: boolean = false;
|
|
18
|
+
private _spawnPoint: Vector3Like;
|
|
19
|
+
private readonly _world: World;
|
|
20
|
+
|
|
21
|
+
public constructor(options: GameRegionOptions) {
|
|
22
|
+
this._spawnPoint = options.spawnPoint ?? { x: 0, y: 10, z: 0 };
|
|
23
|
+
|
|
24
|
+
this._world = WorldManager.instance.createWorld(options);
|
|
25
|
+
this._world.on(PlayerEvent.JOINED_WORLD, ({ player }) => this._onPlayerJoin(player));
|
|
26
|
+
this._world.on(PlayerEvent.LEFT_WORLD, ({ player }) => this._onPlayerLeave(player));
|
|
27
|
+
|
|
28
|
+
this._setup();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
public get name(): string { return this._world.name; }
|
|
32
|
+
public get spawnPoint(): Vector3Like { return this._spawnPoint; }
|
|
33
|
+
public get tag(): string | undefined { return this._world.tag; }
|
|
34
|
+
public get world(): World { return this._world; }
|
|
35
|
+
|
|
36
|
+
protected _setup(): void { // intended to be overridden by subclasses
|
|
37
|
+
if (this._isSetup) {
|
|
38
|
+
return ErrorHandler.warning(`GameRegion.setup(): ${this.name} already setup.`);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
this._isSetup = true;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
protected _onPlayerJoin(player: Player) {
|
|
45
|
+
(new DefaultPlayerEntity({ player })).spawn(this._world, this._spawnPoint);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
protected _onPlayerLeave(player: Player) {
|
|
49
|
+
this._world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => {
|
|
50
|
+
entity.despawn()
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Entity,
|
|
3
|
+
EntityOptions,
|
|
4
|
+
MoveOptions,
|
|
5
|
+
PathfindingEntityController,
|
|
6
|
+
PathfindingOptions,
|
|
7
|
+
Quaternion,
|
|
8
|
+
RigidBodyType,
|
|
9
|
+
Vector3Like,
|
|
10
|
+
} from 'hytopia';
|
|
11
|
+
|
|
12
|
+
export type BaseEntityOptions = {
|
|
13
|
+
controller?: PathfindingEntityController;
|
|
14
|
+
facingAngle?: number;
|
|
15
|
+
facingPosition?: Vector3Like;
|
|
16
|
+
idleAnimations?: string[];
|
|
17
|
+
idleAnimationSpeed?: number;
|
|
18
|
+
moveAnimations?: string[];
|
|
19
|
+
moveAnimationSpeed?: number;
|
|
20
|
+
moveSpeed?: number;
|
|
21
|
+
pushable?: boolean;
|
|
22
|
+
} & EntityOptions;
|
|
23
|
+
|
|
24
|
+
export type WanderOptions = {
|
|
25
|
+
idleMinMs: number;
|
|
26
|
+
idleMaxMs: number;
|
|
27
|
+
moveOptions?: MoveOptions;
|
|
28
|
+
pathfindOptions?: PathfindingOptions;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export default class BaseEntity extends Entity {
|
|
32
|
+
private _moveSpeed: number;
|
|
33
|
+
private _wanderAccumulatorMs: number = 0;
|
|
34
|
+
|
|
35
|
+
public constructor(options: BaseEntityOptions) {
|
|
36
|
+
super({
|
|
37
|
+
...options,
|
|
38
|
+
controller: new PathfindingEntityController(),
|
|
39
|
+
rigidBodyOptions: {
|
|
40
|
+
...options.rigidBodyOptions,
|
|
41
|
+
type: RigidBodyType.DYNAMIC,
|
|
42
|
+
enabledRotations: { x: false, y: true, z: false },
|
|
43
|
+
rotation: Quaternion.fromEuler(0, options.facingAngle ?? 0, 0),
|
|
44
|
+
additionalMass: !options.pushable ? 1000 : 0,
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
this._moveSpeed = options.moveSpeed ?? 2;
|
|
49
|
+
|
|
50
|
+
this.pathfindingController.idleLoopedAnimations = options.idleAnimations ?? [];
|
|
51
|
+
this.pathfindingController.idleLoopedAnimationsSpeed = options.idleAnimationSpeed ?? undefined;
|
|
52
|
+
this.pathfindingController.moveLoopedAnimations = options.moveAnimations ?? [];
|
|
53
|
+
this.pathfindingController.moveLoopedAnimationsSpeed = options.moveAnimationSpeed ?? undefined;
|
|
54
|
+
|
|
55
|
+
if (options.facingPosition) {
|
|
56
|
+
this.pathfindingController.face(options.facingPosition, this._moveSpeed);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
public get idleAnimations(): string[] { return this.pathfindingController.idleLoopedAnimations; }
|
|
61
|
+
public get idleAnimationsSpeed(): number | undefined { return this.pathfindingController.idleLoopedAnimationsSpeed; }
|
|
62
|
+
public get moveAnimations(): string[] { return this.pathfindingController.moveLoopedAnimations; }
|
|
63
|
+
public get moveAnimationsSpeed(): number | undefined { return this.pathfindingController.moveLoopedAnimationsSpeed; }
|
|
64
|
+
public get moveSpeed(): number { return this._moveSpeed; }
|
|
65
|
+
public get pathfindingController(): PathfindingEntityController { return this.controller as PathfindingEntityController; }
|
|
66
|
+
|
|
67
|
+
public faceTowards(target: Vector3Like, faceSpeed: number) {
|
|
68
|
+
this.pathfindingController.face(target, faceSpeed);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
public jump(height: number) {
|
|
72
|
+
this.pathfindingController.jump(height);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
public pathfindTo(target: Vector3Like, speed: number = this._moveSpeed, options?: PathfindingOptions) {
|
|
76
|
+
this.pathfindingController.pathfind(target, speed, options);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
public moveTo(target: Vector3Like, speed: number = this._moveSpeed, options?: MoveOptions) {
|
|
80
|
+
this.pathfindingController.move(target, speed, options);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public stopMoving() {
|
|
84
|
+
// reset & cancels all movements.
|
|
85
|
+
this.pathfindingController.pathfind(this.position, 1);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
public wander(targets: Vector3Like[], speed: number = this._moveSpeed, options?: WanderOptions) {
|
|
89
|
+
const randomIndex = Math.floor(Math.random() * targets.length);
|
|
90
|
+
const target = targets[randomIndex];
|
|
91
|
+
this.pathfindTo(target, speed, {
|
|
92
|
+
debug: true,
|
|
93
|
+
maxFall: 5,
|
|
94
|
+
maxJump: 0,
|
|
95
|
+
maxOpenSetIterations: 400,
|
|
96
|
+
waypointTimeoutMs: 500,
|
|
97
|
+
pathfindCompleteCallback: () => {
|
|
98
|
+
setTimeout(() => this.wander(targets, speed, options), 2000);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
console.log('wandering to', target);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import BaseEntity, { BaseEntityOptions } from '../BaseEntity';
|
|
2
|
+
|
|
3
|
+
export default class AdventurerEntity extends BaseEntity {
|
|
4
|
+
public constructor(options?: BaseEntityOptions) {
|
|
5
|
+
super({
|
|
6
|
+
idleAnimations: [ 'idle' ],
|
|
7
|
+
modelUri: 'models/npcs/adventurer.gltf',
|
|
8
|
+
modelScale: 0.75,
|
|
9
|
+
name: 'Adventurer',
|
|
10
|
+
...options,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import BaseEntity, { BaseEntityOptions } from '../BaseEntity';
|
|
2
|
+
|
|
3
|
+
export default class BankerEntity extends BaseEntity {
|
|
4
|
+
public constructor(options?: BaseEntityOptions) {
|
|
5
|
+
super({
|
|
6
|
+
idleAnimations: [ 'idle' ],
|
|
7
|
+
modelUri: 'models/npcs/banker.gltf',
|
|
8
|
+
modelScale: 0.75,
|
|
9
|
+
name: 'Banker',
|
|
10
|
+
...options,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import BaseEntity, { BaseEntityOptions } from '../BaseEntity';
|
|
2
|
+
|
|
3
|
+
export default class BlacksmithEntity extends BaseEntity {
|
|
4
|
+
public constructor(options?: BaseEntityOptions) {
|
|
5
|
+
super({
|
|
6
|
+
idleAnimations: [ 'idle' ],
|
|
7
|
+
modelUri: 'models/npcs/blacksmith.gltf',
|
|
8
|
+
modelScale: 0.75,
|
|
9
|
+
name: 'Blacksmith',
|
|
10
|
+
...options,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import BaseEntity, { BaseEntityOptions } from '../BaseEntity';
|
|
2
|
+
|
|
3
|
+
export default class CapfolkElderEntity extends BaseEntity {
|
|
4
|
+
public constructor(options?: BaseEntityOptions) {
|
|
5
|
+
super({
|
|
6
|
+
idleAnimations: [ 'idle' ],
|
|
7
|
+
modelUri: 'models/npcs/mushroom-elder.gltf',
|
|
8
|
+
modelScale: 0.6,
|
|
9
|
+
moveAnimations: [ 'walk' ],
|
|
10
|
+
moveAnimationSpeed: 2,
|
|
11
|
+
moveSpeed: 3,
|
|
12
|
+
name: 'Capfolk Elder',
|
|
13
|
+
pushable: false,
|
|
14
|
+
...options,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import BaseEntity, { BaseEntityOptions } from '../BaseEntity';
|
|
2
|
+
|
|
3
|
+
export default class CapfolkKnightEntity extends BaseEntity {
|
|
4
|
+
public constructor(options?: BaseEntityOptions) {
|
|
5
|
+
super({
|
|
6
|
+
idleAnimations: [ 'idle' ],
|
|
7
|
+
modelUri: 'models/npcs/mushroom-knight.gltf',
|
|
8
|
+
modelScale: 0.5 + Math.random() * 0.2,
|
|
9
|
+
moveAnimations: [ 'walk' ],
|
|
10
|
+
moveAnimationSpeed: 2,
|
|
11
|
+
moveSpeed: 3,
|
|
12
|
+
name: 'Capfolk Knight',
|
|
13
|
+
pushable: false,
|
|
14
|
+
...options,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import BaseEntity, { BaseEntityOptions } from '../BaseEntity';
|
|
2
|
+
|
|
3
|
+
export default class CapfolkBoyEntity extends BaseEntity {
|
|
4
|
+
public constructor(options?: BaseEntityOptions) {
|
|
5
|
+
super({
|
|
6
|
+
idleAnimations: [ 'idle' ],
|
|
7
|
+
modelUri: 'models/npcs/mushroom-boy.gltf',
|
|
8
|
+
modelScale: 0.5 + Math.random() * 0.15,
|
|
9
|
+
moveAnimations: [ 'walk' ],
|
|
10
|
+
moveAnimationSpeed: 2,
|
|
11
|
+
moveSpeed: 3,
|
|
12
|
+
name: 'Capfolk Boy',
|
|
13
|
+
pushable: false,
|
|
14
|
+
...options,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import BaseEntity, { BaseEntityOptions } from '../BaseEntity';
|
|
2
|
+
|
|
3
|
+
export default class BankerEntity extends BaseEntity {
|
|
4
|
+
public constructor(options?: BaseEntityOptions) {
|
|
5
|
+
super({
|
|
6
|
+
idleAnimations: [ 'idle' ],
|
|
7
|
+
modelUri: 'models/npcs/farmer2.gltf',
|
|
8
|
+
modelScale: 0.75,
|
|
9
|
+
name: 'Farmer',
|
|
10
|
+
...options,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import BaseEntity, { BaseEntityOptions } from '../BaseEntity';
|
|
2
|
+
|
|
3
|
+
export default class MerchantEntity extends BaseEntity {
|
|
4
|
+
public constructor(options?: BaseEntityOptions) {
|
|
5
|
+
super({
|
|
6
|
+
idleAnimations: [ 'idle' ],
|
|
7
|
+
modelUri: 'models/npcs/merchant.gltf',
|
|
8
|
+
modelScale: 0.75,
|
|
9
|
+
name: 'Merchant',
|
|
10
|
+
...options,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Quaternion } from 'hytopia';
|
|
2
|
+
|
|
3
|
+
import GameRegion from '../GameRegion';
|
|
4
|
+
import stalkhavenMap from '../../assets/maps/stalkhaven.json';
|
|
5
|
+
|
|
6
|
+
import AdventurerEntity from '../entities/npcs/AdventurerEntity';
|
|
7
|
+
import BankerEntity from '../entities/npcs/BankerEntity';
|
|
8
|
+
import BlacksmithEntity from '../entities/npcs/BlacksmithEntity';
|
|
9
|
+
import FarmerEntity from '../entities/npcs/FarmerEntity';
|
|
10
|
+
import MerchantEntity from '../entities/npcs/MerchantEntity';
|
|
11
|
+
import CapfolkVillagerEntity from '../entities/npcs/CapfolkVillagerEntity';
|
|
12
|
+
import CapfolkElderEntity from '../entities/npcs/CapfolkElderEntity';
|
|
13
|
+
import CapfolkKnightEntity from '../entities/npcs/CapfolkKnightEntity';
|
|
14
|
+
|
|
15
|
+
export default class StalkhavenRegion extends GameRegion {
|
|
16
|
+
public constructor() {
|
|
17
|
+
super({
|
|
18
|
+
name: 'Stalkhaven',
|
|
19
|
+
map: stalkhavenMap,
|
|
20
|
+
skyboxUri: 'skyboxes/partly-cloudy',
|
|
21
|
+
spawnPoint: { x: 1, y: 5, z: 40 },
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
protected override _setup(): void {
|
|
26
|
+
super._setup();
|
|
27
|
+
|
|
28
|
+
(new AdventurerEntity({ facingAngle: 90 })).spawn(this.world, { x: 30, y: 2, z: 22 });
|
|
29
|
+
(new BankerEntity({ facingAngle: 90 })).spawn(this.world, { x: 12, y: 3, z: 41 });
|
|
30
|
+
(new BlacksmithEntity({ facingAngle: -120 })).spawn(this.world, { x: -25.5, y: 3, z: -12.5 });
|
|
31
|
+
(new CapfolkElderEntity({ facingAngle: 180 })).spawn(this.world, { x: -13.5, y: 2, z: -30 });
|
|
32
|
+
(new FarmerEntity({ facingAngle: -90 })).spawn(this.world, { x: -32, y: 3, z: 1 });
|
|
33
|
+
(new MerchantEntity({ facingAngle: 90 })).spawn(this.world, { x: 13, y: 3, z: 26.5 });
|
|
34
|
+
|
|
35
|
+
(new CapfolkVillagerEntity({ facingAngle: -30 })).spawn(this.world, { x: -1.5, y: 2, z: 45.5 });
|
|
36
|
+
(new CapfolkVillagerEntity({ facingAngle: 15 })).spawn(this.world, { x: 3, y: 2, z: 45.5 });
|
|
37
|
+
(new CapfolkKnightEntity({ modelScale: 0.7 })).spawn(this.world, { x: 0.75, y: 2, z: 45 });
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
const wonderDestinations = [
|
|
41
|
+
{ x: -16.5, y: 1.5, z: -30 }, // church 1
|
|
42
|
+
{ x: -12.5, y: 1.5, z: -27 }, // church 2
|
|
43
|
+
{ x: -14, y: 1.5, z: -24 }, // church 3
|
|
44
|
+
{ x: -27, y: 1.5, z: -22.5 }, // cemetary 1
|
|
45
|
+
{ x: -22, y: 1.5, z: -12 }, // blacksmith
|
|
46
|
+
{ x: -11, y: 1.5, z: -12.5 }, // town square 1
|
|
47
|
+
{ x: 2, y: 1.5, z: -10.5 }, // town square 2
|
|
48
|
+
{ x: 12.5, y: 1.5, z: 3 }, // town square 3
|
|
49
|
+
{ x: -10, y: 1.5, z: -15 }, // town square 4
|
|
50
|
+
{ x: 10.5, y: 1.5, z: 26.5 }, // merchant
|
|
51
|
+
{ x: 9, y: 1.5, z: 41 }, // banker
|
|
52
|
+
{ x: 22, y: 1.5, z: 41 }, // well 1
|
|
53
|
+
{ x: 30, y: 1.5, z: 42 }, // well 2
|
|
54
|
+
{ x: 28, y: 1.5, z: 36 }, // well 3
|
|
55
|
+
{ x: 32, y: 1.5, z: 40 }, // well 4
|
|
56
|
+
{ x: 28, y: 1.5, z: 25 }, // inn 1
|
|
57
|
+
{ x: 29, y: 1.5, z: 18.5 }, // inn 2
|
|
58
|
+
{ x: 26, y: 1.5, z: 16.5 }, // inn 3
|
|
59
|
+
{ x: 22, y: 1.5, z: 9.5 }, // inn garden
|
|
60
|
+
{ x: 28, y: 1.5, z: -6 }, // market 1
|
|
61
|
+
{ x: 27, y: 1.5, z: -20 }, // market 2
|
|
62
|
+
{ x: 29.5, y: 1.5, z: -29 }, // market 3
|
|
63
|
+
{ x: 28, y: 1.5, z: -32 }, // market 3
|
|
64
|
+
{ x: 16, y: 1.5, z: -25 }, // market 4
|
|
65
|
+
{ x: 17, y: 1.5, z: -15 }, // market 5
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
for (let i = 0; i < 20; i++) {
|
|
69
|
+
const spawnPoint = wonderDestinations[Math.floor(Math.random() * wonderDestinations.length)];
|
|
70
|
+
const villager = new CapfolkVillagerEntity();
|
|
71
|
+
villager.spawn(this.world, spawnPoint);
|
|
72
|
+
setTimeout(() => {
|
|
73
|
+
villager.wander(wonderDestinations, 1 + Math.random() * 3);
|
|
74
|
+
}, 5000);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
World,
|
|
16
16
|
CollisionGroup,
|
|
17
17
|
PlayerEntity,
|
|
18
|
+
DefaultPlayerEntityController,
|
|
18
19
|
} from 'hytopia';
|
|
19
20
|
|
|
20
21
|
import GAME_WALL_SHAPES from './wall-shapes';
|
|
@@ -93,7 +94,7 @@ function onPlayerJoin(world: World, player: Player) {
|
|
|
93
94
|
const playerEntity = new DefaultPlayerEntity({
|
|
94
95
|
player,
|
|
95
96
|
name: 'Player',
|
|
96
|
-
modelUri: 'models/players/
|
|
97
|
+
modelUri: 'models/players/player.gltf',
|
|
97
98
|
});
|
|
98
99
|
|
|
99
100
|
playerEntity.spawn(world, GAME_CONFIG.POSITIONS.PLAYER_SPAWN);
|
|
@@ -113,6 +114,8 @@ function onPlayerJoin(world: World, player: Player) {
|
|
|
113
114
|
killPlayer(playerEntity);
|
|
114
115
|
}
|
|
115
116
|
});
|
|
117
|
+
|
|
118
|
+
(playerEntity.controller as DefaultPlayerEntityController).canSwim = () => false;
|
|
116
119
|
}
|
|
117
120
|
|
|
118
121
|
function onPlayerLeave(world: World, player: Player) {
|
|
@@ -84,6 +84,7 @@ export default class GamePlayerEntity extends DefaultPlayerEntity {
|
|
|
84
84
|
player,
|
|
85
85
|
name: 'Player',
|
|
86
86
|
modelUri: 'models/players/soldier-player.gltf',
|
|
87
|
+
modelScale: 0.5,
|
|
87
88
|
});
|
|
88
89
|
|
|
89
90
|
this._setupPlayerController();
|
|
@@ -370,6 +371,7 @@ export default class GamePlayerEntity extends DefaultPlayerEntity {
|
|
|
370
371
|
}
|
|
371
372
|
|
|
372
373
|
private _setupPlayerController(): void {
|
|
374
|
+
this.playerController.applyDirectionalMovementRotations = false;
|
|
373
375
|
this.playerController.autoCancelMouseLeftClick = false;
|
|
374
376
|
|
|
375
377
|
this.resetAnimations();
|
package/hygrounds/package.json
CHANGED
package/lighting/package.json
CHANGED
package/package.json
CHANGED
package/pathfinding/index.ts
CHANGED
|
@@ -19,7 +19,6 @@ startServer(world => {
|
|
|
19
19
|
controller: new PathfindingEntityController(),
|
|
20
20
|
name: 'Zombie',
|
|
21
21
|
modelUri: 'models/npcs/zombie.gltf',
|
|
22
|
-
modelLoopedAnimations: [ 'walk' ],
|
|
23
22
|
modelScale: 0.5,
|
|
24
23
|
rigidBodyOptions: {
|
|
25
24
|
enabledRotations: { x: false, y: true, z: false },
|
|
@@ -27,6 +26,10 @@ startServer(world => {
|
|
|
27
26
|
},
|
|
28
27
|
});
|
|
29
28
|
|
|
29
|
+
const pathfindingController = zombie.controller as PathfindingEntityController;
|
|
30
|
+
pathfindingController.idleLoopedAnimations = [ 'walk' ];
|
|
31
|
+
pathfindingController.moveLoopedAnimations = [ 'run' ];
|
|
32
|
+
|
|
30
33
|
// Spawn somewhere in front of the player
|
|
31
34
|
zombie.spawn(world, { x: 4, y: 3, z: -6 }, Quaternion.fromEuler(0, 180, 0)); // rotate 180 degrees around Y, facing the player spawn point.
|
|
32
35
|
|
package/pathfinding/package.json
CHANGED
package/payload-game/index.ts
CHANGED
|
@@ -109,6 +109,7 @@ startServer(world => { // Perform our game setup logic in the startServer init c
|
|
|
109
109
|
player,
|
|
110
110
|
name: 'Player',
|
|
111
111
|
modelUri: 'models/soldier-player.gltf',
|
|
112
|
+
modelScale: 0.5,
|
|
112
113
|
});
|
|
113
114
|
|
|
114
115
|
|
|
@@ -126,6 +127,7 @@ startServer(world => { // Perform our game setup logic in the startServer init c
|
|
|
126
127
|
|
|
127
128
|
// Override default model animations
|
|
128
129
|
const playerController = playerEntity.controller as DefaultPlayerEntityController;
|
|
130
|
+
playerController.applyDirectionalMovementRotations = false;
|
|
129
131
|
playerController.idleLoopedAnimations = [ 'idle_lower', 'idle_gun_right' ];
|
|
130
132
|
playerController.interactOneshotAnimations = [];
|
|
131
133
|
playerController.walkLoopedAnimations = ['walk_lower', 'idle_gun_right' ];
|
package/wall-dodge-game/index.ts
CHANGED
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
SimpleEntityController,
|
|
16
16
|
World,
|
|
17
17
|
Collider,
|
|
18
|
+
DefaultPlayerEntityController,
|
|
18
19
|
} from 'hytopia';
|
|
19
20
|
|
|
20
21
|
import worldMap from './assets/map.json';
|
|
@@ -276,6 +277,7 @@ function onPlayerJoin(world: World, player: Player) {
|
|
|
276
277
|
|
|
277
278
|
// Spawn with a random X coordinate to spread players out a bit.
|
|
278
279
|
playerEntity.spawn(world, getRandomSpawnCoordinate());
|
|
280
|
+
(playerEntity.controller as DefaultPlayerEntityController).canSwim = () => false;
|
|
279
281
|
}
|
|
280
282
|
|
|
281
283
|
/**
|
|
@@ -53,10 +53,12 @@ export default class GamePlayerEntity extends DefaultPlayerEntity {
|
|
|
53
53
|
player,
|
|
54
54
|
name: 'Player',
|
|
55
55
|
modelUri: 'models/players/soldier-player.gltf',
|
|
56
|
+
modelScale: 0.5,
|
|
56
57
|
});
|
|
57
58
|
|
|
58
59
|
// Prevent mouse left click from being cancelled, required
|
|
59
60
|
// for auto-fire and semi-auto fire mechanics, etc.
|
|
61
|
+
this.playerController.applyDirectionalMovementRotations = false;
|
|
60
62
|
this.playerController.autoCancelMouseLeftClick = false;
|
|
61
63
|
|
|
62
64
|
// Setup player animations
|
package/zombies-fps/package.json
CHANGED