Git Product home page Git Product logo

d2clone-kit's Introduction

Diablo 2 is arguably one of the best action RPG created ever. This is humble attempt to recreate and, hopefully, deconstruct it using Common Lisp programming language and related techniques.

Features

  • Support for Tiled map format.
  • Support for Aseprite sprite format.
  • Support for CastleDB database format.
  • Performant Entity-Component-System implementation supporting parent-child entitiy relationships.
  • Prefab subsystem allowing creation of new components using predefined file-backed template.
  • Simple yet powerful events subsystem.
  • Full-blown game character subsystem.
  • Simple actions subsystem, providing building blocks for complex character behaviour.
  • Basic game session utilities.
  • 2D renderer with functional interface.
  • Sprite batching subsystem.
  • Simple DSL for creating GUI windows by Nuklear library.
  • Naïve implementation of A* pathfinding algorithm.
  • Powerful debugging facilities, including entity tree dumping and visual debugging.
  • Loading assets from zip files.
  • Simple yet versatile configuration subsystem.
  • Logging subsystem.

Installation

d2clone-kit requires liballegro to function. To install liballegro, refer to your distribution's package manager; for instance, on Debian derivatives (including Ubuntu and Mint):

sudo apt-get install liballegro-acodec5.2 liballegro-audio5.2 \
    liballegro-image5.2 liballegro-dialog5.2 liballegro-ttf5.2 \
    liballegro-physfs5.2 liballegro-video5.2

Currently the following Common Lisp implementations are tested and supported by d2clone-kit:

You can run it on x86_64 Linux, macOS, and Windows, while SBCL on Linux is the recommended platform.

To install d2clone-kit, clone the repository to your Quicklisp's local-projects directory (assuming you have Quicklisp installed):

$ git clone https://gitlab.com/lockie/d2clone-kit \
    ~/quicklisp/local-projects/d2clone-kit
$ sbcl --quit --eval \
    "(progn (ql:register-local-projects) (ql:quickload :d2clone-kit))"

Glossary

  • action - abstraction of a multi-frame action performed by an entity. Unless stated otherwise, action is represented with its global index.
  • isometric coordinates - coordinates in isometric projection.
  • orthogonal coordinates - floating point in-game world coordinates. One unit of length corresponds to one map tile width, typically 64 pixels.
  • prefab - system-specific object loaded from file and used as a template to create new instances of system's component.
  • screen coordinates - integer screen pixel coordinates.
  • viewport coordinates - screen pixel coordinates relative to the current camera position.

Roadmap

See ROADMAP.

Legal

d2clone-kit is licensed under the GNU GPL license version 3. See LICENSE.

Diablo® II - Copyright © 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.

d2clone-kit and any of its maintainers are in no way associated with or endorsed by Blizzard Entertainment®.

d2clone-kit's People

Contributors

lockie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

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.