tiltedphoques / tiltedevolution Goto Github PK
View Code? Open in Web Editor NEWSkyrim and Fallout 4 mod to play online!
Home Page: https://wiki.tiltedphoques.com/tilted-online/
License: Other
Skyrim and Fallout 4 mod to play online!
Home Page: https://wiki.tiltedphoques.com/tilted-online/
License: Other
There is currently an open pull request for the in game UI (https://github.com/tiltedphoques/TiltedOnline/pull/111). According to the PR's description, a bunch of features are already implemented. The UI still needs to be integrated into the main repo. The checklist of features on the PR's page is rather vague.
Player death currently has a bunch of issues, like reloading an old save instead of respawning somewhere. Also, for that matter, loading screens are somewhat problematic (which also occur on death) since the player still maintains control over the actors.
v3 is either null or bad at 0x140278A40 (v323)
It is currently fairly rough, not very cleanly written, and doesn't work consistently enough.
The server needs a scripting API first. The client could eventually use a scripting API as well. Below are some ideas of what a server side scripting API could contain:
Currently looking upwards while aiming a bow or shooting doesn't make the player on other peoples screen look up/down.
Currently, any triggered animations are sent to the server and forcefully executed on the remote clients. In game, these actions can be cancelled locally, but they will still execute remotely. One example is spamming left mouse button when holding an empty weapon in Fallout 4. The local client won't shoot anything, but the remote client will execute that player's shots.
Sync concentration spells like flames, which need to be continuously held.
Crash in m_world.clear();
If a remote player in the same area shouts "Slow Time", the effect is applied on the local client too. The local client seems to keep the effect going for twice as long as it should. The set duration is the same, but the elapsed seconds elapse twice as slow.
Happened to Zander's client when connecting to Yamashi's Windows server.
Spell casting can be interrupted, and concentration spells can be dropped. This needs to be synced.
Power armor does not seem to fully sync yet. The armor seems to duplicate.
If player A is sitting in a chair, and player B enters the cell, player A appears to be standing on top of the chair on player B's screen, but player A is still sitting on their own screen. This also translates to other idles too, such as leaning on counters or sitting cross-legged (when using emote mods). If player B is already in the cell and player A sits or does any other idles, it syncs just fine.
The equip manager is not yet reversed and implemented for Fallout 4 like it is in Skyrim. I laid some ground work for it a few months ago. I figure that it should be easy enough to implement.
Copied from Dragonisser's description on the issue on TiltedOnline:
Equipping or unequipping an weapon or armor doesnt get synced. Both get only synced on initial spawning of an actor.
This actually seems to work. There might be some cases where it doesnt work at all or partially. Requires testing.
I did noticed something tho:
Consistent projectiles coming from fireballs, ice shards, shouts, etc.
Part of #1
Sometimes, objects and npcs start gliding towards a certain direction. This is fixed by reconnecting. It can be somewhat consistently reproduced in bleak falls barrow, near the spider mini boss.
This happens with the "Sparks" spell.
At the moment, the game pauses while in menus.
It would probably be better to unpause the game while in menus, similar to what the F4SE plugin Fallsouls (https://github.com/kassent/Fallsouls) or the SKSE plugin SkyrimSouls (https://github.com/kassent/SkyrimSouls) does.
Beware that unpausing the game while in menus might trigger some bugs. For example, the revive command does not properly execute when the game is unpaused, leaving the revived actor sliding on the ground.
Partly related:
[2022-02-07 16:45:13.392] [info] New player 8aa6868c tried to connect with Tilted Online [email protected] - Version Mismatch
Dealing the final blow to a remote actor doesn't seem to kill it anymore. Investigate the ActorValueService to solve this problem, death sync code is in there.
There have been complaints of interpolation not working properly for player movement. Needs to be investigated.
Currently, pvp is broken because the damage calculation has to be done by one client, but that client cannot take all variables into account, like player specific perks for example.
As of now we don't load SKSE which isnt directly a huge issue, but certainly something we want to.
Currently, there are no animations for it, and the player never reverts on other clients.
The launcher needs a UI. This might be integrated with the in game UI.
Sync and apply magical effects like burning damage, paralyzing, etc.
This is probably a bug in CharacterService::RunSpawnUpdates(), which might keep adding WaitingFor3D.
We need to synchronize the weather for cells/worldspace (to be determined which makes more sense).
Weather sync must also sync the progress of weather and transitions.
Force has more insight on how to implement weather.
I recently added a new feature that made it so that the initial state of weapons being drawn was synced. This mostly works, but it seems to be bugged at times. Testers found that half the NPCs in Whiterun had their weapons drawn on remote NPCs.
Generic projectiles need to be synced, like arrows, bullets, grenades etc. Spell projectiles probably fall under this too, but it might be handled differently (#2 ).
The server decides which mods the players should have installed. Same for settings.
Might come in handy for security related things or simply banning people by steamid (having something like a global ban list for those who want to use it).
I'm not sure what the extent of it is just yet, but dealing damage to a remote actor seems to regenerate it quickly, or doing damage is just not at all possible. Look at health sync, and check actor value sync, in the ActorValueService.
For some reason, some animation variables sometimes have a single letter that varies in upper/lower casing. This can be consistently reproduced by loading a save file into different areas. This is problematic because we use the variable names to generate a CRC that is used as an identifier for the animation graphs.
The solution is fairly simple: calculate the CRCs again, making them all lower case first.
Headtracking is currently not synced. This is especially apparent with dragons, who have the most wide range in terms of headtracking, and whose heads are a major part of combat.
After some initial research, it appears that the Actor and AIProcess classes expose functionality for setting headtracking targets. I suggest starting there. Headtracking could potentially be synced by having the local client relative to the actor in question broadcast the headtracking target, and having the remote clients apply that target using said functionality.
An alternate solution would be to synchronize the LookAtLocation coordinates forcefully. This is potentially less invasive, since we would not have to interfere with the scheduled processes. When ownership transfers back to remote clients, they might be able to recover more easily. The downside is that this is more expensive in terms of network traffic.
This overhaul allows for more (server side) control over inventories, less bugs, and drastically fewer crashes. Would be ideal if we could add and remove items individually, instead of reapplying the whole inventory on one change.
repro: jebyssa fanic, load save 147, coc dlc1vqholdingcell, prid 1348c, moveto player, resurrect, connect, crash
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.