Giter Club home page Giter Club logo

openpanzer's Introduction

Open Panzer - HTML5 Panzer General 2 Game

Open Panzer

http://panzermarshal.com http://www.linuxconsulting.ro/openpanzer/

Copyright(c) 2012-2020 Nicu Pavel [email protected]

The code of Open Panzer is issued under the GNU General Public License (GPL), version 2 or later. By contributing code or content to the project, you agree for it to be distributed under GPL or whatever other open-source license the project maintainers choose in the future.

http://www.gnu.org/licenses/old-licenses/gpl-2.0.html

Supported browsers:

OpenPanzer respects latest W3.org HTML5, CSS3 specs and browser specific specs are kept to a minimum -> null. Base supported javascript engine is V8 open source engine. Code should be kept to basic features of ECMAScript 5.

OpenPanzer works in recent Google Chrome, Mozilla Firefox, Safari and Opera. OpenPanzer works on Android (tested on 2.2, 2.3, 4.x) and iOS devices (5.0+).

Internet Explorer will probably work with version 11 but extensive code changes for IE aren't a priority.

Source code structure description:

.
├── css                        - style sheets used for ui elements
│   ├── fonts.css              - fonts used in game
│   ├── ui-combat-info.css     - animations used during combat
│   ├── ui-equipment.css       - equipment window style and positioning
│   ├── ui-message.css         - message windows style and positioning
│   ├── ui-startmenu.css       - main menu shown when game starts
│   ├── ui-unit-info.css       - unit information dialog
│   └── ui.css                 - main window, main menu, generic dom elements
├── js
│   ├── ai.js                  - AI engine
│   ├── animation.js           - draws a series of sprites in a time interval
│   ├── dom.js                 - generic function that deal with DOM
│   ├── eventhandler.js        - event driven function (unused atm)
│   ├── game.js                - game manager
│   ├── gamerules.js           - attack, move, resupply, reinforce, distance rules
│   ├── gamestate.js           - save/load game state to HTML5 local storage
│   ├── map.js                 - hex, map and player objects
│   ├── maploader.js           - loads scenarios and maps from a xml file
│   ├── prototypes.js          - generic definitions
│   ├── render.js              - canvas rendering functions
│   ├── sound.js               - generic unit sounds functions
│   ├── style.js               - canvas style for render.js
│   ├── unit.js                - unit and transport objects
│   └── ui.js                  - handle mouse, builds/updates UI windows
├── resources
│   ├── animations             - images with 1 row of sprites for animations
│   ├── campaigns              - campaigns and campaignlist.js index converted with tools/campaign/campaign-convert.py
│   ├── equipment              - contains units equipment/properties
│   ├── fonts                  - fonts used in OpenPanzer
│   ├── maps                   - big images for the map background
│   ├── scenarios              - scenarios and scenariolist.js index converted with tools/map/mapconvert.py
│   ├── sounds                 - sounds used for units
│   ├── ui
│   │   ├── buttons            - generic buttons (ok/close)
│   │   ├── cursors            - mouse cursors used in game
│   │   ├── dialogs
│   │   │   ├── equipment      - images for equipment buttons/dialog
│   │   │   ├── startmenu      - images for start menu dialog
│   │   │   ├── ui-message     - images for message dialog
│   │   │   ├── unit-context   - images for buttons that pop up on unit selections
│   │   │   └── unit-info      - images for unit info stats
│   │   ├── flags              - small (for cities) and big (for unit info) flags
│   │   ├── indicators         - small indicators that are drawn on the map (unit has fired)
│   │   ├── menu               - images used on main window text bar or main menu
│   │   ├── splash             - splash images used as loading screen on android/ios
│   │   ├── page               - images used outside main window
│   └── units                  - 1x9 sprites with unit orientations for each unit
├── tools
│    ├── campaign              - converts campaigns from PG2 .cam format
│    ├── equipment             - converts PG2Suite exported equipment to js equipment
│    ├── icons                 - converts SHPTool exported bmp to transparent png
│    └── map                   - converts SCN,MAP,TXT files to OpenPanzer XML
│
└── index.html                 - html file with basic DOM structure for openpanzer

Development notes:

OpenPanzer doesn't use any extra javascript libraries (like jquery, node etc), and should be kept like this. Styling DOM elements should be done in their CSS files. Adding style for static elements in the code shouldn't exist. All positioning of DOM elements should be done in CSS files. Bottom line: if something can be done in a css file then there it should go not in the javascript code. Code additions should follow the coding style used so far (for object creation etc).

Main testing is done on Google Chrome and Firefox under Linux.

Running the code locally in Google Chrome requires --allow-file-access-from-files option when starting Google Chrome.

Graphical assets and other resources:

Unit images are taken from OpenGeneral Icons project: http://opengeneral.sourceforge.net/db/icons/ This game has been built around the specification of the original game compiled by Luis Guzman: http://luis-guzman.com/links/PG2_FilesSpec.html Unit equipment is exported from PG2Suite: http://luis-guzman.com/PG2_Suite.html before being converted into a json format.

openpanzer's People

Contributors

nicupavel avatar lucaiuli avatar muertet 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.