Giter VIP home page Giter VIP logo

wrath-rs's People

Contributors

bigglesss avatar dantsz avatar ffvictor avatar victov avatar weaponman avatar xunjin 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

Watchers

 avatar  avatar

wrath-rs's Issues

Opcode error spam from normal client sitting idle in-game

After a few minutes of idle time, the server starts to spam errors about opcode 257 (0x101), or CMSG_STANDSTATE_UPDATE:

[...]
17-10-2022 10:25:01  WARN wrath_worldserver::client: Error in opcode: Opcode { opcode: 257, size: 4 }.
17-10-2022 10:25:01  WARN wrath_worldserver::client: Error in opcode: Opcode { opcode: 257, size: 4 }.
17-10-2022 10:25:01  WARN wrath_worldserver::client: Error in opcode: Opcode { opcode: 257, size: 4 }.
17-10-2022 10:25:01  WARN wrath_worldserver::client: Error in opcode: Opcode { opcode: 257, size: 4 }.
17-10-2022 10:25:01  WARN wrath_worldserver::client: Error in opcode: Opcode { opcode: 257, size: 4 }.
17-10-2022 10:25:01  WARN wrath_worldserver::client: Error in opcode: Opcode { opcode: 257, size: 4 }.
[...]

Given that there's also a SMSG_STANDSTATE_UPDATE, perhaps the client is expecting a response and spams until it gets it?

awesome-wow-rust

Hi!

I have been working on azerust on and off (mostly off) as well as checking in here to see all the exciting progress, and decided it would be great to have a common hub to share resources for people working on wow-related projects in rust. I have added a list here: https://github.com/arlyon/awesome-wow-rust. Please consider opening a PR if you end up splitting out any crates, or if you want to flesh out any useful information on the readme entry. Maybe at some point a discord would be fun however this is very much a 'once every few months' type of passion project for me so for now I propose using discussions: https://github.com/arlyon/awesome-wow-rust/discussions

Feature: world chat

Implement "regular" in-world chat for characters in vicinity.

  • Character must learn the correct language(s) based on their race
  • Handle world chat packets
  • Show chat messages to nearby characters

Don't bother with party/raid/guild/trade chat, there are no systems in place even remotely related to groups.

Feature: Archive characters when handling CMSG_CHAR_DELETE instead of outright deleting the row

Right now, sending CMSG_CHAR_DELETE from a client will completely remove the character row from the table. Ideally, this should be slightly less aggressive:

Refactor custom DBC reading to use wow_dbc instead

wow_dbc is a library that offers a clean solution to reading DBC files. Using this library would replace the custom logic of DBC reading with a cleaner and more type-safe option.

  • Delete the databases/dbc custom reading logic.
  • Add wow_dbc as a dependency
  • Refactor existing logic to use the new API

Move information from the readme to wiki pages

The readme has become bloated.
Move the following pieces of information to GH wiki pages, and leave behind links to relevant pages in the readme:

  • Install instructions
  • DBC retrieval instructions (.env setup)
  • Dockerised setup info
  • Console commands

The aim is to leave behind a readme where people can really see what the project is about at first glance and where they should go to get started, rather than a big all-encompassing knowledge document.

Rework compilation to no longer require active database

sqlx has some option to generate a json file to be able to compile your project without requiring an active database connection.

This will improve iteration time, simplify the github actions and lower the barrier for people to get working on the project.

  • Get sqlx to generate that json file
  • Enable database-less compilation
  • Update github actions to work with the json file instead of booting and seeding a database
  • Update readme
  • Compile-time checks that the schema still matches the database must remain intact, do not change the rust code so that the compile time checks disappear.

Azerust has this setup working, for inspiration

Feature: reveal map when exploring

If I had to guess, this could be a relatively simple system. I don't know what it would take to get this system working, but surely this can't be as huge as combat or equipment or anything like that.

Feature: Spawn game objects.

Spawn a game object into the world, visible for all players that are near it.

  • Does not have to do anything (no right click response or fancy scripted stuff)
  • Must be database driven, not hardcoded, gameobject template and gameobject spawn

This feature is part of the Full world Traversal milestone, since we need portals to work to be able to fully traverse the world.

Chat language is incorrect

