GithubHelp home page GithubHelp logo

d2cube / d2cube Goto Github PK

View Code? Open in Web Editor NEW
11.0 3.0 0.0 23.37 MB

A unique interactive and visual D2 companion experience.

Home Page: https://d2cu.be

License: MIT License

JavaScript 100.00%
d2 d2r diablo2 cube runewords

d2cube's Introduction

d2cube

A unique interactive and visual D2 companion experience.


To be updated!

Intro

Contents

Features

App

API

Docs

Roadmap

Project

Contribute

Sponsor

Support this project and give back by sponsoring it. Your profile and contributions will be recognized below.

Backstory

License

MIT ยฉ Chris Zhou

d2cube's People

Contributors

chrisrzhou avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

d2cube's Issues

[RFC] Codegen DB data from game files

Context
The current ItemDB is hardcoded by me (@chrisrzhou) ๐Ÿ˜ฎ as part of a personal reverse-engineering exercise exploring the initial project. We should prefer a more robust way to do this.

Proposal

  • Scrape game files to codegen files in ~/db.
  • It is important to ensure that we still want to maintain the static authorship of each file (including enum keys for objects). This is important enough as part of the DX and type discovery in maintaining the codebase. Simply outputting static data is not sufficient.
  • It is likely various data mappings are not accounted or inaccurately modeled. Refactor the app accordingly before committing further.

Considerations

  • Due to a lack of knowledge on the source game files, this has been postponed, but it is still a long-term goal of the project to translate to/from the source game files.

References

[RFC] Prefix/Affix Magic/Rare Item Generator

Context
Support a way to create magic/rare items based on prefixes.

Proposal
Allows creation of magic/rare items and extend completness to other areas of the app needing these (e.g. Cube).

[RFC] Prelaunch Feedback

Context
Feedback from prelaunch

Proposal
In order of painpoints

  • Mobile-friendly
    • [BUG] 100% Unusable on mobile right now [4] [6] [8] [9] [10] [11] [13] [16]
  • Home page improvements
    • Navs should link to pages as primary action instead of opening a preview iframe every time. [1] [2]
    • Incorrect timer [12]
  • Runewords page
    • [BUG] Destruction called Death [15]
    • Support for Ethereal and Ebugging in Runewords page [2] [15]
  • Items page improvements
    • [BUG] Items page has a horizontal scrollbar on slightly smaller resolutions [2]
    • Filtering by item tier (normal/exceptional/elite) is not clear (might need a dedicated alias filter for for this) [2]
    • Easy Quick filters (extend Search component to support predefined quick filters) [3]
    • Cube page improvements
      • [BUG] Prefixes/affixes do not render properties [3]
      • [BUG] 3 Magic Rings -> 1 Magic Rings
      • Missing crafting recipes [3]
      • Missing quest recipes
      • Show additional description of recipes [3]
      • Socket recipes don't show sockets [3]
      • Improve discoverability of durability recipe by indicating pre-durability/charges and rechard durability/charges [3]
        • The cube recipe Ort + Chipped Gem + Weapon says the result is fully repaired weapon, but it's supposed to be fully repaired and recharged weapon. It'd be good to demonstrate this one with a staff of Teleport to show how useful this recipe is.

        • The recipes "3 Chipped Gems + 1 Magic Weapon" and "3 Flawless Gems + 1 Magic Weapon", I'm not sure I understand the difference between them. The site shows 1 socket vs 2 socket, but is that right? Arreat summit shows one is ilvl 25 and the other 30 but both are 1-2 sockets. Is it because certain items can only roll 1 socket at ilvl 25 but can roll 2 at ilvl 30?

  • Others
    • Persistent URLs [3]
    • Support for prefix/affix [4]
    • Update viewport meta [14]
    • SEO-friendly (social thumbnail/image).
  • Ambitious
    • Advanced item details (attack speed breakpoints, sockets by number) [5]
    • Loot drop-rate table

References

[RFC] Character Stats

Context
Diablo 2 is a game about items, skills, and stats. This RFC focuses on deeply integrating character stats with the existing app (as of the time of this writing, only supports items).

Proposal

  • Confirm/improve existing logic in calcItemStats.
  • Aggregate calculated item stats.
  • Render this with the appropriate UI.

Considerations

  • We can just integrate with d2planner, but d2cube intends to be an opinionated self-maintained project with its own ID/item/skill/stat system and APIs.

References

[RFC] Bookmarkable URLs

Context
d2cube should support bookmarkable URLs for easy sharing.

Proposal
Drive page initial state via URL.

Considerations
Will likely start work in a later phase when pages and APIs are stable.

[RFC] Inventory Management

Context
Deeply simulate the in-game experience of moving/transferring/socketing/equipping/swapping items. Useful in the Sets page to observe incomplete set bonuses, and also as a general useful sim to socketing runes/gems in items.

Proposal

  • Update Inventory to support event handlers to equip/move items in the specified grid. Implement these with utils.
  • Should work with Cube.
  • Set bonuses should now dynamically be determined based on its equipped status.

References

[Roadmap] Short-term goals

Keeping a very rough list of short-term roadmap goals. This issue maybe subject to change.

High pri

  • Update Docs.
  • Abstract ~/db and ~/api to their own repos.
  • Snapshot test ~/db. Unit test ~/api.
  • Research and codegen files in ~/db from source game files.

Lowpri

  • Revisit and improve uinix utils and uinix-ui bugs uncovered.
  • Set up and preview the UI system knowledge (e.g. via uinix-ui-system-preview).
  • Cleanup code and smell e.g. rollItem.
  • Implement Bookmarkable URLs.
  • Implement Inventory.

[RFC] Character Skills

Context
Diablo 2 is a game about items, skills, and stats. This RFC focuses on deeply integrating character skills with the existing app (as of the time of this writing, only supports items).

Proposal

  • Statically define and model character skills in relation to existing item skill property.
  • Implement static definitions in ~/db
  • Implement appropriate APIs in ~/api
  • Implement a skill planner UI using data from ~/db similar to the amazing https://d2planner.github.io/skills/

Considerations

  • We can just integrate with d2planner, but d2cube intends to be an opinionated self-maintained project with its own ID/item/skill system and APIs.

References

[RFC] D2R Image Assets

Context
The app is currently using Classic D2 image assets.

Proposal

  • Add the D2R image assets in public/images/d2r.
  • Items should be named following the ItemID naming convention and be saved in in .webp format.
  • Support a toggle in the UI to toggle between Classic vs Resurrected assets.

Considerations

  • Potential impact on app loading times.

References
The following sites provide D2R assets although a programmatic way to scrape from the source game files is preferred.

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.