Giter Club home page Giter Club logo

pokengine's Introduction

Pokémon Battle System

Blastoise versus Charizard, amist a shower of hail

A in-progress Pokémon battle system written for the web. Has support for online multiplayer battles via websockets (given a Node.js server to run it on). The goal is to have a feature-complete, true-to-the-games battle system that anyone can adapt and include inside their own games—the battle system has gotten so complex over the years that writing one's own (that even begins to approach the complexity of the actual games) is such a massive endeavour, it seems a waste for people to spend many months (if not years) reimplementing it themselves. Other existing systems out there are either nowhere near feature-complete (and inextensible in places) or have not been built with a focus on emulating the visual side of battles. This project aims to tackle both.

At the moment, certain parts of the system are linked with (http://pokengine.org) as this is a good test-bed for integrating the battle system into a functioning overworld system, but I'll get round to completely decoupling it soon. (It oughtn't create any problems at the moment, though, as the changes will only be minor—some URL and port number changes for multiplayer battles, for instance.)

What does it have so far?

The main functionality is all there: you can have perfectly good battles (both trainer battles and wild battles), with a variety of moves, abilities and items. There are weather effects, status conditions, animations (of both moves and Pokémon)—you name it. Pokémon can gain experience, learn new moves and evolve. You can check the commit list, or visit (http://varkor.com/pokengine/) for a change log.

Given a Node.js server to run on, there are online battles between two players at once. I've always found it a pity that many fan games have simply left out any multiplayer functionality due to the difficulty of doing it well—with it built in, it'd be great to see many more with that ability.

What's missing?

In terms of features, most of it's there. The main haul is getting all the moves, items and abilities added (this is in progress, but it's going to take a while to complete). There are still a few later-generation features that haven't been included yet, however. These include:

  • Triple Battles
  • Horde Battles
  • Rotation Battles
  • Safari-style Battles
  • Mega Evolutions There are also still a number of minors bugs to address, but nothing that should affect gameplay too badly. If you notice anything that doesn't look quite right, or think of a feature that's been forgotten—please do add it to the issues list!

Screenshots

(Once more moves / locations / etc. have been added, I'll record a whole collection of screenshots.) Bulbasuar evolving into Ivysaur

The evolution screen in action.

pokengine's People

Contributors

fuzzball288 avatar kyledovey avatar varkor 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pokengine's Issues

Depth map for battle backgrounds

Weather particles such as hail currently just takes account of a sky height variable. This is a crude method and would be much better to be replaced with a proper map of depth for each background.

Relearning special moves

Pokémon who have learned special moves (such as event moves they would not normally learn) should be able to relearn them through a move relearner, should they be forgotten. Perhaps each Pokémon should keep track of every move they have learnt?

Interactive battle backgrounds

Battle backgrounds could be made a lot more dynamic through forming puddles, reflections in ice, leaves blowing around, etc.

Rotation battles

Rotation battles, such as those in Generation VI, should be added.

AI intelligence levels

AI trainers should use different techniques (including using items, switching out, etc.) depending on their trainer type. For example, Gym Leaders should be better at using moves than Bug Catchers.

O-Powers

There's currently no support for O-Powers in the battle system. (They may not even be desired.)

Anaglyph 3D

A red/cyan anaglyph 3D mode would be fun and would enhance the visual effects in battles. It also shouldn't be too difficult to implement.

Complete animation system for moves

For move animations to be completely fully-featured, there are a number of features that need to be added.

  • Transformation (translation, scaling, rotation) of Pokémon
  • Scaling of Pokémon in each direction independently
  • Transformation (translation, scaling, rotation) of the viewport
  • Particle effects
  • Sound effects (using both custom move-specific sounds and the Pokémon's cries)
  • Background changes and foreground overlays
  • Pokémon masking and duplication (such as fading to completely white, or making copies of itself for moves such as Double Team)

AI only use moves

AI trainers should be able to use items and switch out, just like the player.

Dark grass

There should be a mechanism for Dark Grass that triggers wild double battles and also has slightly different calculations for catch rates, etc.

Pokémon are not reset after their move animations

Sometimes this is desired (such as with Fly), but most of the time, it'd be useful to reset Pokémon display properties. This could instead be a feature of a visual animation editor, rather than a battle system feature, however.

Safari Zone mechanics

The Safari Zone uses markedly different mechanics from normal battles, but the battle system should be able to take care of them.

Sky battles

Sky battles, like in the Generation VI games, would be nice to have (and likely not difficult to add).

Keyboard controls

One should be able to use the keyboard completely, instead of (or as well as) the mouse.

Attributes should be constant when possible

In many cases, attributes (for Pokémon, for example) are calculated on-the-fly each time they are used, when they could be calculated at certain points (at the beginning of a battle, for instance) and save time during the actual battle.

Metronome does not function as intended

The move Metronome does not work properly. Its actual functionality in-game should be looked at so this system's version reflects the actual games' implementation.

Spectating battles

Spectating other people's online battles (both live and after the event) would be nice. This feature is probably going to be needed for online battles anyway (for the server).

Pokémon should always attempt to target someone

If the Pokémon another had targeted has fainted, the attacker should attempt to use their move intelligently on a different Pokémon. Note that this does not apply if their target has simply disappeared using Fly, etc.

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.