Chat messages arrive correctly on the server, but the character can't understand its own language. Possibly something wrong in wow_messages?

image

Split world database into game data and player data.

Currently the wrath-realm-db contains both game data (creatures, items, etc) and player data (characters, equipment, etc).

Split up wrath-realm-db into wrath-game-db containing game data (things that aren't supposed to change per realm), and make wrath-realm-db only contain realm-specific data, like player characters and items.

The idea is that two realms can read from the same wrath-game-db and each realm reads/writes to their own wrath-realm-db. The user permissions for wrath-game-db could even be read-only.

Library for authentication messages

Hello,

I noticed that you used my wow_srp library and thought that you would be interested in knowing that I recently released a library for the auth server message format called wow_login_messages.

It uses a descriptor language called wowm in order to auto generate idiomatic rust code. The docs are a little rough at the moment, but the simple auth example should give you an idea of how to use it.

I also have world messages for 1.12, but I haven't released them because I have incorrect Rust codegen for the more complex cases.

It currently only has a Read interface but I'm planning async/no_std in the future after I get the miscompilations fixed.

I'm posting here to get some feedback on usability and future direction. To limit the scope I have deliberately only done 1.12 messages but I'm open to including Wrath and other messages if the interest is there.

Even if you don't intend on using the library I would still appreciate contributions, since I plan on auto generating documentation for the wiki at a later point.

I wish you luck with your emulator. :)

cc @WeaponMan Since I know he has done some auth server stuff.

Logout doesn't return the client to character selection.

When logging out, the 20 second countdown appears in the client. After 20 seconds, the client however does not return to character selection.

Discovered so far:

  • Other players do not see the character sitting down when somebody logs out. Hints to problems with SMSG_UPDATE_OBJECT.
  • The problem is related to sending a SMSG_UPDATE_OBJECT packet during the 20 second logout window. Instant logout works fine, and when you remove all code that can trigger an object update (sit down character, set stunned), the logout also works fine after the 20 seconds.
  • If you call mark_fully_dirty() on the UpdateMask whenever you change a variable, things seem to work differently (though still not correctly?). So the dirty mask has influence on this bug.
  • The actual SMSG_LOGOUT_* packets are very likely correct, since everything works fine when you don't send an object update. I have stopped looking in that avenue.
  • The problem exists outside of wrath-rs, it has been replicated in a minimal example in wow_messages. Check out this wow_messages issue.

Pass along the correct movement info in the update builder.

In update_builder.rs there is a TODO note about passing in the correct movement flags, which is currently blocked because they are different types and converting between them is not possible in a clean manner.

This task is blocked by this issue. When that task is done, bump the dependency on wow_messages and then update the code in update_builder to fix the todo.

wow_messages refactor todo list

This issue exists to keep track of the remaining work to refactor the server to use wow_messages.

Some features are so half-implemented that it's better to remove them altogether and circle back to them later and do it properly. This is to avoid having to figure out how e.g. spells/talents work before being able to call this refactor completed, because then it would become a never-ending nightmare.

  • Fix issue in wow_messages where SMSG_ADDON_INFO is serialized incorrectly.
  • Update readme pointing to wow_messages
  • Bump auth-server dependency wow_srp from 0.4 to 0.5
  • convert packets in equipment_handler to use wow_messages
  • convert packets in instance_handler to use wow_messages
  • Restore logout behaviour (login_handler and logout logic in Character)
  • Remove half-implemented Talents packets and cleanup related files
  • Remove half-implemented Spell packets and cleanup related files
  • convert packets in queries_handler to use wow_messages
  • restore all behaviour of world_handler (use wow_messages and hook up to relevant logic)
  • restore equipment in the character selection screen
  • Remove half-finished equipment related code (outside of character selection screen)
  • POSTPONED Write converter for movement flags in update_builder (see this TODO)
  • Do a pass of cleaning up stuff in constants that is no longer used. (or move to relevant enum in wow_messages)
  • remove opcodes.rs
  • Investigate if the entire depenency on podio can be deleted
  • POSTPONED Create helper trait UpdateMaskExt for setting common flags/values on UpdateMask that have side-effects and refactor stuff out of impl Character
  • Verify that you can: Log in, see other people logging/out, see people walk in/out of range.

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.