Menu
Forums
Members
Registered members
Current visitors
New profile posts
Search profile posts
Latest activity
New posts
Fan Games
All Game Jams
Completed Releases
Playable Demos
All Releases
Other Releases
Development
Resources
Search resources
Project Sandbox
Pokémon Essentials Wiki
Team Recruitment
Streams
Multi-Viewer
Log in
Register
What's new
Search
Search
Search titles only
By:
Members
Registered members
Current visitors
New profile posts
Search profile posts
Latest activity
New posts
Menu
Log in
Register
Install the app
Install
Forums
Game Corner
Other Games & Projects
Do Or Die (yes that's what I'm calling it)
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="Dragonite" data-source="post: 11891" data-attributes="member: 30"><p>I've been doing this for a month and am still not 100% sure what I want to happen to it, but I figure anything is better than nothing.</p><p></p><p style="text-align: center"><strong>What it is</strong></p><p></p><p>To make a long story short, I cloned and played around with Pokémon Unity back in September. I don't like Unity, at all, but it got me thinking (again) about what nonstandard Pokémon fan games might look like.</p><p></p><p>Lots and lots of fantastic games have come out of Pokémon Essentials [citation needed], but developing in fourteen-year-old software has its issues and Ruby is kind of a <s>terrible</s> divisive language. With that in mind, I decided to do a sixth or seventh attempt at a turn-based battle system (Pokémon or otherwise), and to my great surprise it actually worked this time.</p><p></p><p><strong>I've only been working on this for a month so it currently only works for the parameters provided,</strong> so almost any other monsters, moves, abilities and items will be ignored or outright break. There's a bunch more stuff I have planned, though, see below, and I intend it to be open source so you can add to it if there's something you want it to do while I'm busy doing something else, or more probably, playing Skyrim.</p><p></p><p style="text-align: center"><strong>Plot</strong></p><p></p><p>It's a tool.</p><p></p><p style="text-align: center"><strong>Features</strong></p><p></p><p>Implemented:</p><p></p><p>[spoiler]</p><ul> <li data-xf-list-type="ul">A Pokémon-ish turn-based battle system that's reasonably easy to extend</li> <li data-xf-list-type="ul">The ability to localize text strings for languages other than English</li> <li data-xf-list-type="ul">Nine-slice text boxes</li> </ul><p>[/spoiler]</p><p></p><p>Planned, probably in order of priority:</p><p></p><p>[spoiler]</p><ul> <li data-xf-list-type="ul">The ability to play the game at different resolutions (within reason)</li> <li data-xf-list-type="ul">Forward-compatibility with Game Maker Studio 2, since that's going to be the version that most people are likely to use in the future</li> <li data-xf-list-type="ul">3D overworld navigation, as well as an external editor, because Game Maker Studio 1's map editor is terrible and nobody wants to hard-code map details</li> <li data-xf-list-type="ul">Event scripting (in Game Maker): writing world interactions inside the Game Maker IDE</li> <li data-xf-list-type="ul">Make sure multi (at least double) battles work, and possibly tag battles</li> <li data-xf-list-type="ul">Initiating battles from the overworld: wild random, wild stationary, trainer and otherwise, as well as cleaning up and returning to the overworld when the battle has concluded or been forfeited</li> <li data-xf-list-type="ul">Mid-battle flavor text, and the ability to interrupt the battle at a certain stage to progress or branch: you know how a lot of important Trainers in Pokémon will jump in to say something on certain events in battle, such as being down to their last Pokémon, or how other games might only require you to bring a boss down into the yellow without needing to defeat them in order to advance the story?</li> <li data-xf-list-type="ul">A Pause menu, and all of the things that you would expect to be able to do inside of it such as managing your team and applying Repels and admiring your Badge collection</li> <li data-xf-list-type="ul">Rebindable controls, for both keyboard/mouse and (common) gamepads</li> <li data-xf-list-type="ul">I still hate the idea of HM items but the world is clearly trending in that direction and they won't be difficult to make</li> <li data-xf-list-type="ul">A compiled game data format, because human-readable PBS files are slow for the computer to parse and obfuscated binary buffers are fast</li> <li data-xf-list-type="ul">Saving and loading, in a manner that can be extended without causing everything to fail catastrophically</li> <li data-xf-list-type="ul">Audio zones, as you'd find in a Bethesda game, so that you can bind an indefinite number of songs to different situations in an area (day, evening, night, plot) and have them play randomly</li> <li data-xf-list-type="ul">Event scripting (externally): I'm going to try to bind Lua, but if that ends up breaking the cross-platform constraint, over the summer I made a proto-language that I should be able to plug in</li> <li data-xf-list-type="ul">A quest/faction system, because I like that kind of thing even if most Pokémon games don't demand it</li> <li data-xf-list-type="ul">A dedicated title screen and a dedicated credits screen: a single image splash as Essentials does and/or something more interactive</li> <li data-xf-list-type="ul">Event scripting (visual): for those who would rather design than code and like the way you can click on an event type in RPG Maker, input the relevant properties and be done with it, or for those who would rather do both</li> <li data-xf-list-type="ul">3D camera trickery, to whatever degree is necessary? Think about the events that transpire atop the Dragonspiral Tower or in the depths of the Whirl Islands</li> <li data-xf-list-type="ul">Side mechanics such as breeding and farming berries or berry-like entities</li> <li data-xf-list-type="ul">Some kind of move/effect animation editor, because keyframing stuff through code is the actual worst thing ever, which is why I did so little of it for the demo</li> <li data-xf-list-type="ul">2D overworld navigation, as well as an external editor, because Game Maker Studio 1's map editor is terrible and nobody wants to hard-code map details</li> <li data-xf-list-type="ul">Some kind of Mystery Gift thing</li> <li data-xf-list-type="ul">Something vaguely resembling the Pokéwalker</li> </ul><p>Implementing missing battle effects (most function codes, abilities, items, animations) are going to probably be done at some point but I don't know when. Most of them won't be difficult but I'm more interested in most of the other things on the list than plugging in variables and effect text, but <em>someone</em> has to do it, and I don't want to make that much grunt work the job of someone who wants to use this to make a game.</p><p>[/spoiler]</p><p></p><p>Currently not interested, but can be persuaded:</p><p></p><p>[spoiler]</p><ul> <li data-xf-list-type="ul">Bug Catching Contest and Safari Zone(s)</li> <li data-xf-list-type="ul">I'll probably do at least one of the PokéNav/gear/tch/C-Gear eventually but I don't really care which, although the tch is the most modular and thus makes my nerd senses go off</li> <li data-xf-list-type="ul">Riding Pokémon would be cool but my animation skills are not nearly strong enough to do this convincingly</li> <li data-xf-list-type="ul">I think Contests are stupid but if enough people want them I'll work on them</li> <li data-xf-list-type="ul">Secret bases, Join Avenue, Battle Frontier, Ruins of Alph, Sinnoh Underground, other minor minigames</li> <li data-xf-list-type="ul">In-line colored (and otherwise formatted) text: I think this kind of thing is distracting to look at but a lot of people don't</li> </ul><p>[/spoiler]</p><p></p><p>Will not, and do not ask:</p><p></p><p>[spoiler]</p><ul> <li data-xf-list-type="ul">Distributable PBS files, and other TCPI assets beyond what I've already made available. The odds that Nintendo are going to take an interest in what I'm doing are low, and I intend to keep it that way.</li> <li data-xf-list-type="ul">Online connectivity. I've hopefully designed the player/AI pawns in a way that you don't have to rip everything apart if you want to do this yourself, but I have never used Game Maker's netcode and have no interest in starting.</li> <li data-xf-list-type="ul">A speed-up button. If your game requires a speed-up button, either you've screwed something up design-wise or humanity is beyond saving.</li> <li data-xf-list-type="ul">A less ugly UI. I'm a programmer, not a designer. I took a class on Interface Design and slept through it. If someone wants to do this for me that'd be fantastic, but for now I'm just giving you pieces and skeleton code that will probably help you make your own.</li> </ul><p>[/spoiler]</p><p></p><p>The last three lists are subject to change, depending on how development goes and how much free time I have. Obviously I'm going to keep working on this barring nuclear armageddon for as long as I can get away with it, and will hopefully remember to update this as time goes on. Check the github (below) for what is probably more up-to-date information.</p><p></p><p style="text-align: center"><strong>Screenshots</strong></p><p></p><p>I only have five and Deo prefers six, but I'll add more as I go. Images are gifs, if they don't play right-click and say "view image:"</p><p></p><p>[spoiler=Battle]</p><p>Battle opening (the final version is slightly more snappy):</p><p>[spoiler]<img src="https://i.imgur.com/BmyP4fL.gif" alt="" class="fr-fic fr-dii fr-draggable " style="" />[/spoiler]</p><p>Sample status effect:</p><p>[spoiler]<img src="https://i.imgur.com/hCGhpYu.gif" alt="" class="fr-fic fr-dii fr-draggable " style="" />[/spoiler]</p><p>Turn switching</p><p>[spoiler]<img src="https://i.imgur.com/p21ZfxB.gif" alt="" class="fr-fic fr-dii fr-draggable " style="" />[/spoiler]</p><p>Sample abilities:</p><p>[spoiler]<img src="https://i.imgur.com/BmyP4fL.gif" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p><img src="https://i.imgur.com/7vQ0CAG.gif" alt="" class="fr-fic fr-dii fr-draggable " style="" />[/spoiler]</p><p>The AI fighting itself:</p><p>[spoiler][MEDIA=youtube]n-586jZ3V2c[/MEDIA][/spoiler][/spoiler]</p><p></p><p>[spoiler=Overworld]</p><p>A basic overworld composed of the ground and planes sticking up out of the ground, as the DS games are</p><p>[spoiler]<img src="https://i.imgur.com/yLYvGK4.gif" alt="" class="fr-fic fr-dii fr-draggable " style="" />[/spoiler][/spoiler]</p><p></p><p>[spoiler=Editor]</p><p>This is my favorite part, honestly.</p><p></p><p>Slapping down entities</p><p></p><p>[MEDIA=youtube]TbtTnZ91vvc[/MEDIA]</p><p></p><p>Editor => Game</p><p></p><p>[MEDIA=youtube]44hTwYWN1Sc[/MEDIA][/spoiler]</p><p></p><p style="text-align: center"><strong>Credits</strong></p><p></p><ul> <li data-xf-list-type="ul">I <s>stole</s> re-interpreted a lot of AI code from Pokémon Essentials. (It's still pretty incomplete, though.) Whoever wrote that was a big help.</li> <li data-xf-list-type="ul">PBS files also came from Pokémon Essentials, because nobody in their right mind would reacquire all that data on their own.</li> <li data-xf-list-type="ul">Battler sprites, (most) other minor graphics and the small collection of sound effects came from, you guessed it, Pokémon Essentials. Where would I be without these guys. Making something else, probably.</li> <li data-xf-list-type="ul">The few graphics that are unaccounted for came from <a href="https://www.spriters-resource.com/">spriters-resource</a> or are programmer art.</li> <li data-xf-list-type="ul">I'm pretty sure everything that doesn't fall into the first three categories was written by me, so all of the code except the ~1000 lines in the "standard ai" folder.</li> </ul> <p style="text-align: center"><strong>Download/Distributable</strong></p><p></p><p>The Github can be found <a href="https://github.com/DragoniteSpam/PokemonDoOrDie">here</a>. I was originally going to fork this off into something else when the demo is done, probably with a different name, but now I'm thinking it'll be easier to just leave it where it is.</p><p></p><p>If you're not familiar with Github, the current release can be found <a href="https://github.com/DragoniteSpam/PokemonDoOrDie/releases/tag/0.0.0.1">here</a> (0.0.0.1).</p><p></p><p style="text-align: center"><strong>Design constraints</strong></p><p></p><p>I came up with these mostly on my own, so if any of them strike you as odd, that's probably why. There might have been other things I wanted to achieve at one point or another, but pretty much everything that I ended up with can be explained by these.</p><p></p><p>[spoiler]</p><ul> <li data-xf-list-type="ul"><em>You should be able to make more than just Pokémon games with this</em></li> </ul><p>Pokémon is the most straightforward since that's what I had in mind when I wrote it, but for example, it should be quite easy to disassemble the action queue(s) and battle UI to create a Bravely Default fan game, and implementing an active battle timer akin to Chrono Trigger or Final Fantasy isn't impossible, if a little more work.</p><ul> <li data-xf-list-type="ul"><em>It should be reasonably easy for someone familiar with Pokémon Essentials to pick this up and learn how to use it, even if they've never used Game Maker before</em></li> </ul><p>PBS files relevant to the implemented systems should work without having to be modified. When I get to event scripting, whatever form that ultimately takes, it should support any and all of the event actions that you'd find in RPG Maker (except for maybe the things Essentials doesn't make use of such as "begin battle processing"). Internally things may work completely differently - move function codes don't exist as far as the game is concerned, but get translated into something else, and I'm certain the action queue doesn't work the way it does inside Essentials - but on the surface the user shouldn't be able to tell.</p><ul> <li data-xf-list-type="ul"><em>There should not be a hard limit on how many participants you can have in a battle</em></li> </ul><p>Opponents and partners haven't been hard-coded, and instead the battlefield is essentially represented by a cyclical list. I'm hoping to at the very least have double battles working. Making Pokémon Battle Royale would be a <strong>terrible</strong> idea but the reason you don't do that shouldn't be because my code doesn't allow it.</p><ul> <li data-xf-list-type="ul"><em>This should be cross-platform (by default; unless the author doesn't want it to be)</em></li> </ul><p>Straightforward. Game Maker allows you to export to a bunch of different platforms, although the licenses to do so are pretty expensive. I'm not going to prohibit anyone from linking a Windows DLL if they want to, but I'm hopefully going to design this so that you don't <em>need</em> to. Or at least have the required DLLs be available as shared objects or dylibs.</p><ul> <li data-xf-list-type="ul"><em>Hard-code as little as possible</em></li> </ul><p>One of the things that bothers me about the Essentials code is that a lot of things, including most items and abilities, seem to be hard-coded into the battle logic. This makes my inner software engineer grumpy, and more importantly makes things kind of annoying if you want to overhaul it. Here, items have attached code that runs on use and abilities have options such as how to respond to status effects (Synchronize and Magic Bounce) or contact moves (Static and Rough Skin). Some hard-coding is unavoidable, namely where the PBS files are parsed and effects are assigned, but I'm trying to avoid it.</p><ul> <li data-xf-list-type="ul"><em>Open-source is nice</em></li> </ul><p>Not everything has to be open-source, and if I ever get a job as a developer I probably don't want my stuff to be, but things like this would benefit from as many people working on it as possible. <3[/spoiler]</p><p></p><p style="text-align: center"><strong>Who should be interested</strong></p><p></p><p>Use this if:</p><p></p><p>[spoiler]</p><ul> <li data-xf-list-type="ul"><em>You like Game Maker/Game Maker Language</em></li> </ul><p>It's not the most elegant language, so maybe I should instead say "you're used to Game Maker/Game Maker Language and know how to make it do what you want it to, even when it doesn't want to."</p><ul> <li data-xf-list-type="ul"><em>You don't like RPG Maker/Ruby</em></li> </ul><p>Such as the part where the keyword for <span style="font-family: 'courier new'"><strong>switch</strong></span> is <span style="font-family: 'courier new'"><strong>case</strong></span> and the keyword for <span style="font-family: 'courier new'"><strong>case</strong></span> is <span style="font-family: 'courier new'"><strong>when</strong></span>, or the part where scripting events via code is excruciatingly painful.</p><ul> <li data-xf-list-type="ul"><em>You are interested in the nuts and bolts of how a game engine/turn-based battle system works</em></li> </ul><p>Action queues (singly linked lists) and priority queues (heaps, probably) galore. The lack of function delegates makes things interesting, though, but there are ways around that.</p><ul> <li data-xf-list-type="ul"><em>You grow weary of being confined to a 512x384 window in 2018</em></li> </ul><p>And/or the weirdness that happens when you try to scale it up.</p><ul> <li data-xf-list-type="ul"><em>You are intrigued by the concept of system/total overhauls that would be difficult in Essentials, such as complex questlines and factions</em></li> </ul><p>Creation Kit for Pokémon. When possible I'm going to imitate certain features of that engine, actually, but not all of them for obvious reasons. Pokémon Essentials is actually an amazing accomplishment when you consider how difficult it is to make RPG Maker function in a different way than it was intended to function, but the operative word is "difficult."</p><ul> <li data-xf-list-type="ul"><em>You want to be able to adapt this to be another type of turn-based battle system, other than Pokémon</em></li> </ul><p>This is actually one of the bigger design constraints. See design constraints.</p><ul> <li data-xf-list-type="ul"><em>You are excited by the prospect of 3D (or hybrid 3D), as in the DS generations</em></li> </ul><p>Unity is most peoples' knee-jerk reaction for anything "3D," but I'm making Sinnoh here, not Assassin's Creed. I'll probably make 2D an option at some point though, since people seem intimidated by 3D in Game Maker for some odd reason.</p><ul> <li data-xf-list-type="ul"><em>You have need for a fully-featured debugger</em></li> </ul><p>I'm personally not great at using it, although I sometimes do as a last resort, but Game Maker has one and a lot of Game Maker gurus swear by it.</p><ul> <li data-xf-list-type="ul"><em>You're tired of having to jump through hoops to make games work on Mac/Linux</em></li> </ul><p>It's been done, but in 2004 there was no such thing as a magic "port to Mac" button. Game Maker has one, sort of, as long as you don't link Windows binaries and you own a license for the correct export module(s).[/spoiler]</p><p></p><p>In a nutshell, I'm (a) looking for an excuse to use Game Maker to make Pokémon again and (b) trying to make it easier to do things that would probably be a lot of work in Essentials.</p><p></p><p style="text-align: center"><strong>Who shouldn't be interested</strong></p><p></p><p>Don't use this if:</p><p></p><p>[spoiler]</p><ul> <li data-xf-list-type="ul"><em>You don't like Game Maker/Game Maker Language</em></li> </ul><p>RPG Maker XP goes on sale on a regular basis despite its age, but Game Maker Studio is no longer available for purchase and for a hobbyist Game Maker Studio 2 is abhorrently expensive. On top of that, Yoyo Games has been known to make the occasional odd business decision which has led a number of people to dislike them, and the proprietary language that it uses has its shortfalls.</p><ul> <li data-xf-list-type="ul"><em>You like RPG Maker/Ruby/object oriented programming</em></li> </ul><p>I think they're both weird, but if you like RPG Maker's workflow, it's probably not a good idea to switch to something different unless there's a very good reason to, which this is not.</p><ul> <li data-xf-list-type="ul"><em>You want/need something that's fully-featured out of the box</em></li> </ul><p>Pokémon Essentials has a decade and uncountable thousands of lines of code behind it. I've been working on this for a month and my LOC count has barely scratched 10k, which means most moves, items, abilities and battle variables have not been implemented yet. Important systems such as saving/loading, event scripting, breeding, animations and anything regarding the overworld haven't even started work at this current moment, so you'll have to either wait a long time for me to add them or write them yourself.</p><ul> <li data-xf-list-type="ul"><em>You prefer the GB* aesthetic</em></li> </ul><p>I got into Pokémon during the DS era so that's what I think of when I think of "Pokémon," but you very well might not. (Whatever you do, please, PLEASE stop cross-breeding the FRLG and HGSS tilesets.)</p><ul> <li data-xf-list-type="ul"><em>You're more of a designer than an engineer</em></li> </ul><p>One of Pokémon Essentials' goals is to be as accessible as possible, allowing the author to design games without needing to muck about with the code that makes it work (mostly). I'm much more interested in seeing people ripping holes in my code and replacing it with stuff I wouldn't have even thought of, although one of the deep-future wish-list items is for people to not have to do that if they don't want to.</p><ul> <li data-xf-list-type="ul"><em>You don't have a need for the bells and whistles that have caught my attention</em></li> </ul><p>Not all games have to be elaborate; see game jams. I just like to do things that way because there's something wrong with me.</p><ul> <li data-xf-list-type="ul"><em>You prefer that your code is properly documented/commented</em></li> </ul><p>I'm working on it, okay?[/spoiler]</p><p></p><p style="text-align: center"><strong>Questions and stuff</strong></p><p></p><p>I figure someone is going to ask most of these eventually.</p><p></p><p>[spoiler]</p><ul> <li data-xf-list-type="ul"><em>Why?</em></li> </ul><p>Because I can.</p><ul> <li data-xf-list-type="ul"><em>What's with the name?</em></li> </ul><p>I've been trying to make a game since I was sixteen, and barring a few minor things that's never happened. I'm not a stupid teenager anymore and since I want to eventually make money being a game programmer, I need to hurry it up, fan game or otherwise.</p><ul> <li data-xf-list-type="ul"><em>Why Game Maker?</em></li> </ul><p>I don't like Unity, like, at all. Unreal Engine is way overkill for what I'm trying to do. I'm not a real computer scientist and I don't really know C++, and in any case writing your own OpenGL rendering engine is <em>ass.</em> I briefly thought about libgdx, but people don't seem to like Java and its future seems pretty bleak anyway.</p><p></p><p>All of that doesn't matter really though, because I'm by far most familiar with how Game Maker works (and how it doesn't, and how to get around the limitations) and can write code for it faster than pretty much anything else. (10k lines in 30 days, during which I also went to school and spent almost 60 hours playing Skyrim.)</p><ul> <li data-xf-list-type="ul"><em>You didn't include PBS files in the download!</em></li> </ul><p><strong><em>I know.</em></strong> They're not hard to find. Get them yourself. <strong>Do not mess with my gitignore.</strong></p><ul> <li data-xf-list-type="ul"><em>Can the AI battle itself?</em></li> </ul><p>Yes. In fact, that was the first thing I did when I finished: see the video under "screenshots." If you want to do it for yourself, download the code and change <span style="font-family: 'courier new'"><strong>PlayerPawn</strong></span> in the <strong><span style="font-family: 'courier new'">DebugBattle</span></strong> thing to just <strong><span style="font-family: 'courier new'">Pawn</span></strong>.</p><ul> <li data-xf-list-type="ul"><em>You mentioned localization? How?</em></li> </ul><p>Essentials has an internal "extract text" option that <em>appears</em> to analyze its own code and identify all translatable strings. Game Maker can't do that, so I wrote a separate program to do it instead, which you can find <a href="https://github.com/DragoniteSpam/GMLocalize">elsewhere on my Github</a>. It works for what I've written but is technically still WIP and will probably stay that way until the need arises, if it arises.</p><ul> <li data-xf-list-type="ul"><em>Can I make money from this?</em></li> </ul><p>If you do <em>anything</em> involving Pokémon with this, the answer is a resounding "no." (Look up the answer to that question regarding Pokémon Essentials itself; my answer is the same.)</p><p></p><p>If your game is 100% trademark free - monster names, monster sprites, UI sprites, audio, and preferably using different type, move, ability and item names, and <em>some</em> modification to the battle loop, although none of that is trademarked, and to be safe you probably want to remove all pieces of code that include the text <strong><span style="font-family: 'courier new'">poke</span></strong> even if it's not visible in the final product - I don't really have any ethical objections to anyone using this to make money. <em>With that being said, I don't see this project being a state where that's a reasonable goal for a very long time.</em></p><p></p><p>Either way, credit me, or I'll be pretty pissed.[/spoiler]</p><p></p><p>That's that. It's now 2 AM so I'm either going to go to sleep or get started on the ol' to-do list.</p></blockquote><p></p>
[QUOTE="Dragonite, post: 11891, member: 30"] I've been doing this for a month and am still not 100% sure what I want to happen to it, but I figure anything is better than nothing. [CENTER][B]What it is[/B][/CENTER] To make a long story short, I cloned and played around with Pokémon Unity back in September. I don't like Unity, at all, but it got me thinking (again) about what nonstandard Pokémon fan games might look like. Lots and lots of fantastic games have come out of Pokémon Essentials [citation needed], but developing in fourteen-year-old software has its issues and Ruby is kind of a [S]terrible[/S] divisive language. With that in mind, I decided to do a sixth or seventh attempt at a turn-based battle system (Pokémon or otherwise), and to my great surprise it actually worked this time. [B]I've only been working on this for a month so it currently only works for the parameters provided,[/B] so almost any other monsters, moves, abilities and items will be ignored or outright break. There's a bunch more stuff I have planned, though, see below, and I intend it to be open source so you can add to it if there's something you want it to do while I'm busy doing something else, or more probably, playing Skyrim. [CENTER][B]Plot[/B][/CENTER] It's a tool. [CENTER][B]Features[/B][/CENTER] Implemented: [spoiler] [LIST] [*]A Pokémon-ish turn-based battle system that's reasonably easy to extend [*]The ability to localize text strings for languages other than English [*]Nine-slice text boxes [/LIST] [/spoiler] Planned, probably in order of priority: [spoiler] [LIST] [*]The ability to play the game at different resolutions (within reason) [*]Forward-compatibility with Game Maker Studio 2, since that's going to be the version that most people are likely to use in the future [*]3D overworld navigation, as well as an external editor, because Game Maker Studio 1's map editor is terrible and nobody wants to hard-code map details [*]Event scripting (in Game Maker): writing world interactions inside the Game Maker IDE [*]Make sure multi (at least double) battles work, and possibly tag battles [*]Initiating battles from the overworld: wild random, wild stationary, trainer and otherwise, as well as cleaning up and returning to the overworld when the battle has concluded or been forfeited [*]Mid-battle flavor text, and the ability to interrupt the battle at a certain stage to progress or branch: you know how a lot of important Trainers in Pokémon will jump in to say something on certain events in battle, such as being down to their last Pokémon, or how other games might only require you to bring a boss down into the yellow without needing to defeat them in order to advance the story? [*]A Pause menu, and all of the things that you would expect to be able to do inside of it such as managing your team and applying Repels and admiring your Badge collection [*]Rebindable controls, for both keyboard/mouse and (common) gamepads [*]I still hate the idea of HM items but the world is clearly trending in that direction and they won't be difficult to make [*]A compiled game data format, because human-readable PBS files are slow for the computer to parse and obfuscated binary buffers are fast [*]Saving and loading, in a manner that can be extended without causing everything to fail catastrophically [*]Audio zones, as you'd find in a Bethesda game, so that you can bind an indefinite number of songs to different situations in an area (day, evening, night, plot) and have them play randomly [*]Event scripting (externally): I'm going to try to bind Lua, but if that ends up breaking the cross-platform constraint, over the summer I made a proto-language that I should be able to plug in [*]A quest/faction system, because I like that kind of thing even if most Pokémon games don't demand it [*]A dedicated title screen and a dedicated credits screen: a single image splash as Essentials does and/or something more interactive [*]Event scripting (visual): for those who would rather design than code and like the way you can click on an event type in RPG Maker, input the relevant properties and be done with it, or for those who would rather do both [*]3D camera trickery, to whatever degree is necessary? Think about the events that transpire atop the Dragonspiral Tower or in the depths of the Whirl Islands [*]Side mechanics such as breeding and farming berries or berry-like entities [*]Some kind of move/effect animation editor, because keyframing stuff through code is the actual worst thing ever, which is why I did so little of it for the demo [*]2D overworld navigation, as well as an external editor, because Game Maker Studio 1's map editor is terrible and nobody wants to hard-code map details [*]Some kind of Mystery Gift thing [*]Something vaguely resembling the Pokéwalker [/LIST] Implementing missing battle effects (most function codes, abilities, items, animations) are going to probably be done at some point but I don't know when. Most of them won't be difficult but I'm more interested in most of the other things on the list than plugging in variables and effect text, but [I]someone[/I] has to do it, and I don't want to make that much grunt work the job of someone who wants to use this to make a game. [/spoiler] Currently not interested, but can be persuaded: [spoiler] [LIST] [*]Bug Catching Contest and Safari Zone(s) [*]I'll probably do at least one of the PokéNav/gear/tch/C-Gear eventually but I don't really care which, although the tch is the most modular and thus makes my nerd senses go off [*]Riding Pokémon would be cool but my animation skills are not nearly strong enough to do this convincingly [*]I think Contests are stupid but if enough people want them I'll work on them [*]Secret bases, Join Avenue, Battle Frontier, Ruins of Alph, Sinnoh Underground, other minor minigames [*]In-line colored (and otherwise formatted) text: I think this kind of thing is distracting to look at but a lot of people don't [/LIST] [/spoiler] Will not, and do not ask: [spoiler] [LIST] [*]Distributable PBS files, and other TCPI assets beyond what I've already made available. The odds that Nintendo are going to take an interest in what I'm doing are low, and I intend to keep it that way. [*]Online connectivity. I've hopefully designed the player/AI pawns in a way that you don't have to rip everything apart if you want to do this yourself, but I have never used Game Maker's netcode and have no interest in starting. [*]A speed-up button. If your game requires a speed-up button, either you've screwed something up design-wise or humanity is beyond saving. [*]A less ugly UI. I'm a programmer, not a designer. I took a class on Interface Design and slept through it. If someone wants to do this for me that'd be fantastic, but for now I'm just giving you pieces and skeleton code that will probably help you make your own. [/LIST] [/spoiler] The last three lists are subject to change, depending on how development goes and how much free time I have. Obviously I'm going to keep working on this barring nuclear armageddon for as long as I can get away with it, and will hopefully remember to update this as time goes on. Check the github (below) for what is probably more up-to-date information. [CENTER][B]Screenshots[/B][/CENTER] I only have five and Deo prefers six, but I'll add more as I go. Images are gifs, if they don't play right-click and say "view image:" [spoiler=Battle] Battle opening (the final version is slightly more snappy): [spoiler][IMG]https://i.imgur.com/BmyP4fL.gif[/IMG][/spoiler] Sample status effect: [spoiler][IMG]https://i.imgur.com/hCGhpYu.gif[/IMG][/spoiler] Turn switching [spoiler][IMG]https://i.imgur.com/p21ZfxB.gif[/IMG][/spoiler] Sample abilities: [spoiler][IMG]https://i.imgur.com/BmyP4fL.gif[/IMG] [IMG]https://i.imgur.com/7vQ0CAG.gif[/IMG][/spoiler] The AI fighting itself: [spoiler][MEDIA=youtube]n-586jZ3V2c[/MEDIA][/spoiler][/spoiler] [spoiler=Overworld] A basic overworld composed of the ground and planes sticking up out of the ground, as the DS games are [spoiler][IMG]https://i.imgur.com/yLYvGK4.gif[/IMG][/spoiler][/spoiler] [spoiler=Editor] This is my favorite part, honestly. Slapping down entities [MEDIA=youtube]TbtTnZ91vvc[/MEDIA] Editor => Game [MEDIA=youtube]44hTwYWN1Sc[/MEDIA][/spoiler] [CENTER][B]Credits[/B][/CENTER] [LIST] [*]I [S]stole[/S] re-interpreted a lot of AI code from Pokémon Essentials. (It's still pretty incomplete, though.) Whoever wrote that was a big help. [*]PBS files also came from Pokémon Essentials, because nobody in their right mind would reacquire all that data on their own. [*]Battler sprites, (most) other minor graphics and the small collection of sound effects came from, you guessed it, Pokémon Essentials. Where would I be without these guys. Making something else, probably. [*]The few graphics that are unaccounted for came from [URL='https://www.spriters-resource.com/']spriters-resource[/URL] or are programmer art. [*]I'm pretty sure everything that doesn't fall into the first three categories was written by me, so all of the code except the ~1000 lines in the "standard ai" folder. [/LIST] [CENTER][B]Download/Distributable[/B][/CENTER] The Github can be found [URL='https://github.com/DragoniteSpam/PokemonDoOrDie']here[/URL]. I was originally going to fork this off into something else when the demo is done, probably with a different name, but now I'm thinking it'll be easier to just leave it where it is. If you're not familiar with Github, the current release can be found [URL='https://github.com/DragoniteSpam/PokemonDoOrDie/releases/tag/0.0.0.1']here[/URL] (0.0.0.1). [CENTER][B]Design constraints[/B][/CENTER] I came up with these mostly on my own, so if any of them strike you as odd, that's probably why. There might have been other things I wanted to achieve at one point or another, but pretty much everything that I ended up with can be explained by these. [spoiler] [LIST] [*][I]You should be able to make more than just Pokémon games with this[/I] [/LIST] Pokémon is the most straightforward since that's what I had in mind when I wrote it, but for example, it should be quite easy to disassemble the action queue(s) and battle UI to create a Bravely Default fan game, and implementing an active battle timer akin to Chrono Trigger or Final Fantasy isn't impossible, if a little more work. [LIST] [*][I]It should be reasonably easy for someone familiar with Pokémon Essentials to pick this up and learn how to use it, even if they've never used Game Maker before[/I] [/LIST] PBS files relevant to the implemented systems should work without having to be modified. When I get to event scripting, whatever form that ultimately takes, it should support any and all of the event actions that you'd find in RPG Maker (except for maybe the things Essentials doesn't make use of such as "begin battle processing"). Internally things may work completely differently - move function codes don't exist as far as the game is concerned, but get translated into something else, and I'm certain the action queue doesn't work the way it does inside Essentials - but on the surface the user shouldn't be able to tell. [LIST] [*][I]There should not be a hard limit on how many participants you can have in a battle[/I] [/LIST] Opponents and partners haven't been hard-coded, and instead the battlefield is essentially represented by a cyclical list. I'm hoping to at the very least have double battles working. Making Pokémon Battle Royale would be a [B]terrible[/B] idea but the reason you don't do that shouldn't be because my code doesn't allow it. [LIST] [*][I]This should be cross-platform (by default; unless the author doesn't want it to be)[/I] [/LIST] Straightforward. Game Maker allows you to export to a bunch of different platforms, although the licenses to do so are pretty expensive. I'm not going to prohibit anyone from linking a Windows DLL if they want to, but I'm hopefully going to design this so that you don't [I]need[/I] to. Or at least have the required DLLs be available as shared objects or dylibs. [LIST] [*][I]Hard-code as little as possible[/I] [/LIST] One of the things that bothers me about the Essentials code is that a lot of things, including most items and abilities, seem to be hard-coded into the battle logic. This makes my inner software engineer grumpy, and more importantly makes things kind of annoying if you want to overhaul it. Here, items have attached code that runs on use and abilities have options such as how to respond to status effects (Synchronize and Magic Bounce) or contact moves (Static and Rough Skin). Some hard-coding is unavoidable, namely where the PBS files are parsed and effects are assigned, but I'm trying to avoid it. [LIST] [*][I]Open-source is nice[/I] [/LIST] Not everything has to be open-source, and if I ever get a job as a developer I probably don't want my stuff to be, but things like this would benefit from as many people working on it as possible. <3[/spoiler] [CENTER][B]Who should be interested[/B][/CENTER] Use this if: [spoiler] [LIST] [*][I]You like Game Maker/Game Maker Language[/I] [/LIST] It's not the most elegant language, so maybe I should instead say "you're used to Game Maker/Game Maker Language and know how to make it do what you want it to, even when it doesn't want to." [LIST] [*][I]You don't like RPG Maker/Ruby[/I] [/LIST] Such as the part where the keyword for [FONT=courier new][B]switch[/B][/FONT] is [FONT=courier new][B]case[/B][/FONT] and the keyword for [FONT=courier new][B]case[/B][/FONT] is [FONT=courier new][B]when[/B][/FONT], or the part where scripting events via code is excruciatingly painful. [LIST] [*][I]You are interested in the nuts and bolts of how a game engine/turn-based battle system works[/I] [/LIST] Action queues (singly linked lists) and priority queues (heaps, probably) galore. The lack of function delegates makes things interesting, though, but there are ways around that. [LIST] [*][I]You grow weary of being confined to a 512x384 window in 2018[/I] [/LIST] And/or the weirdness that happens when you try to scale it up. [LIST] [*][I]You are intrigued by the concept of system/total overhauls that would be difficult in Essentials, such as complex questlines and factions[/I] [/LIST] Creation Kit for Pokémon. When possible I'm going to imitate certain features of that engine, actually, but not all of them for obvious reasons. Pokémon Essentials is actually an amazing accomplishment when you consider how difficult it is to make RPG Maker function in a different way than it was intended to function, but the operative word is "difficult." [LIST] [*][I]You want to be able to adapt this to be another type of turn-based battle system, other than Pokémon[/I] [/LIST] This is actually one of the bigger design constraints. See design constraints. [LIST] [*][I]You are excited by the prospect of 3D (or hybrid 3D), as in the DS generations[/I] [/LIST] Unity is most peoples' knee-jerk reaction for anything "3D," but I'm making Sinnoh here, not Assassin's Creed. I'll probably make 2D an option at some point though, since people seem intimidated by 3D in Game Maker for some odd reason. [LIST] [*][I]You have need for a fully-featured debugger[/I] [/LIST] I'm personally not great at using it, although I sometimes do as a last resort, but Game Maker has one and a lot of Game Maker gurus swear by it. [LIST] [*][I]You're tired of having to jump through hoops to make games work on Mac/Linux[/I] [/LIST] It's been done, but in 2004 there was no such thing as a magic "port to Mac" button. Game Maker has one, sort of, as long as you don't link Windows binaries and you own a license for the correct export module(s).[/spoiler] In a nutshell, I'm (a) looking for an excuse to use Game Maker to make Pokémon again and (b) trying to make it easier to do things that would probably be a lot of work in Essentials. [CENTER][B]Who shouldn't be interested[/B][/CENTER] Don't use this if: [spoiler] [LIST] [*][I]You don't like Game Maker/Game Maker Language[/I] [/LIST] RPG Maker XP goes on sale on a regular basis despite its age, but Game Maker Studio is no longer available for purchase and for a hobbyist Game Maker Studio 2 is abhorrently expensive. On top of that, Yoyo Games has been known to make the occasional odd business decision which has led a number of people to dislike them, and the proprietary language that it uses has its shortfalls. [LIST] [*][I]You like RPG Maker/Ruby/object oriented programming[/I] [/LIST] I think they're both weird, but if you like RPG Maker's workflow, it's probably not a good idea to switch to something different unless there's a very good reason to, which this is not. [LIST] [*][I]You want/need something that's fully-featured out of the box[/I] [/LIST] Pokémon Essentials has a decade and uncountable thousands of lines of code behind it. I've been working on this for a month and my LOC count has barely scratched 10k, which means most moves, items, abilities and battle variables have not been implemented yet. Important systems such as saving/loading, event scripting, breeding, animations and anything regarding the overworld haven't even started work at this current moment, so you'll have to either wait a long time for me to add them or write them yourself. [LIST] [*][I]You prefer the GB* aesthetic[/I] [/LIST] I got into Pokémon during the DS era so that's what I think of when I think of "Pokémon," but you very well might not. (Whatever you do, please, PLEASE stop cross-breeding the FRLG and HGSS tilesets.) [LIST] [*][I]You're more of a designer than an engineer[/I] [/LIST] One of Pokémon Essentials' goals is to be as accessible as possible, allowing the author to design games without needing to muck about with the code that makes it work (mostly). I'm much more interested in seeing people ripping holes in my code and replacing it with stuff I wouldn't have even thought of, although one of the deep-future wish-list items is for people to not have to do that if they don't want to. [LIST] [*][I]You don't have a need for the bells and whistles that have caught my attention[/I] [/LIST] Not all games have to be elaborate; see game jams. I just like to do things that way because there's something wrong with me. [LIST] [*][I]You prefer that your code is properly documented/commented[/I] [/LIST] I'm working on it, okay?[/spoiler] [CENTER][B]Questions and stuff[/B][/CENTER] I figure someone is going to ask most of these eventually. [spoiler] [LIST] [*][I]Why?[/I] [/LIST] Because I can. [LIST] [*][I]What's with the name?[/I] [/LIST] I've been trying to make a game since I was sixteen, and barring a few minor things that's never happened. I'm not a stupid teenager anymore and since I want to eventually make money being a game programmer, I need to hurry it up, fan game or otherwise. [LIST] [*][I]Why Game Maker?[/I] [/LIST] I don't like Unity, like, at all. Unreal Engine is way overkill for what I'm trying to do. I'm not a real computer scientist and I don't really know C++, and in any case writing your own OpenGL rendering engine is [I]ass.[/I] I briefly thought about libgdx, but people don't seem to like Java and its future seems pretty bleak anyway. All of that doesn't matter really though, because I'm by far most familiar with how Game Maker works (and how it doesn't, and how to get around the limitations) and can write code for it faster than pretty much anything else. (10k lines in 30 days, during which I also went to school and spent almost 60 hours playing Skyrim.) [LIST] [*][I]You didn't include PBS files in the download![/I] [/LIST] [B][I]I know.[/I][/B] They're not hard to find. Get them yourself. [B]Do not mess with my gitignore.[/B] [LIST] [*][I]Can the AI battle itself?[/I] [/LIST] Yes. In fact, that was the first thing I did when I finished: see the video under "screenshots." If you want to do it for yourself, download the code and change [FONT=courier new][B]PlayerPawn[/B][/FONT] in the [B][FONT=courier new]DebugBattle[/FONT][/B] thing to just [B][FONT=courier new]Pawn[/FONT][/B]. [LIST] [*][I]You mentioned localization? How?[/I] [/LIST] Essentials has an internal "extract text" option that [I]appears[/I] to analyze its own code and identify all translatable strings. Game Maker can't do that, so I wrote a separate program to do it instead, which you can find [URL='https://github.com/DragoniteSpam/GMLocalize']elsewhere on my Github[/URL]. It works for what I've written but is technically still WIP and will probably stay that way until the need arises, if it arises. [LIST] [*][I]Can I make money from this?[/I] [/LIST] If you do [I]anything[/I] involving Pokémon with this, the answer is a resounding "no." (Look up the answer to that question regarding Pokémon Essentials itself; my answer is the same.) If your game is 100% trademark free - monster names, monster sprites, UI sprites, audio, and preferably using different type, move, ability and item names, and [I]some[/I] modification to the battle loop, although none of that is trademarked, and to be safe you probably want to remove all pieces of code that include the text [B][FONT=courier new]poke[/FONT][/B] even if it's not visible in the final product - I don't really have any ethical objections to anyone using this to make money. [I]With that being said, I don't see this project being a state where that's a reasonable goal for a very long time.[/I] Either way, credit me, or I'll be pretty pissed.[/spoiler] That's that. It's now 2 AM so I'm either going to go to sleep or get started on the ol' to-do list. [/QUOTE]
Insert quotes…
Verification
Who is the professor in the Kanto region?
Post reply
Forums
Game Corner
Other Games & Projects
Do Or Die (yes that's what I'm calling it)
Top