• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Ludicolo

WeatherGirl

Magical Scary Person
5
Posts
12
Years
    • Seen Jan 18, 2019
    Introduction

    Okay, first of all, that isn't a title, it's more a tribute to something hilarious, because my brother and I haven't agreed on a title yet. I like flowy words. He likes man things.

    You know how siblings work.

    Anyway. I'm filing this under "idea" because it's a little lower-level than using a game maker, so I'm not sure I fit the usual minimum requirements for a non-idea, because my milestones will be different.

    Environment

    The development itself is being done on a Windows 7 machine in Eclipse, using the SDK for Android 2.1 (best compatibility, particularly since the Kindle Fire uses a variant of 2) and the ADT plugin. This does come packaged with an Android emulator so I don't have to run stuff on the target hardware every two seconds, and it will also eventually allow PC play. This hardware target will facilitate interaction with the program by means of touch screen or clicking.

    I learned Java years ago, but I'm new to Android development, so learning how to connect objects to the display has been frustrating, to say the least. The documentation is helpful, but the tutorials are geared primarily toward utilities rather than video games. That said, I'm getting something of a handle on it.

    Structure

    Main Activity class: primary functions are initialization, state management, and input management
    EggGroups: public interface containing integer assignments for egg groups (complete)
    ExpTypes: public interface containing integer assignments for experience groups (erratic, fast, etc.), plus two-dimensional arrays containing exp values for those respective groups (complete)
    Gender: public interface containing integer assignments for gender (complete, and yes it's two lines long, but I am not going to mix up male and female ever)
    Species: public class defining a Pokemon species, e.g. Bulbasaur. Constructor used to define name, pokedex number, regional number, male and female percents, types (int array), Abilities (Ability array, undefined -- will probably expand to include integer values for percentage of wild Pokemon to receive each ability; hidden abilities would list 0 in this field), classification (String for dex), height and weight (arrays of strings for imperial and metric), capture rate, egg steps, experience growth (as defined in ExpTypes), base happiness, base exp (for opponent exp calculations), EVs (the ones given, not the ones accumulated), flee flag, egg groups (as defined in EggGroups), and Pokedex entry.
    Type: public interface containing integer assignments for types and defining a double array of the damage multipliers
    Status: public interface containing integer assignments for status conditions (physical and mental)
    Pokemon: Defines an individual Pokemon. Name, shiny (boolean), species, gender, variation, ability, level, experience, to next level, egg state (boolean), happiness, IVs, EVs, stats, status conditions.
    DefSpecies: uses Species to define Pokemon.

    Animations are handled with a series of PNG images. My first thought was actually to use WebView for GIFs, but even though the hardware handled that fine, the emulator didn't -- and I do very much want this to work with the emulator. The animation speed and animation name are contained in one xml file for each type. Each Pokemon has a front, a back, a front shiny, and a back shiny: these XML files are called f_x, b_x, fs_x, and bs_x, respectively, where x is the Pokedex number of the Pokemon.

    Applicable Results

    Setting up these items means that creating a wild lv 10 Bulbasaur with randomized values can be done in one line:
    Pokemon wild_pokemon = new Pokemon(10, DefSpecies.Bulbasaur);

    The triggers I'm not as worried about, because all it does is change the game state. The wild Pokemon itself can be created while the battle is loading, based on the specifications given with the map.

    All Pokemon through the 5th generation to be used with their respective battle animations.

    Currently I can make a Chikorita and a Bulbasaur punch each other in the face, though the attack animations and actual UI (lol art) are missing.

    Immediate Targets

    Next development target is to dabble a little in basic 3D environments, starting with a flat, grassy plain. D;

    Battle scene progress will happen when I figure out what graphics to use around the Pokemon. HP bar? EXP? Buttons for actions? Also have to make the buttons big enough to interact with should anyone install it on a 3.7" phone...

    My brother's functional thoughts (aka the stuff you actually care about)

    x Customizable trainers
    (My thought: sure, just generate the animations based on user-selected parts. Layers using transparency can be used for the character portrait for battles and the trainer card.)

    x Easy to add areas
    (My thought: Isolate map-related items to a few, easily-understood files. If I get the 3D environments down, I could potentially reduce every map to an array of integers plus header information.)

    x A mode where fainted Pokemon cannot be revived
    (Per his "I love challenges" friends' requests. Not hard, but mode would have to be decided prior to beginning the game.)

    He's also got this huge convoluted plot thing going, but that's not my forte. He has a bunch of towns, starting with Green Branch, a bunch of leaders, two evil teams, and a secret conspiracy. Also a rival who thinks he's better than you. And a neutrality system. (Ever wanted to replace gym leaders with Team Rocket members?) Oh, and some level scaling, for great justice.

    I'm hoping that making a thread will keep me on track.
     
    Back
    Top