From 794cf151b93b659179fbbc6f3a02e610b94fe35f Mon Sep 17 00:00:00 2001 From: Collin Smith Date: Wed, 25 Nov 2020 01:27:56 -0800 Subject: [PATCH] Updated readme with recent gradle changes and (hopefully) better descriptions --- README.md | 105 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 62 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 5e4a3dab..c52c8a15 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [Join us on Discord!](https://discord.gg/qRbWYNM) This is my attempt at rebuilding Diablo II from scratch. There is still a long -ways to go, but a lot of the core is there. The game itself uses 100% original +way to go, but a lot of the core is there. The game itself uses 100% original Diablo II assets which are not (and will never be) provided, i.e., you should already own a copy of the game to play this. I am going to do my best to remain faithful to the original game, however I am planning on changing and adding @@ -15,18 +15,17 @@ Unlike the original game, this version supports just about any reasonable aspect ratio (4:3, 16:9, 18:9, 21:9), however by design I'm locking the game to 480px in height because the original game assets are all geared for that (i.e., the width is dynamic). The expansion did introduce 800x600 support, and I may -end up supporting that for the desktop version in the future (specifically for -some of the multiplayer lobby stuff), but it's not necessary for the core -functionality. The mobile version currently uses 360px height to make selecting -UI elements easier, however since much of the UI panels are 480px, in-game is -locked at 480px, but I will change this in the future or at least provide -scaling on a per-component basis (text). This does run on Android, and I have -been using a Galaxy Note 5 as the min spec when testing, but older phones may -work as well, especially after optimizations have been made. I can already play -Diablo II on PC, my goal is to be able to sit back and play it casually with my -friends while also supporting cross-platform play. This game supports local -play that can then be taken online (similar to Open Battle.net), with a more -secure option being far beyond that. +end up supporting for the desktop version in the future (specifically for some +multiplayer lobby stuff), but it's not necessary for the core functionality. The +mobile version currently uses 360px height to make selecting UI elements easier, +however since much of the UI panels are 480px, in-game is locked at 480px, but I +will change this in the future or at least provide scaling on a per-component +basis (text). This does run on Android, and I have been using a Galaxy Note 5 as +the min spec when testing, but older phones may work as well, especially after +optimizations have been made. I can already play Diablo II on PC, my goal is to +be able to sit back and play it casually with my friends while also supporting +cross-platform play. This game supports local play that can then be taken online +(similar to Open Battle.net), with a more secure option being far beyond that. *NOTE: This is not playable yet, but the game runs and you can load save files, walk around a bit and look at your characters.* Game saves are not modified @@ -38,14 +37,14 @@ compatible with playing with users using the original game client. [![SP Test](https://media.giphy.com/media/8PoUfw52rtlACeWMbB/giphy.gif)](https://www.youtube.com/watch?v=oKYNsIPr0tY) # Features -- Written using Java + LibGDX + OpenGL + Flatbuffers +- Written using Java + LibGDX + OpenGL + Flatbuffers + Netty - Runs on PC, Android and eventually more (IOS, Linux, etc.) - Cross-platform multiplayer -- Dedicated servers, TCP/IP (listen servers) connections, and single player -- Full console, including CVAR support and key bindings +- Dedicated servers, TCP/IP (listen servers), and single player +- Full console, including CVAR support and custom key bindings - Controller support - Platform-specific features (Android touch, PC mouse, etc) -- Scalable UI (Partial for now) +- Scalable UI # Screenshots ![In-Game](https://raw.githubusercontent.com/collinsmith/diablo/master/screenshots/Clipboard-1.png) @@ -60,50 +59,70 @@ the desktop module only), however you can circumvent this by following [this post](https://github.com/collinsmith/riiablo/issues/6#issuecomment-465661949) which explains which files to modify and references to delete. -#### Windows -```$etc +Two environment variables can be used to automatically set the D2 installation +and save directories if they are not automatically detected, and you do not want +to use command-line arguments every time you launch the game. +```bash +D2_HOME=/Diablo2 +D2_SAVE=/Diablo2/Save +``` + +Otherwise, using the `--help` command-line argument will show a list of all +available options -- including manually specifying your D2 installation. + +#### Building +```bash git clone https://github.com/collinsmith/riiablo.git cd riiablo -gradlew desktop:dist -java -jar desktop/build/libs/desktop-1.0.jar -home "C:\diablo" +gradlew desktop:run ``` -Sometimes it may be necessary to also run `gradlew --refresh-dependencies` + +#### Windows +Typical D2 installations should be automatically detected and configured +(including existing saved games). If a D2 installation cannot be detected (or +you would like to do something like change which saved games to use), see +the above instructions on using command-line arguments. #### Linux / MacOS -I have not tested support on any Linux distros yet -- but it should work. Since -this project is developed using the MPQ format from the Windows installation, -it's likely that only the Windows MPQs will work. If there are any additional -steps required, let me know and I can add them until I get a chance to test -this myself. +This project was developed using the native Win32 MPQ files, so you will need +to copy them from your Windows installation (whether that be Wine or just a +copy of the files). Detection of the MPQs may be spotty and require manually +specifying them via command-line arguments or environment variables (see above). #### Android -Steps will be provided when the project is further along and the configuration -process can be cleaned up a bit. There are Android-specific implementations of -some core gameplay systems, but everything is validated to work on Android. +Debug APKs can be created with `gradlew android:assembleDebug`, however +configuring the app on a device is a bit of a pain at this time unless you can +manually copy the resources from your Win32 installation onto your device in the +app data directory. This will require having `logcat` running so that you can +see any errors it spits out about where it's looking for the files. This process +will be made easier in the future. #### IntelliJ - [Importing into Intellij/Android Studio](https://libgdx.badlogicgames.com/documentation/gettingstarted/Importing%20into%20IDE.html#intellij) -- Default run configurations are included within [.idea/runConfigurations](https://github.com/collinsmith/riiablo/tree/master/.idea/runConfigurations), -however the program args must be changed to point to _your_ Diablo 2 directory. +- Default run configurations are provided within [.idea/runConfigurations](https://github.com/collinsmith/riiablo/tree/master/.idea/runConfigurations). The default resolution is 854x480, other configurations are provided to ensure -a wide range of support `-w` arg can be used to start in windowed mode, while -`F12` can be used in-game to disable the debug UI. +a wide range of support `--windowed` arg can be used to start in windowed mode, +while `F12` can be used in-game to disable the debug UI. +- Environment variables `D2_HOME` and `D2_SAVE` can be used if you are a pluggy +user. + +# Tools +Aside from the main tools below, other tools are contained within `:tools`. To +view all available tools, use `gradlew :tools:projects -q`. `--help` is your +friend. # MPQ Viewer -Still a work in progress, but this allows you to look at the game's assets and -is used to test my MPQ library implementation. Currently this does not allow -for viewing all files that the game can load, but those should hopefully come -in the future. This should be a replacement for DR Test in the future, at least -in a general sense, since the UI I made is much more helpful when writing the -game code. +Allows you to look at the game's assets and debug issues with specific files. +Not all file types are supported at this time, but those should hopefully come +in the future. This is a tool used in development and is not a replacement for +tools like DR Test, but does provide the same functionality.
Screenshot MPQ Viewer
-# Map Builder -Used to test the map building algorithm/renderer. This is very basic at the -moment. +# Map Viewer +Tests the map building algorithm/renderer. This is very basic at the moment.
Screenshot Map Builder