Giter Site home page Giter Site logo

nexusforever / nexusforever Goto Github PK

View Code? Open in Web Editor NEW
564.0 71.0 177.0 3 MB

An emulator for the defunct MMORPG WildStar which supports build 16042 (Final Patch)

Home Page: https://emulator.ws/

License: GNU Affero General Public License v3.0

C# 99.71% HTML 0.16% Shell 0.14%
server-emulator emulator wildstar csharp dotnetcore mmorpg dotnet

nexusforever's Introduction

NexusForever

Discord

Information

A server emulator for WildStar written in C# that supports build 16042.

Getting Started

Server Setup Guide

Requirements

  • Visual Studio 2022 (.NET 8 and C# 12 support required)
  • MySQL Server (or equivalent, eg: MariaDB)
  • WildStar 16042 client

Branches

NexusForever has multiple branches:

  • Master
    Latest stable release, develop is merged into master once enough content has accumulated in develop.
    Compiled binary releases are based on this branch.
  • Game Rework
    Current active development branch, major refactors and updates to the project are underway in this branch.
    All PR's should be targeted to this branch.
    This branch will eventually be merged back into develop.
  • Develop
    Active development branch with the latest features but may be unstable.
    Any new pull requests must be targed towards this branch.

Links

Build Status

Windows

Automated builds that will run on Windows or Windows Server.

Master:
Master
Game Rework:
Game Rework
Development:
Development

Linux

Automated builds that will run on various Linux distributions.
See the .NET runtime identifer documentation for more information on exact distributions.

Master:
Master
Game Rework:
Game Rework
Development:
Development

nexusforever's People

Contributors

ahoiahoi avatar alex-anderson156 avatar anaherra avatar benjamincdp avatar brannon-penrod avatar chargein avatar crazysheep86 avatar dekker3d avatar digitalroot avatar dyl10s avatar etithespirit avatar geigerkind avatar googleton avatar hyena avatar icereaper avatar jasoncouture avatar jehgo avatar kirmmin avatar lucas-jones avatar matt-hurd avatar maxtorcoder avatar myyanf avatar nealspellman avatar ness199x avatar rawaho avatar silentcld avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nexusforever's Issues

Quests: Communicator Message errors on mismatched WorldZoneId incorrectly

Date: 11th June, 2019

Description: While testing out CSI events, I was completing quests in the Crimson Isle. I completed the first one (http://www.jabbithole.com/quests/mind-the-mines-scrap-the-scrab-5593) without issue, accepted reward just fine, all via communicator.
The communicator offered me a new quest (http://www.jabbithole.com/quests/powering-down-5573) but I was unable to accept, it would just "boowom" every time.
Digging into the code it appears the worldZoneId for the Communicator message didn't match where I was, even though I was still on Mondo's Beachhead where I got the first quest.

Occurrence: Always

OS: Windows 10

Branch/Commit: develop

STR:

  1. Go to Crimson Isle, Mondo's Beachhead.
  2. Accept quest "Mine the Mines, Scrap the Scrab" from Mondo Zax
  3. Complete quest and continue via communicator
  4. Try to accept next quest "Powering Down" via communicator. It should fail.
    4a. Note; I was able to go back to Mondo and pick up the quest from him directly.

Observed: Unable to accept next quest via communicator

Expected: Able to accept next quest via communicator

Digging into the code, I can tell you that this was the state of my character:

player.Zone.Id = 1236;
player.Zone.ParentZoneId = 623;
communicator.WorldZoneId = 622;

This line was failing for me: cf5a0af#diff-4b7607fa08e0caa011a28532548dd379R31
Are we sure that WorldZoneId is a requirement to accept a quest? Maybe it's a trigger?

World Tasks

  • Mob & npc spawning
  • Loot dropping & collection
  • Fast travel
  • Basic Mob AI
  • Transmat
  • Reputation
  • Instance handling
  • Challenges

Account

Date: 4 June, 2019

Description: Traveled to RMT to tour, and was in the Bowels of the Ship area, which currently has no exit. Tried an invalid teleport by accident (clearly labeled NOPE NOPE NOPE in the spreadsheet). Intended to !teleport 2161 -0.0378065 2.41675 -9.25301 (the Tideborn Facility), but instead copied/pasted: !teleport 910 48.9703 -921.304 -64.1643 (Timmi's Play Fort). Why? Because I'm a dumbass.

Didn't travel anywhere, but also couldn't travel anywhere else afterwards. Tried to !go Thayd and others. Logged out and exited, relogged and "Your account has a character still in the world. Please try again in a minute." message continues to appear.

Occurrence: Continual.

OS: Win10 1903 64b

Branch/Commit: Kimmrin's TS

STR:

  1. !teleport 3032 -20.1017 600.271 -1046.85
  2. !teleport 910 48.9703 -921.304 -64.1643
  3. Log out and try to log back in

Observed: Error message above

Expected: Log back in normally

Groupfinder Tasks

  • Queuing for PvE content
  • Queuing for PvP
  • Matchmaking
  • Creation of PvE instances
  • Creation of PvP instances

"Non-negative number required" at GameTableManager.cs

image

I keep screwing this up and I have no idea why, any tips?

Basically it happens when loading the .tbl's. They all are at NexusForever-master\Source\NexusForever.WorldServer\bin\Debug\netcoreapp2.1\tbl\ by the way.

Bug: Possibly Borked Character Access with Bag

Title: Possibly Borked Character Access with Bag

Date: 31 May, 2019

Description: Added item #8488 - Quadric Hypersphere (bag) to inventory. Opened Inventory. Dragged bag on top of existing bag (16 or 17 slot, I forget which item #). Immediately disconnected. Attempted to re-log in, stuck on the chompy wheel. Logged in with different account correctly.

Occurrence: Continual on the one account. Will make another account to test repeatability.

OS: Win10 1903 64b

Branch/Commit:

STR: Add bags to slots.
Add item #8488 - Quadric Hypersphere (bag) to inventory.
Open Inventory.
Drag QH bag on top of existing bag
Attempt to re-log in, get stuck on the chompy wheel.
Log in with different account correctly.

Observed: Chompy wheel.

Expected: Log back in normally

MapGenerator executes without instruction parameters

Date: 22nd September, 2019

Description: MapGenerator will execute with no parameters

Occurrence: Always

OS: Windows 10, Ubuntu 19.04, and Mac OS X 10.14

Branch/Commit: develop

STR: Execute the application with no parameters. i.e. dotnet NexusForever.MapGenerator.dll --i `

Observed: All files are loaded, then the application says Finished, but needs CTRL-C to actually exit.

Expected: Errors asking for parameters, maybe?

My output on Windows 10 Powershell:

PS C:\Users\Kirmmin\Desktop\NF MapGenerator> dotnet .\NexusForever.MapGenerator.dll -i \\KIRMMIN-IBP\WildStar\Patch     
[INFO][ArchiveManager] Loading archives...
[INFO][MapGenerator] Finished!

Issues while mounted

  • Spell effect animations play while mounted.
  • No way of tracking user mounted state, currently.
    • Do we plan on adding player flags to the class? I know some will get recognised in game by LUA by the entity state, but it's good to track this server side, too.

Extends #113

Bug with Item Visuals

Date: 3rd July, 2019

Description: Item ID 82719 - http://www.jabbithole.com/items/arct-arms-autocannon-mk-i-82719

Occurrence: Always

OS: Windows 10

Branch/Commit: develop

STR:

  1. Summon item using !item add 82719
  2. Either try to equip or attach to costume
  3. Note it will either not equip / show invisible, or not let you save the costume.

Observed: It will either not equip / show invisible, or not let you save the costume.

Expected: Item equipped and appears appropriately, or costume saves and item appears.

[Bug] - [Character Creation]: Name Dupe

TITLE:
Naming Dupe

DATE:
10 June 2019

DESCRIPTION:
You can currently create a character with a name already taken.

Initially you won't be able to play this character upon creation; (cinematic freeze) however restarting the client will allow you to play the character.

OCCURRENCE:
Always

OS:
Win10 - Latest

BRANCH/COMMIT:
Develop (latest?) - (Kirmmins)

STR:
Create a character with the same name of another character.

OBSERVED:
Initially you won't be able to play this character upon creation; (cinematic freeze) however restarting the client will allow you to play the character.

EXPECTED:
Name taken feature implemented.
Certainly to not play the character even if created!

WildStar 190610 175616

Equipping Items with multiple ItemDisplaySourceEntry entries fails

[FATAL][Inventory] System.NotImplementedException: The method or operation is not implemented.
   at NexusForever.WorldServer.Game.Entity.Item.GetDisplayId(Item2Entry entry) in C:\Users\Admin\Documents\NexusForever\Source\NexusForever.WorldServer\Game\Entity\Item.cs:line 35
   at NexusForever.WorldServer.Game.Entity.Inventory.GetItemVisual(ItemSlot itemSlot, Costume costume) in C:\Users\Admin\Documents\NexusForever\Source\NexusForever.WorldServer\Game\Entity\Inventory.cs:line 142
   at NexusForever.WorldServer.Game.Entity.Inventory.VisualUpdate(ItemSlot slot, Costume costume) in C:\Users\Admin\Documents\NexusForever\Source\NexusForever.WorldServer\Game\Entity\Inventory.cs:line 198
   at NexusForever.WorldServer.Game.Entity.Inventory.VisualUpdate(Item item) in C:\Users\Admin\Documents\NexusForever\Source\NexusForever.WorldServer\Game\Entity\Inventory.cs:line 185
   at NexusForever.WorldServer.Game.Entity.Inventory.ItemMove(ItemLocation from, ItemLocation to) in C:\Users\Admin\Documents\NexusForever\Source\NexusForever.WorldServer\Game\Entity\Inventory.cs:line 406 System.NotImplementedException: The method or operation is not implemented.
   at NexusForever.WorldServer.Game.Entity.Item.GetDisplayId(Item2Entry entry) in C:\Users\Admin\Documents\NexusForever\Source\NexusForever.WorldServer\Game\Entity\Item.cs:line 35
   at NexusForever.WorldServer.Game.Entity.Inventory.GetItemVisual(ItemSlot itemSlot, Costume costume) in C:\Users\Admin\Documents\NexusForever\Source\NexusForever.WorldServer\Game\Entity\Inventory.cs:line 142
   at NexusForever.WorldServer.Game.Entity.Inventory.VisualUpdate(ItemSlot slot, Costume costume) in C:\Users\Admin\Documents\NexusForever\Source\NexusForever.WorldServer\Game\Entity\Inventory.cs:line 198
   at NexusForever.WorldServer.Game.Entity.Inventory.VisualUpdate(Item item) in C:\Users\Admin\Documents\NexusForever\Source\NexusForever.WorldServer\Game\Entity\Inventory.cs:line 185
   at NexusForever.WorldServer.Game.Entity.Inventory.ItemMove(ItemLocation from, ItemLocation to) in C:\Users\Admin\Documents\NexusForever\Source\NexusForever.WorldServer\Game\Entity\Inventory.cs:line 406

The above error occurs when trying to equip http://www.jabbithole.com/items/frozen-wrangler-mitts-28366 - this item has multiple entries returned from the ItemDisplaySourceEntry GameTable. The way they seem to match when there's multiple entries seems to be a relation between Item2.PowerLevel and ItemDisplaySourceEntry.ItemMaxLevel. (Doing some testing and coding out a fix at the moment)

Thanks to Zentoth for replicating this bug.

Go command does not work

Fixed in #81

There were 4 causes, each of which was layered on top of the other, preventing anything using text searches from working. See PR #81 for details.

Bug: Character Deletion

Title: Deletion does not work
Date: 28 May, 2019
Description: Created a character on the Kirminn server. Instapopped to 50. Logged out. Deleted. Entered name (Costume Tester). Confirmed name. CLient stopped responding (character animation of /cry continued to work, no other options). Crashed out w/ alt f4. Logged in. Character still there. Repeated twice. Same results.

Occurrence: Always

OS: Win10 1903 64b

Branch/Commit:

STR: Create a character. Log out. Delete. Enter name.

Observed: Character cries forever and is never deleted. On crashing out and relogging the character is there and available for play.

Expected: The character should catch fire and be deleted.

[Bug] - [Spells] - [Stalker]: Nano Skin FPS Killer

TITLE:
Nano Skin FPS Killer

DATE:
10 June 2019

DESCRIPTION:
Using the "Stalker'" Nano Skin ability (default: [R]) once will begin to rapidly decrease your FPS. There are no spell effects occurring visually at the time.

Initially I thought this was because I was on a "Dupe Name" character, but I have had solid FPS on the same character without using said ability, which leads me to believe the spell is most definitely causing a memory leak or something.

OCCURRENCE:
Always

OS:
Win10 - Latest

BRANCH/COMMIT:
Develop (latest?) - (Kirmmins)

STR:
Using the "Stalker'" Nano Skin ability (default: [R])
Use Alt + F1 to see your in-game FPS, but you'll notice once it drops below 50.

OBSERVED:
Initially you'll use the ability and you'll see your character animation roar. Then you'll notice the FPS dropping quite rapidly.

No spell effects visually showing at the time.

EXPECTED:
FPS to remain at normality for PC.

Linux / dotnet

The following changes are required for linux compatibility, otherwiese a filenotfound exception is thrown
( File name: '/home/vinz/wildstar/git/NexusForever/Source/NexusForever.WorldServer/bin/Debug/netcoreapp2.1/tbl\CharacterCreation.tbl')

I do not know if the change is compatible with windows, however - but there must be an os independent solution

diff --git a/Source/NexusForever.Shared/GameTable/GameTableManager.cs b/Source/NexusForever.Shared/GameTable/GameTableManager.cs
index bdbe810..10166e8 100644
--- a/Source/NexusForever.Shared/GameTable/GameTableManager.cs
+++ b/Source/NexusForever.Shared/GameTable/GameTableManager.cs
@@ -29,18 +29,18 @@ namespace NexusForever.Shared.GameTable
 
             try
             {
-                CharacterCreation      = new GameTable<CharacterCreationEntry>("tbl\\CharacterCreation.tbl");
-                CharacterCustomization = new GameTable<CharacterCustomizationEntry>("tbl\\CharacterCustomization.tbl");
-                Creature2              = new GameTable<Creature2Entry>("tbl\\Creature2.tbl");
-                Creature2ArcheType     = new GameTable<Creature2ArcheTypeEntry>("tbl\\Creature2ArcheType.tbl");
-                Creature2Difficulty    = new GameTable<Creature2DifficultyEntry>("tbl\\Creature2Difficulty.tbl");
-                Creature2Tier          = new GameTable<Creature2TierEntry>("tbl\\Creature2Tier.tbl");
-                CreatureLevel          = new GameTable<CreatureLevelEntry>("tbl\\CreatureLevel.tbl");
-                Item                   = new GameTable<Item2Entry>("tbl\\Item2.tbl");
-                ItemType               = new GameTable<Item2TypeEntry>("tbl\\Item2Type.tbl");
-                ItemDisplaySource      = new GameTable<ItemDisplaySourceEntryEntry>("tbl\\ItemDisplaySourceEntry.tbl");
-                World                  = new GameTable<WorldEntry>("tbl\\World.tbl");
-                Emotes                 = new GameTable<EmotesEntry>("tbl\\Emotes.tbl");
+                CharacterCreation      = new GameTable<CharacterCreationEntry>("tbl/CharacterCreation.tbl");
+                CharacterCustomization = new GameTable<CharacterCustomizationEntry>("tbl/CharacterCustomization.tbl");
+                Creature2              = new GameTable<Creature2Entry>("tbl/Creature2.tbl");
+                Creature2ArcheType     = new GameTable<Creature2ArcheTypeEntry>("tbl/Creature2ArcheType.tbl");
+                Creature2Difficulty    = new GameTable<Creature2DifficultyEntry>("tbl/Creature2Difficulty.tbl");
+                Creature2Tier          = new GameTable<Creature2TierEntry>("tbl/Creature2Tier.tbl");
+                CreatureLevel          = new GameTable<CreatureLevelEntry>("tbl/CreatureLevel.tbl");
+                Item                   = new GameTable<Item2Entry>("tbl/Item2.tbl");
+                ItemType               = new GameTable<Item2TypeEntry>("tbl/Item2Type.tbl");
+                ItemDisplaySource      = new GameTable<ItemDisplaySourceEntryEntry>("tbl/ItemDisplaySourceEntry.tbl");
+                World                  = new GameTable<WorldEntry>("tbl/World.tbl");
+                Emotes                 = new GameTable<EmotesEntry>("tbl/Emotes.tbl");
             }
             catch (Exception exception)
             {

Player appearance doesn't reset properly after mounting

Steps to Reproduce

  1. Mount up!
  2. Logout while mounted.
  3. Log back in to same character.
  4. Character will still look mounted, but no mount exists. Attempted to summon/unsummon mount results in crash for player - server keeps ticking.

Notes

  • Teleporting to a different zone will fix the appearance.
  • Returning to the previous zone will return the player's appearance to mounted.
  • Appearance persists after closing client, restarting it, and logging back in (without closing server down)
  • I was using a hoverboard. Didn't test with other mounts.
  • This was on the 64-bit client.

Bug with Tracking Quests

When you pick up a quest, it tracks it on the side. However when you relog, the quest isn't tracked, and when you open the quest log to track the quest, while the server updates the flag in the database, it still doesn't track the quest on the client. If the quest is flagged as tracked in the quest log, and then you relog, the quest is then successfully tracked on the side.

Should the quest be tracked by default, is there a limit on the amount of quests trackable, and if there is, there would need to be a check so it doesn't break the limit.

Jumping through surface

Title: Well, jumping through the surface in some places. This one is in Tremor Ridge Shuttle.

Date: 4/06/2019

Occurrence: Always.

Branch/Commit: Kirmmin's Test Server

STR: Just try to jump

Скриншот 2019-06-04 08 54 52

Questing Tasks

  • Player quest log/tracking
  • NPC quest giving
  • Quest completion & rewards
  • Quest progress tracking
  • Quest scripting
  • Interactable items?
  • Contracts

PvP Tasks

  • PvP flagging
  • PvP combat stats/interactions
  • Battleground scoring
  • Battleground loot & rewards
  • Warplots & Warparties

Character Tasks

  • Inventory
  • Creation and appearance saving
  • Gear equipping
  • Level and exp
  • LAS editing/remembering
  • Health, focus, and class resources
  • Player attributes
  • Using Mounts
  • Viewing & learning mounts & pets
  • AMPs
  • Bank
  • Gadget & consumables handling
  • Holo-Wardrobe
  • Map Completion tracking
  • Achievement handling
  • Challenge Tracking
  • Primal Matrix
  • Lore collection tracking

Authentication API

The authentication server should have an API that the world server uses, instead of the world server accessing the database directly. This will also allow easy integration with a website to allow account creation and logins.

Server Packet 03C4

!debug packet 03C4 00|8 <message>|8

0: Invite canceled: No such player.
1: Invite canceled: No such realm.
2: Request denied. They sure didn't look very friendly!
3: Invite canceled: You'Re already Friends. You must really like them.
4: Player Offline.
5: Not found.
6: Invalid Type.
7: Request not found.
8: Request Timed Out.
9: Busy. Try again in a bit.
10: Invalid Note.
11: Max Friend Count. Somebody's popular!
12: Max Rival Count. Somebody's got issues!
13: Max Ignored Count.
14: Unable to Process.
15: Invite canceled: No such player.
16: Player considering other friendships. Try again in a bit.
17: Friend invited.
18: Already a Rival.
19: Player Already a Neighbor.
20: Player already ignored. They're that bad, huh?
21: Player Ignored.
22: Player not a Rival
23: Player not Ignored
24: Player not a Neighbor
25: Player is not member of this realm.
26: Player is blocking Friend Requests. Mean, right?
29: You can't ignore or add yourself as a Friend or Rival.
30: Please try again, and slow down!
31: This text contains profanity.
32: Invalid public note
33: Invalid display name
34: Invalid display name
36: Request is blocked for strangers
37: Invalid auto-response
38: Trial account can't add other players to their Friends list.
39: That name is unavailable.
40: Your friend invite privileges have temporarily been restricted.

Holo Wardrobe InvalidOperationException

This doesn't crash the server or disconnect players but I've noticed it being thrown whenever someone edits a costume that isn't equipped. Users reported unlocks and costumes not being saved after encountering the error. They'd log out and back in and nothing would be saved.

[ERROR][Session] System.InvalidOperationException: Operation is not valid due to the current state of the object.
at NexusForever.WorldServer.Game.Entity.CostumeManager.SetCostume(Int32 index) in C:\Users\Baki\Desktop\NF-Dev\NexusForever\Source\NexusForever.WorldServer\Game\Entity\CostumeManager.cs:line 190
at NexusForever.WorldServer.Network.Message.Handler.CostumeHandler.ClientCostumeSet(WorldSession session, ClientCostumeSet costumeSet) in C:\Users\Baki\Desktop\NF-Dev\NexusForever\Source\NexusForever.WorldServer\Network\Message\Handler\CostumeHandler.cs:line 17
at NexusForever.Shared.Network.GameSession.HandlePacket(ClientGamePacket packet) in C:\Users\Baki\Desktop\NF-Dev\NexusForever\Source\NexusForever.Shared\Network\GameSession.cs:line 186 System.InvalidOperationException: Operation is not valid due to the current state of the object.
at NexusForever.WorldServer.Game.Entity.CostumeManager.SetCostume(Int32 index) in C:\Users\Baki\Desktop\NF-Dev\NexusForever\Source\NexusForever.WorldServer\Game\Entity\CostumeManager.cs:line 190
at NexusForever.WorldServer.Network.Message.Handler.CostumeHandler.ClientCostumeSet(WorldSession session, ClientCostumeSet costumeSet) in C:\Users\Baki\Desktop\NF-Dev\NexusForever\Source\NexusForever.WorldServer\Network\Message\Handler\CostumeHandler.cs:line 17
at NexusForever.Shared.Network.GameSession.HandlePacket(ClientGamePacket packet) in C:\Users\Baki\Desktop\NF-Dev\NexusForever\Source\NexusForever.Shared\Network\GameSession.cs:line 186

Bloodbloom Vale Sky Glitch

Title: Sky/Lighting Issue at Bloodbloom Vale

Date: 7/3/19

Description: When traveling through Bloodbloom Vale (Down the road, towards the Dominion), the sky will suddenly change. I tested this glitch repeatedly; there seems to be a border of sorts at 447.6462 -946.5767 -3504.272 (990). Upon crossing this border, the lighting glitch occurs. After crossing 479.8488 -947.5752 -3511.322 (990), the sky returns to normal. The farther East you go, the more sporadic these lighting changes happen.

Occurrence: Always; at least each time I tested it.

OS: Dell Inspiron 3847, Intel Core i5-4460 @ 3.20 GHz

Branch/Commit: I honestly have no idea where to find this, but I'm on Kirmmin's test server. If it helps, it says WildStar 16042 on the program itself..?

STR: Enter the game in Bloodbloom Vale, travel down the central path toward Fort Firestorm. Continue traveling in that direction (East). Running back will undo the glitch, which is why I think there's some border of sorts there.

Observed: The sky darkens as the player travels down the road (as expected), then suddenly changes back to light and bright. It switches between normal and bugged as the player travels eastward.

Expected: Sky should darken, but stay darkened while near Fort Firestorm.

Normal, Expected Sky
image
Bugged Sky
image

Bug: Thread lock when adding entities to a map

Date: 23rd May, 2019

Description: When a player is logged in and another player logs in to a zone that is not yet instantiated with many entities (like Thayd), the server will lock further processing (sending packets, at least) until all entities were added to the Map being loaded.

Occurrence: Always.

OS: Windows 10

Branch/Commit: "kirmmin/feature-motd" but this branch was based on develop at time of posting

STR:

  1. Load up 2 instances of WildStar
  2. Log 1 of the instances in to the Housing Skymap (may need to zone there, log out in the housing map, and restart server)
  3. Log the other instance in to a second account and enter world.
  4. Teleport to Thayd (with entities in database)
  5. Try to do a command on the first instance while the other is loading entities - note that no packets return until all entities are added to the Map.

Observed: No packets are returned to the first instance until all entities have been added to the map being loaded.

Expected: Packet execution should continue and map booting should happen asynchronously without locking all currently available threads.

Social Tasks

  • Chat
  • Friends list
  • Party & raid formation
  • Party chat
  • Housing
  • Guild formation and player list
  • Other basic guild functionality (motd etc)
  • Circles
  • Guild exp/perks
  • Guild bank

Character Creation Failure

Aaaw Shoot...
Character creation failure. Unsure of what exactly is causing it but here is a creation code that fails: eNrj/cDAwMTAwMDCAAHLgZgdiEWBmBGIORkg8iAxZiBmg6qFiXFBMUhMEojdoPqKWEEqGBuYwSQLmGQFkpmLQSbM5QXpldkKMr34KEj//LO8QPL3OT4g+b+eH0wKAMlzbIJgthDIhAPCYLYIkOzgFAWzxYDks1PiYLYEkHTwAQCrURm4

Here is the error:

13:14:42.8952[ERROR][Session] System.InvalidOperationException: Sequence contains no matching element
   at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
   at NexusForever.WorldServer.Network.Message.Handler.CharacterHandler.<HandleCharacterCreate>g__GetCharacterCustomisation|2_0(Dictionary`2 customisations, UInt32 race, UInt32 sex, UInt32 primaryLabel, UInt32 primaryValue) in C:\Users\Baki\Desktop\NF-DevFork\NexusForever\Source\NexusForever.WorldServer\Network\Message\Handler\CharacterHandler.cs:line 310
   at NexusForever.WorldServer.Network.Message.Handler.CharacterHandler.HandleCharacterCreate(WorldSession session, ClientCharacterCreate characterCreate) in C:\Users\Baki\Desktop\NF-DevFork\NexusForever\Source\NexusForever.WorldServer\Network\Message\Handler\CharacterHandler.cs:line 211
   at NexusForever.Shared.Network.GameSession.HandlePacket(ClientGamePacket packet) in C:\Users\Baki\Desktop\NF-DevFork\NexusForever\Source\NexusForever.Shared\Network\GameSession.cs:line 186 System.InvalidOperationException: Sequence contains no matching element
   at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
   at NexusForever.WorldServer.Network.Message.Handler.CharacterHandler.<HandleCharacterCreate>g__GetCharacterCustomisation|2_0(Dictionary`2 customisations, UInt32 race, UInt32 sex, UInt32 primaryLabel, UInt32 primaryValue) in C:\Users\Baki\Desktop\NF-DevFork\NexusForever\Source\NexusForever.WorldServer\Network\Message\Handler\CharacterHandler.cs:line 310
   at NexusForever.WorldServer.Network.Message.Handler.CharacterHandler.HandleCharacterCreate(WorldSession session, ClientCharacterCreate characterCreate) in C:\Users\Baki\Desktop\NF-DevFork\NexusForever\Source\NexusForever.WorldServer\Network\Message\Handler\CharacterHandler.cs:line 211
   at NexusForever.Shared.Network.GameSession.HandlePacket(ClientGamePacket packet) in C:\Users\Baki\Desktop\NF-DevFork\NexusForever\Source\NexusForever.Shared\Network\GameSession.cs:line 186

Spell Tasks

  • Spell casting (basic handling, no actual effect)
  • Combat Stats/Calculations
  • Spell/combat interaction
  • Spell collision
  • Buff & Debuff tracking
  • Proc/special effect handling

WorldServer: Errors on loading empty .tbl

Hey, thank you for fixing the dependencies! Auth & Sts are working now, however, the WorldServer errors out on several empty tables. Wildstar Studio shows & exports them as empty and i have no idea if there's any data supposed to be in there.

[ERROR][GameTableManager] Failed to load CombatReward.tbl in 1,0001ms

The tables in question are

AchievementGroup.tbl
AchievementSubGroup.tbl
Class.tbl
CombatReward.tbl
ComponentRegion.tbl
ComponentRegionRect.tbl
CostumeSpecies.tbl
Creature2Difficulty.tbl
Creature2ModelInfo.tbl
Creature2Resist.tbl
Creature2Tier.tbl
Race.tbl
UnitRace.tbl
Wind.tbl

Bug: Character Appearance Permanently Changes After Creation

TITLE:
Character Appearance Permanently Changes After Creation

DATE:
21 June 2019

DESCRIPTION:
Upon creating a character and entering the world, the character's appearance will differ in several ways from the creation screen. This includes shifts in hair color, skin color, and incorrect eye textures for face presets. I've tested this only among male Aurin, Human, and Granok characters and intend to test a few other combinations, but this is what I've found so far. Among those, the Aurin seem to suffer most noticeably, with hair color defaulting to blue and eye textures being that of the first male Aurin face preset. It seems all appearance issues so far are texture related, as things such as character shapes and hairstyles remain unchanged. Hair color seems to change to whatever the first hair color option is for the corresponding race. I have not seen eye color affected yet. Characters do not suffer any further changes after the initial occurrence. Example images are included below.

OCCURRENCE:
Always

OS:
Windows 7 64bit - Latest

BRANCH/COMMIT:
Kimmrin's TS

STR:

  1. Create a male Aurin with hair color, skin color, face preset OTHER than the first options in the lists.
  2. Enter the game and observe the inconsistencies in appearance.
  3. Choose to switch character and observe altered appearance in character select menu as well.

OBSERVED:
Upon entering the world after character creation, as well as in character select menu.

EXPECTED:
For character's appearance to remain consistent with that of the creation menu.

Note difference in hair color, eye textures, and skin tone.
Aurin

Note difference in hair color and skin tone. In this instance, the human's skin tone seemed to shift only on the head.
Human

Here you can see hair color being applied to a Granok "hair style" that isn't normally color-able.
Granok

Bug with Calling the NPC to Accept a quest

If you abandon a quest, then Call the NPC to re-accept the quest, if you've walked away from the quest giver, then the quest won't be accepted as the server will report that the player tried to start the quest "without communicator message"

MapGenerator, unable to set patch path or get base map files

From the Windows server instructions, I understand that I need to run the Map Generator from the NexusForever.sln.

I am unable, to missing where I need to define my patch directory for the Wildstar client.
I have attempted passing the example command with my directory, but it would seem that any parameter passed into the console after the Finished! text is displayed ends the application with exit code 0.

image

I checked to see if there was a place in a config file where I can define this but was unable to find one.

Database Migrations

Database Migrations keeps coming up, So I figured I'd map out a plan and start tackling it.

I plan on doing this in phases, submitting a PR for each step. The idea in doing it this way is to minimize disruption to other developers, and people who may be testing. As well as making it easy to back out changes, should this cause disruptions.

  • Abstract configuration to allow different providers (Only MySQL/MariaDB is supported at this time).
  • Implement sane design-time loading of configuration.
  • Implement a way to use the current SQL scripts for each database when migrating existing MySQL databases, and insert the appropriate data into the entity framework migration history table. Other DB providers will use migrations only.
  • Full conversion of AuthContext, and initial migrations.
  • Full conversion of CharacterContext, and initial migrations.
  • Full conversion of WorldContext, and initial migrations.
  • OPTIONAL: Attempt to implement MSSQL as an alternative.
  • OPTIONAL: Attempt to implement Postgres as an alternative.
  • OPTIONAL: Attempt to Implement SQLite for masochists.

Disconnect when changing mount

Date: 27.07.2019

Description: Trying to mount while being mounted results in server disconnect.

Occurrence: Always

OS: Windows 10

Branch/Commit:

STR: Mount, select different mount while being mounted, mount again.

Observed: Get disconnected from server when mounting while being mounted.

Expexted: Demount and then mount the newly selected mount.

Math error in NexusForever.WorldServer/Game/Entity/CurrencyManager.cs

This isn't showing up yet as currency caps haven't been set, but it will appear as soon as any are put in place.

In the develop branch, lines 76-78 of NexusForever.WorldServer/Game/Entity/CurrencyManager.cs read:

amount += currency.Amount;
if (currency.Entry.CapAmount > 0)
    amount = Math.Min(amount + currency.Amount, currency.Entry.CapAmount);

currency.Amount has already been added to amount in line 76, so line 78 should instead read:

    amount = Math.Min(amount, currency.Entry.CapAmount);

Thanks,
Myya

Bug with Quest Activation Objectives

On the first quest on the Crimson Isle, "Mind the mines, Scrap the Scrab" the mines progress the quest successfully when clicked, however the same mine can be clicked multiple times.

Linux installation

Please add to the wiki:

mkdir ${HOME}/git
cd ${HOME}/git
git clone https://github.com/Rawaho/NexusForever.git
cd NexusForever/Source

for server in WorldServer StsServer AuthServer; do 
        cd NexusForever.${server}
        cat ${server}.example.json > ${server}.json
        ln -s ${PWD}/${server}.json ${PWD}/bin/Debug/netcoreapp2.1/${server}.json
        sed -i -e 's/"Database": ".*/"Database": "nexus"/' ${server}.json
        cd ..
done

cd NexusForever.WorldServer/
cp -a /path/to/tbl/files .
ln -s ${PWD}/tbl/ ${PWD}/bin/Debug/netcoreapp2.1/

#### DB setup

cd ${HOME/git/NexusForever/Database/

mysql -e "create database nexus;"
mysql -D mysql -e "grant all on nexus.* to 'nexusforever'@'127.0.0.1' identified by 'nexusforever';"
mysql -D nexus < Base/*.sql
mysql -D nexus < Updates/*/*.sql

mysql -D nexus -e "INSERT INTO server(name, host, port, type) VALUES ('NexusForever', '--insert-server-ip--', 24000, 0);"

#### launch

export TERM=xterm
cd ${HOME}/git/NexusForever/Source
for server in StsServer AuthServer; do
        cd NexusForever.${server}
        dotnet run&
        cd ..
done
cd NexusForever.WorldServer
dotnet run

Additional issues while mounted

Bike mounts like the Uniblades or lever mounts like Igneous Strider have the incorrect player appearance pose.

Teleporting while mounted: Depending on zone the player will either end up with the player appearance bug in #113 or end up teleported to XYZ coordinates of 0, 0, 0 for given target zoneID.

To reproduce:
1- Mount up
2- !go Thayd or !go Illium
3- Go skydiving for a bit

Extends #117 and #113

Account Management

  • Account create will create duplicate accounts if the username is the same. (Resolved by #84)
  • Modify password of an account
  • Lock & Ban accounts
  • Account deletion rules? Delete & Ban, Delete & move characters to a different account, Delete all characters, all account stuff.
    • Account Transaction Logs specifically for creation, deletion, user who did it, and reasoning?
  • Account currencies need to be considered as part of the auth database?
  • Account items, daily rewards, and claimables, as well as any account-related cooldowns, need to be considered as part of the auth database?
  • Holowardrobe needs to be considered as part of the auth database?
  • Account status (User/Dev/GM) not being set anywhere.
  • Account membership (Basic/Signature) not being set anywhere. May not need to be a consideration?

Possibly related to #50

Bug: Default rotations are broken in Movement Manager

I'm logging this mainly for historical purposes, but this will need to be resolved in the future - probably after the release of spline work.

Date: 24th May, 2019

Description: When a new entity is created, default rotation is set but not respected by the client.

Occurrence: Always

OS: Windows 10

Branch/Commit: NexusForever/develop branch

STR:

  1. Login to the game.
  2. Summon a mount
  3. Note that the mount will probably not face the same way the player was.
    1. If it does, turn 180 degrees and summon again

Observed: Mount is summoned facing a different rotation than the player was before summoning.

Expected: Mount is summoned facing the same direction as the player was before summoning.

When removing the following line, rotation works properly:
https://github.com/NexusForever/NexusForever/blob/develop/Source/NexusForever.WorldServer/Game/Entity/Movement/MovementManager.cs#L50

NuGet package installation for dummies (without VS)

Hey! First of all thank you for that nice christmas present!
In order to get it running, is there an easy way to install the NuGet dependencies without Visual Studio? I see there's a command line tool but i have no clue how to make it install the packages (am i right assuming the NexusForever.*.deps.json are the packages to install?).
An additional line or two in the readme would be great!

Configurable command aliases

Server-configurable (via config file) command alias system

e.g. to add simple location teleport aliases to simplify testing

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.