Collin Smith 679984b9b5 Rewrote MapRenderer, added interpolated movement, and added path finding with collision detection
Removed gdx-ai dependency and replaced GraphPath with my own implementation
Refactored Entity.updatePath to Entity.setPath
Removed src position from path (first element is now first target)
MapPather works in real-time -- improvements to be made
Disabled updateTask in client to use update(float) entity method instead
Added floating point position support to MapRenderer camera
Rewrote MapRenderer with optimizations for 60%+ FPS improvement!
Fixed numerous performance hogs and made optimizations (more to come)
Fixed issue where render bounds was calculated before zoom applied
Frame time on Android (GN5) down from 25ms to 10ms
Frame time on PC seeing similar results (now 0.17ms from about 0.45)
Implemented gdx-ai path finder for testing
Repo cleanup
Added support for path finding metrics for debugging purposes
Disabled some Entity debug messages
Implemented path smoothing on generated paths
Created MapGraph.MapGraphPath
MapRenderer will now render path as lines between points
Entity will clear path once final target reached
Added angle and animation support to Entity pathing
Entities will now change to run animation and set direction to target angle
Implemented basic touchpad support with new movement system
Replaced MapRenderer and MapViewer and removed any existing dependencies
Removed code comments from older revisions
MapRenderer.drawDebug changes projection matrix automatically
Added debug support for path smoothing
Added back networking to player movements
Removed old MapPather and references
Deleted Entity.move() as it's now irrelevant
2019-02-20 21:44:30 -08:00
2019-01-12 01:04:56 -08:00
2019-01-12 01:04:56 -08:00
2019-02-15 02:11:56 -08:00
2019-02-09 03:49:26 -08:00
2019-01-12 01:04:56 -08:00
2019-01-12 01:04:56 -08:00
2019-01-12 01:04:56 -08:00
2019-01-12 01:04:56 -08:00
2019-02-10 02:42:20 -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
Description
Diablo II remade using Java and LibGDX
Readme Pixar 30 MiB
Languages
Java 99.7%
GLSL 0.3%