1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-06-22 23:25:23 +00:00
A mirror of the OpenDiablo2 project
Go to file
lord 854fce3b14
remove d2asset singleton (#726)
* export d2asset singleton

* add *d2asset.AssetManager to d2app

- d2app now has a reference to an asset manager which it will use for loading
- added asset loader methods to the asset manager
- functions in d2asset are now wrappers for asset manager methods

* add asset manager reference to audio provider

- d2app asset manager reference is now passed to audio provider
- asset manager is created in main.go for now to pass into audio provider
- CreateSoundEffect is now a method, no longer exported, uses the asset manager reference

* d2app passes asset manager refence to map engine test

* in d2asset, all calls to LoadFile replaced with call to Singleton.Loadfile

* blizzard intro and credits screen

- d2app passes reference to the asset manager to these screens

* asset manager for d2map

- adding MapStampFactory, takes an asset manager reference
- embedded MapStampFactory into the MapEngine
- LoadStamp is now a method of the MapStampFactory

* d2asset: removed LoadFileStream, LoadFile, and FileExists

* d2gui changes

- singleton now has an asset manager reference
- calls to d2asset loader functions removed
- createButton is now a method of LayoutManager
- moved LayoutEntry to its own file

* map entity factory

- Map engine has an embedded map entity factory
- Map stamp factory gets a reference to the map engine's entity factory
- Stamps are given a reference to the map engine entity factory when created
- Character select gets a map entity factory
- Embedded the stamp factory into the MapEngine

* asset manager for d2ui

- d2ui is passed an asset manager reference when created
- all calls to d2asset loader functions in d2ui now refer to the asset manager
- d2gamescreen gets a ui manager when created
- help overlay is now passed a ui manager when created

* d2gamescreen + d2player: asset manager references

added an asset manager reference to
- inventory panel + inventory grid
- mini panel
- game controls
- help overlay
- character select
- main menu
- select hero class
- hero stats panel

* Removed d2asset.LoadAnimation

all references to this function have been replaced with calls to the asset manager method

* adding asset to help overlay, bugfix for 4d59c91

* Removed d2asset.LoadFont and d2asset.LoadAnimationWithEffect

all references to these have been replaced with calls to the asset manager methods

* MapRenderer now gets an asset manager reference

* removed d2asset.LoadPalette

all references have been replaced with calls to an asset manager instance

* merged d2object with d2mapentity

d2object was only being used to create objects in the map, so the provider
function is now a method of the map entity factory. calls to d2asset have
been removed.

* removed d2asset.LoadComposite

all calls are now made to the asset manager method

* removed d2asset singleton

all singleton references have been removed, a single instance of the
asset manager is passed around the entire app

* rename Initialize to NewAssetManager
2020-09-12 16:51:30 -04:00
.circleci Update to Go 1.14 (#429) 2020-06-23 23:53:21 -04:00
.github fix glfw error in ci workflow (#723) 2020-09-09 00:34:21 -04:00
.vscode Switch to fork of coverage tool (#446) 2020-06-24 20:40:12 -04:00
d2app remove d2asset singleton (#726) 2020-09-12 16:51:30 -04:00
d2common lint fixes (#727) 2020-09-12 16:25:09 -04:00
d2core remove d2asset singleton (#726) 2020-09-12 16:51:30 -04:00
d2game remove d2asset singleton (#726) 2020-09-12 16:51:30 -04:00
d2networking remove d2asset singleton (#726) 2020-09-12 16:51:30 -04:00
d2script lint fixes (#615) 2020-07-23 12:56:50 -04:00
docs Fix and QA (#325) 2020-06-13 18:34:45 -04:00
scripts Added multiplayer support (#336) 2020-06-18 14:11:04 -04:00
.editorconfig Changes necessary for migration to org account (#67) 2019-11-02 17:38:39 -04:00
.gitignore Performance/Memory Improvements (#365) 2020-06-20 21:07:36 -04:00
.golangci.yml Linter (#427) 2020-06-23 22:15:31 -04:00
.travis.yml Don't try to copy config.json on travis (#263) 2019-12-19 20:25:44 -05:00
build.sh Update build.sh (#710) 2020-08-24 22:26:24 -04:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2018-11-22 10:54:08 -05:00
CONTRIBUTORS Added patreon supports to credits (#623) 2020-07-25 09:45:31 -04:00
d2discord.png Fixed walking animations and pathing bugs. (#345) 2020-06-20 00:40:49 -04:00
d2logo.ico More build updates. Added build info to game. 2019-11-02 16:15:16 -04:00
d2logo.png Fixed walking animations and pathing bugs. (#345) 2020-06-20 00:40:49 -04:00
go.mod Fix bad file names (#626) 2020-07-26 13:06:37 -04:00
go.sum Remove star, update refs. (#625) 2020-07-26 12:55:10 -04:00
LICENSE Create LICENSE 2019-10-25 18:47:19 -04:00
main.go remove d2asset singleton (#726) 2020-09-12 16:51:30 -04:00
README.md Reorganize run.sh (#457) 2020-06-25 13:08:33 -04:00
rh.exe Final modification for builds 2019-11-02 16:25:24 -04:00
tagdev.bat CI release updates 2019-11-02 13:41:03 -04:00

OpenDiablo2

CircleCI Code Status

Logo

Join us on Discord!
Development Live stream
Support us on Patreon

We are also working on a toolset:
https://github.com/OpenDiablo2/HellSpawner
Please consider helping out with this project as well!

About this project

OpenDiablo2 is an ARPG game engine in the same vein of the 2000's games, and supports playing Diablo 2. The engine is written in golang and is cross platform. However, please note that this project does not ship with the assets or content required to play Diablo 2. You must have a legally purchased copy of Diablo 2 and its expansion Lord of Destruction installed on your computer in order to run that game on this engine. If you have an original copy of the disks, those files should work fine as well.

We are currently working on features necessary to play Diablo 2 in its entirety. After this is completed, we will work on expanding the project to include tools and plugin support for modding, as well as writing completely new games with the engine.

Please note that this game is neither developed by, nor endorsed by Blizzard or its parent company Activision.

Diablo 2 and its content is ©2000 Blizzard Entertainment, Inc. All rights reserved. Diablo and Blizzard Entertainment are trademarks or registered trademarks of Blizzard Entertainment, Inc. in the U.S. and/or other countries.

ALL OTHER TRADEMARKS ARE THE PROPERTY OF THEIR RESPECTIVE OWNERS.

Building

To pull the project down, run go get github.com/OpenDiablo2/OpenDiablo2

On windows this folder will most likely be in C:\users\(you)\go\src\github.com\OpenDiablo2\OpenDiablo2

In the root folder, run go get -d to pull down all dependencies.

To run the project, run go run . from the root folder.

You can also open the root folder in VSCode. Make sure you have the ms-vscode.go plugin installed.

Linux

There are several dependencies which need to be installed additionally. To install them you can use ./build.sh in the project root folder - this script takes care of the installation for you.

Contributing

The imports for this project utilize github.com/OpenDiablo2/OpenDiablo2. This means that even if you clone the repo, changes will not be taken as it will still pull from the main repo's files. In order to use your local version, add the following to go.mod in the base folder:

replace github.com/OpenDiablo2/OpenDiablo2 => /your/forked/import/path

This will tell go to use your local path instead of the official repo. Be sure to exclude this change from your pull requests!

If you find something you'd like to fix thats obviously broken, create a branch, commit your code, and submit a pull request. If it's a new or missing feature you'd like to see, add an issue, and be descriptive!

If you'd like to help out and are not quite sure how, you can look through any open issues and tasks, or ask for tasks on our discord server.

VS Code Extensions

The following extensions are recommended for working with this project:

  • ms-vscode.go
  • defaltd.go-coverage-viewer

When you open the workspace for the first time, Visual Studio Code will automatically suggest these extensions for installation.

Alternatively you can get to it by going to settings Ctrl+,, expanding Extensions and selecting Go configuration, then clicking on Edit in settings.json. Just paste that section where appropriate.

Configuration

The engine is configured via the config.json file. By default, the configuration assumes that you have installed Diablo 2 and the expansion via the official Blizzard Diablo2 installers using the default file paths. If you are not on Windows, or have installed the game in a different location, the base path may have to be adjusted.

Profiling

There are many profiler options to debug performance issues. These can be enabled by suppling the following command-line option and are saved in the pprof directory:

go run . --profile=cpu

Available profilers:
cpu mem block goroutine trace thread mutex

You can export the profiler output with the following command:
go tool pprof --pdf ./OpenDiablo2 pprof/profiler.pprof > file.pdf

Ingame you can create a heap dump by pressing ~ and typing dumpheap. A heap.pprof is written to the pprof directory.

You may need to install Graphviz in order to convert the profiler output.

Roadmap

There is an in-progress project roadmap, which will be updated over time with new requirements.

Screenshots

Main Menu

Select Hero

Select Hero

Additional Credits