Diablo II remade using Java and LibGDX
Go to file
Collin Smith d3dbdb06bd Greatly improved MapRenderer and implemented basic entity interaction
MapRenderer will now renderer more closely to the game itself
Background layer and foreground layers are now interwoven so entities will render behind correct objects,walls,etc
Shadow abstracted from animation rendering to render separately
Animation class now maintains a box that is representative of all its current layers (COF bbox is inaccurate)
Added getBox(int) to DC and began process to change implementation behavior of how animation boxes should be retrieved
Added className to Entity and Map.Zon to constituent classes
Changed how Labels are implemented in Entity
Added drawShadow method to Entity
Fixed Entity BBox checking to check for more accurate Animation BBox
Added Entity interaction range and interaction methods
Updated Entity API in Monster and StaticEntity
Added some i18n support
Added Waypoint support to StaticEntity
Fixed DS1 shadow layer
Added support for default orientation to DS1.Cell
Changed visibility of Map.Zone.map and Map.Zone.level
Added copyShadows to Map.Preset
Added Map.flags methods to retrieve flags of a specified subtile in world-space
Added MapGraphPath.isEmpty
Implemented Label support to MapListener and GameScreen
Added entity target support to MapListener
Implemented improved MapListener API to GameScreen
Added interact support to AI
Added basic greeting to Npc AI on interaction
2019-03-01 23:26:47 -08:00
android Added some Android-specific config improvements 2019-02-23 15:12:57 -08:00
core Greatly improved MapRenderer and implemented basic entity interaction 2019-03-01 23:26:47 -08:00
desktop Added basic multiplayer lobby support 2019-01-16 20:42:46 -08:00
ds1viewer init 2019-01-12 01:04:56 -08:00
gradle/wrapper init 2019-01-12 01:04:56 -08:00
mapbuilder Rewrote MapRenderer, added interpolated movement, and added path finding with collision detection 2019-02-20 21:44:30 -08:00
mpqviewer Fixed compat with new Animation class API 2019-01-28 14:55:08 -08:00
screenshots Updated MapBuilder screenshot 2019-02-15 02:11:56 -08:00
server Added functional networking with multiple clients in a server rendered correctly 2019-02-08 20:56:04 -08:00
tester Fixed font metrics 2019-02-09 03:49:26 -08:00
.gitignore init 2019-01-12 01:04:56 -08:00
build.gradle Added extremely basic path-finding algorithm 2019-02-17 18:50:14 -08:00
gradle.properties init 2019-01-12 01:04:56 -08:00
gradlew init 2019-01-12 01:04:56 -08:00
gradlew.bat init 2019-01-12 01:04:56 -08:00
README.md Updated README 2019-02-10 02:42:20 -08:00
settings.gradle Added server module with extremely basic socket support 2019-01-14 01:54:17 -08:00

LibGDX Diablo II

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 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 additional features as I think they become necessary. I will write articles in the future explaining how I was able to accomplish certain things, and how some core systems work.

Some important changes that I will note are that this version supports a 16:9 aspect ratio (the original was 640x480 and expansion was 800x600), and will eventually support wider. Because I'm limited to the original game assets, the game will be upscaled to the desired resolution, and 480p seems to work well on a smart phone, however I want to target 360p for the menus because components are sized much better. 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. 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 yet, and 1.13c+ saves are supported (support for some other versions may be added in the future, but it isn't a priority, and I expect most people to create new characters anyways). I do not plan on, or want to make this game compatible with playing with users using the original game client.

Features

  • Written using Java + LibGDX + OpenGL
  • 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
  • TODO Controller support
  • TODO Platform-specific features (Android touch, PC mouse, etc)

Screenshots

In-Game Create Character

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.

Screenshot MPQ Viewer

Map Builder

Used to test the map building algorithm/renderer. This is very basic at the moment.

Screenshot Map Builder