Coder Social home page Coder Social logo

openstrike's Introduction

OpenStrike

F/OSS Desert Strike and Jungle Strike reimplementation.

Status

The project is currently on the early stages of development, and is not yet playable. What it can offer right now:

  • An utility to unpack Desert/Jungle Strike .DAT files
  • Game graphics viewer
  • Viewer for complete game levels
  • A game skeleton which currently demonstrates an ability to load and render some sprites and animations

Building

Dependencies:

  • cmake
  • SDL2

The project also uses libSDL2pp, C++11 bindings library for SDL2. It's included into git repository as a submodule, so if you've obtained source through git, don't forget to run git submodule init && git submodule update.

To build the project, run:

cmake . && make

Running

To run any of binaries produced by the project, you need original Desert/Jungle Strike .DAT files (further referred as file.DAT)

Unpacker

To view all entries in .DAT file:

% util/unpacker/unpacker -l file.DAT

To extract them into current directory:

% util/unpacker/unpacker -x file.DAT

Graphics viewer

util/gfxviewer/gfxviewer file.DAT

Use arrow keys or Page Up/Page Down to navigate through graphics and Q or Escape to close the viewer.

Map viewer

util/mapviewer/mapviewer file.DAT

Use arrow keys to scroll the map, +/- to zoom and Q or Escape to close the viewer.

Game

src/openstrike file.DAT

Use arrow keys to control the chopper, Z/X/C to fire. That's all it actually does for now.

Author

License

GPLv3, see COPYING

The project also bundles third party software under its own licenses:

  • extlibs/SDL2pp (C++11 SDL2 wrapper library) - zlib license
  • extlibs/boost (a tiny bit from boost) - Boost Software License

openstrike's People

Contributors

amdmi3 avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openstrike's Issues

Implement constants manager

There's bunch of constants derived from the game, which may also differ between Jungle and Desert strikes. There's need for a manager to incapsulate them in a single place and return value for a specific game.

Implement decoding of BLOCKS

There are specific kinds of graphics entries in the .DAT files which have BLOCKS sections. They are decoded differently from normal sprites and need to be decoded in order to paint game map.

Audio support

Audio is stored in known "Creative Labs voice data" format - should be easy to extract and play

Data overrides

It turns out that in some cases original data is crippled (fence bboxes, for example). There's need for facility to hold partial overrides for that data to make more accurate alternatives. This will also be a first step for libre data remake.

Implement ordered rendering

Sprites should be sorted to be drawn in correct order. Bounding boxes should likely be taken into account as well.

Another layer of SpriteManager

Current SpriteManager is pretty much low-level, another layer of management is needed which will operate on sprite groups (for example, a rotor animation) and handle loading required sprites.

Implement ground layer decoding and rendering

Jungle strike: ground format is pretty straightforward - 2D array of shorts. It should be simple to render that with blocks
Desert strike: it is currently unknown where ground graphics are stored and how they are placed on the level

Implement bbox decoding

Buildings seem to have something like bounding box encoded in the data - we need to decode it and use for collision detection and correct ordered rendering.

Implement gunfire

Implement firing guns, hydras and hellfires which should hit the ground.

Implement stub ground renderer

Until map formats are decoded, there's need to stub ground renderer, which should just fill the map with solid color and draw a grid.

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.