• Do not use Discord to host any images you post, these links expire quickly! You can learn how to add images to your posts here.
Resource icon

Dev Kit Essentials v21.1

Pokémon Essentials, version 21.1
30th July 2023

Change log
v21.1 Hotfixes plugin

Essentials v21.1 has now been released. This version contains improvements to messages, more sound effects and a new battle rule, plus a few other tweaks and a number of bug fixes. Download it today!

There is a v21.1 Hotfixes plugin which adds some bug fixes.

Pokémon Essentials, version 21
28th June 2023

Change log

The trend these days is for Essentials to get a new release each year. This is mostly unintentional, and a year just seems to be how long it takes to make a version's worth of changes. Still, here's the next one. This post is a summary of the bigger changes, and you can check out the change log linked above to see a more exhaustive list of what's new.

AI XL

A year ago, I asked people what they most wanted to be done to Essentials, and the biggest response was "improve the AI". So I did. I broke it into more manageable chunks and rewrote pretty much all of it. I also added a lot of new code and calculations to give the AI a better idea of how things work and what situations are good and bad.

There's a bit less randomness now, as trainers will completely avoid using a move they know will fail. They'll also avoid using a move which scores significantly worse than another move they could use - previously it would just have a smaller chance to use such bad moves. And if the AI breaks while deciding what to do, it will no longer give the player a free shot by doing nothing at all for that round.

Skill flags were supported in previous versions of Essentials, but were unused. Now, though, some skill flags have been invented, which dictate how a trainer's AI behaves. There's a flag for whether the trainer should keep their final Pokémon until last, for example. Many of these skill flags are given to a trainer automatically based on their trainer type's skill level. Certain wild Pokémon, namely Legendary/Mythical/Ultra Beast Pokémon, can have a higher skill level and will not use moves entirely at random - this also depends on a flag, but one in pokemon.txt rather than trainer_types.txt.

Oh yes, and the AI can now use Revives. I can't promise it will be that clever about it, but at least the AI now knows what a Revive does.

Gotta Go Faster

mkxp-z is the replacement to RGSS that Essentials uses, and is the basic game framework on which Essentials is built. It has been updated to v2.4.2.ee8dc7e, which is a mouthful, but it brings various performance and functionality improvements, including the possibility of multi-track BGMs. You'll most notice the performance improvements, though, which coupled with some rewriting of the Compiler code means that the Compiler is about 10 times faster than it used to be. That's quite a big deal.

The rest of the game will also run better because of mkxp-z's update. It'll also run more smoothly because Essentials is now fully FPS agnostic, which means it runs at the same rate no matter what the FPS number is. Its FPS is now whatever your monitor's refresh rate is, rather than a fixed 40, and v-sync is enabled to reduce screen tearing.

If you want some extra speed in your gameplay, though, an "instant" text display speed has been added to the Options. However, this just makes it easier for players to rush through dialogue and then complain that they don't know what to do, so maybe you'll want to remove that option.

I also fixed the camera lag that happened when sliding on ice, and the camera overshoot when jumping over some ledges.

Oops! All PBS Files

The big new thing with PBS files is that you can now have lots of them for each data type (e.g. items, moves, map metadata). They need to be named "items_XYZ.txt", where "XYZ" can be whatever you want, but that's the only limitation. This lets you organise your data much more conveniently now. A separate moves.txt file for moves of each elemental type? Split trainers into files depending on their location? Put your new items/abilities/etc. into their own files, separate from the "vanilla" content? Sure, you can do all of this now.

One example is Shadow Pokémon. There is now a folder in the PBS folder containing files for Shadow Pokémon-related content. To add them to your game, simply move those files into the main PBS folder and compile. You don't need to edit anything. Oh, and shadow_pokemon.txt now supports sections for individual forms of a species.

Other changes to PBS files include: pokemon.txt having fixes to movesets and additional compatible tutor moves, being able to give a species more than two types, items having portion names for some messages (e.g. "bag of Soft Sand"), and Poké Radar-exclusive encounters now belong in encounters.txt rather than the Settings. There are other changes too, mentioned elsewhere in this post and in the change log.

Lingua Pokémonica

Game translations are now a bit easier to do. All game text is now split into two data files: core (for text common to most games, such as messages in scripts and item names) and game (for text unique to your game, such as trainer names and event dialogue). The core messages stay as they are across all games, which means translated versions of them can be provided as resources and they won't get in the way of game-specific text that also needs translating.

When you extract text for translation, it goes into multiple files now instead of just one, in a dedicated folder for better organisation. You can split the text up into more files if you want, e.g. "translated" and "untranslated", because importing translated text simply imports everything in the folder regardless of filename. It's also a bit more user-friendly to extract and import text.

Some messages have been tweaked to make them better for translating. The game's credits and the nicknames of trainers' Pokémon can now be translated.

Call You Call Me

The mechanics of how the phone and rematchable trainers work have been changed. For starters, there's now a map metadata flag "NoPhoneSignal" which does what you'd expect it to do. The randomly generated dialogue spouted by trainers during phone calls has also been improved, with additional message options and the ability to define a set of messages for individual trainers (phone.txt now looks quite different because of this). If you want more control over what trainers say, you can easily make them run a Common Event for their phone calls instead.

The phone's UI and functionality has been improved a little. You can now delete contacts, and you can rearrange the list of contacts. You can also see whether you have a signal.

As far as rematches go, you can toggle whether rematches are possible (for example, in HGSS, rematches are only possible after Gym 7/beating Team Rocket in the Radio Tower). You can also limit which version of their party a trainer can attain, and change that limit during your game to ensure that rematchable trainers can end up with powerful teams of Pokémon but not too soon.

Because of the changes to the phone, the event commands required to register a new contact in the phone have changed, and you will need to update these yourself. The old registering commands should still work for now, but you'll need to change them eventually.

And Some Other Things

The Debug menu has additional functionality, such as being able to modify the lingering overworld effects (e.g. Repel steps, whether Flash is used), being able to modify the time/steps remaining and number of Poké Balls you have in the Safari Zone/Bug-Catching Contest, and many more properties of the phone and the contacts therein. When you end a battle in Debug mode when holding Ctrl, you can choose the outcome of the battle, and you can now end the battle even if the "Run" command has been replaced by "Call".

The random dungeon generator code has been overhauled. It now produces nicer-looking caves and uses more than three tiles to draw them. It also supports snapping the generation to a 2x2 tile grid, which is useful for forest dungeons because trees are 2x2 tiles in size. There's some random decoration too. There are two new PBS files to support all this, one defining which tiles exist in a random dungeon's tileset that can be used to draw it, and one defining locations which each have parameters such as the shape of the floor and size/number of rooms.

The Battle Frontier facilities now hand out BP instead of Rare Candies (different amounts depending on how well you did), and there's a BP shop in the local Poké Mart. Many items have been given BP prices (the default is 1).

All the graphics for various UI screens have been moved out of the Graphics/Pictures folder and into the new Graphics/UI folder. Some have been renamed and/or put into subfolders for added organisation. And speaking of UI, the Pokédex will no longer show male/female form options for species which don't have gender differences (i.e. if a female sprite doesn't exist).

I also added something to the game stats which counts how many times the player walks into something. They'll now also animate when they do so.

There are plenty of bug fixes too, and other things I haven't mentioned here. Have a look at the change log to find out more.

Enjoy!
Pokémon Essentials, version 20.1
20th June 2022

Change log
v20.1 Hotfixes plugin

Essentials v20.1 has now been released. This version mainly adds bug fixes, including ones tackling memory leaks and maps appearing in the wrong places. Download it today!

There is a v20.1 Hotfixes plugin which adds some bug fixes.

Pokémon Essentials, version 20
19th May 2022

Change log
It's been almost a year since v19.1 came out, so it's about time for a new release of Essentials. Look below for a summary of the bigger features, and read through the change log linked above for a more exhaustive list of what's new.

Gen 8 Content

A lot of Generation 8 content has now been added to Essentials. This includes the usual collection of PBS files defining the new species/items/moves/abilities/etc. and code to make it all work, but it also includes a variety of new features that were in the Gen 8 games. The content is from the BDSP games, because Pokémon Legends: Arceus is a spinoff game with notably different mechanics, and its new content isn't easy to incorporate into the main series game mechanics... so I didn't. For comparison, content from the Let's Go games isn't in Essentials either.

Affection mechanics (Pokémon shrugging off status problems if they really like you, and so on) are in. The Town Map now appears in the pause menu if you have it but don't have a Pokégear (and if you can use Fly, you can do so directly from the Town Map). The Day Care can be turned into the Nursery, complete with sharing of egg moves. There are brand new types of evolutions, one that triggers after every battle regardless and one you can trigger on demand. The Pokédex entry for a new species can now show after evolution, hatching, trading and obtaining. You can now be asked what to do with a newly caught Pokémon if your party is full (and you can turn off that prompt via the Options screen). You can now use multiples of certain items at once, such as Rare Candies.

There are now also PBS files provided that contain Gen 6 data.

A Whole New World Renderer

The map renderer is how the overworld appears on your screen. The old one was laggy and wasn't designed to work well with connected maps. So now there's a new renderer that fixes all this. It even re-adds the ability to change tiles on the fly, so walking through sooty grass will now make the soot disappear (you could also add a way to use Cut on tall grass to get rid of it if you wanted).

Autotiles are useful things, but a map could only have up to seven of them. Not any more! You can now use the top part of the main tileset graphic to add as many extra autotiles as you want. Autotiles can now animate at their own rates. A new autotile format has also been added, which is the same as the usual large autotile format but with four extra tiles for concave corners (instead of needing the top right tile to contain all four corners at once).

Hello, Follow Me

Dependent events (now called followers) have always been glitchy. Try to walk from one map to a connected map and they start teleporting. Walk over a bridge and they teleport even more. Enter a door and... I don't know what happens, but it probably involves teleporting. I fixed all that.

Follower code has been rewritten to work much better, thank you, now supporting connected maps and bridges and all kinds of things like a pro. You can also easily use move routes to make a follower walk around on their own, and there's now an example in the maps that come with Essentials of how to properly deregister a follower and make them stay where they are. The maps also contain improved doors which let the follower enter a building after you, rather than slamming the door in their face. Oh yes, and followers now have reflections, so put your garlic away.

(The name of this section is a reference to my avatar, Abe from the Oddworld game series.)

Battle Bonuses

A lot of new animations have been added. Not ones for using moves, though; I'm talking about the battle intro animations (the flashing and things that fade the screen to black just before a battle starts). There are now animations for facing off against a member of Team Rocket, a Team Rocket Admin, the Elite Four/Champion, and a new kind of Vs. animation - all of these are based on animations from HGSS. And once you're in battle, you'll soon notice all the new animations that play when a Poké Ball opens up (to send out a Pokémon, to withdraw a Pokémon, or to catch a Pokémon), and the sparkles when a capture succeeds.

Battles now have a debug menu, in which you can make all kinds of changes to the battle and to the Pokémon and trainers involved in it. I'm sure you'll find some kind of use for it.

The battle-starting methods have been renamed and simplified, as well as generalised. pbWildBattle becomes WildBattle.start and can do single/double/triple battles all by itself, and the same is true of the trainer battle-starting methods. There are new battle rules, one which disables the use of Poké Balls and one that forces a newly caught Pokémon into your party.

For The Developer's Eyes Only

A bunch of the PBS files have been overhauled and renamed. Pokémon sprite-positioning metrics now go in their own file, which can be easily distributed in sprite packs. Several files have different formats that are easier to read and edit. ID numbers are now completely abolished.

[imath]Trainer is now known as [/imath]player, and [imath]PokemonBag is now [/imath]bag. Any mentions of these in script commands in your events will be automatically changed by the Compiler (which will also make a few other changes like that). The methods in $bag have been renamed to be shorter and simpler.

In events, multiple adjacent "Show Choices" commands will now merge into one big list, making it much easier to make the player choose between 5+ options at once. You can also easily remove or rename individual choices without duplicating the whole thing for each permutation of available choices.

Plugins can (and should) now say which versions of Essentials they're compatible with. Text in plugins can now be translated. You can recompile plugins by holding Shift when starting up the game in Debug mode (holding Ctrl will also recompile plugins as well as compile PBS files/maps).

Oh yes, and the messages in the Debug console are prettier.

And So On

The fonts have been tidied up and new characters/symbols have been added to make nicknaming your Pokémon even more fun.

Pokémon markings can now come in multiple different colours.

The exclamation bubble animation when a trainer spots you now looks better.

All the BGMs that come with Essentials have been replaced with better/more appropriate ones, and contain some ogg files with custom loop points.

The game now records a whole lot of stats, such as the distance you've walked, how many times you've used Flash, how long it took to beat the first Gym, and how many free drinks you've won from vending machines. The Pokédex now records which shiny Pokémon and eggs you've seen. You might find some of this useful.

There are plenty of bug fixes too, and other things I haven't mentioned here. Have a look at the change log to find out more.

Enjoy!
Pokémon Essentials, version 19.1
22nd May 2021

Change log

Essentials v19.1 has now been released. It's full of bug fixes, text characters in the naming screen, gif support and a working Battle Factory. Download it today to get all this good stuff.

You do not need the v19 Hotfixes plugin. v19.1 contains all the fixes it provided and much more.

Pokémon Essentials, version 19
27th April 2021

Change log

You may not have been expecting a new version of Essentials, only seven months after the previous one, but surprise! Not only is it being released so soon (compared to the gaps between previous releases), but it's a very important step forward.

Before we get into it, I should say that Essentials is now open source on GitHub, and this has directly helped others to contribute to the development of Essentials. I wouldn't have been able to do all this by myself. Everyone who has worked on Essentials with me is fantastic, and I want to give them a lot of thanks for it.

But anyway, what's so great about v19?

mkxp-z ftw omg

mkxp-z is a bundle of letters, but it's also a very big deal. It's an alternative to RGSS, and if you don't know what that means, it's a set of code that RPG Maker games can use to make themselves work. And not just work, but work better than they would if they were using RGSS. RGSS is, to use the technical term, way old now, and mkxp-z is much newer and faster and has more features. And it's now in Essentials.

The upshot of it is that Essentials should now work a lot better. For one, it's faster, but that's not the only benefit. Fonts can be used without having to be installed, there's a built-in way to remap the controls to whichever keys you want, you can access information on https websites (so Mystery Gift works again), there are better screen resizing options, custom loop points in music, and so on and so on. It's also possible now to create versions of a game that can run on Linux and Mac, so games are far more portable now.

Sounds exciting, no?

Scripts and values

There have been various code enhancements behind the scenes in addition to the above, and one of them is the addition of support for external scripts. These scripts will live in the new Plugins folder, which makes it much easier for you to add third party scripts to your game - just drag and drop the script files.

Another big change is that things like species, abilities and items are now going to be known by their internal names (:BULBASAUR, :INTIMIDATE, :POTION, etc.) rather than their ID numbers. This applies to storing them in variables such as Pokémon objects, as well as using them in the filenames for sprites and icons and cries. The meaningless numbers will be abolished completely in future. Lots of code has been changed because of this, and Pokémon/item graphics have been rearranged into different folders to make them easier to work with.

How about something that makes more sense? There are two new PBS files (regionaldexes.txt and ribbons.txt), and tm.txt has been merged into pokemon.txt/pokemonforms.txt. Also, encounters.txt has a new format which offers increased flexibility and even allows multiple sets of encounters per map to choose from, so you could make wild Pokémon get stronger as you earn more Gym Badges (for example).

Big and beautiful

You know how events occupy a single tile no matter how big their graphic is? Well, not any more! You can now specify the width and height (in tiles) of an event, and that event will sit in all of them. There are so many things you could do with this simple yet powerful feature, such as having huge boulders to push around, Snorlaxes blocking whole paths at once, condensing the contents of whole bookshelves into a single event, triggering a single Player Touch event that lies across the whole of a road, and so on. Why use many events when a single one works just as well?

Meanwhile, the overworld weather animations have been overhauled and now look much better than they used to.

And the rest

To be honest, a lot of what's in v19 is behind the scenes - code improvements and refactoring and restructuring. It ought to be very exciting to those who are interested in that kind of thing, but on paper it's not as flashy as a pile of new features would be.

Despite that, there are still a number of new things in v19 that everyone can appreciate, and of course there are always bug fixes. The fact that so much work has been put into the gears and levers behind the scenes probably makes makes it an even smarter idea to upgrade your game to it. It's an important milestone for many reasons (mkxp-z, code restructures, being the first result of the new open source development), and exciting times are ahead.

The full change log for this version is available on the wiki.

Enjoy!
Pokémon Essentials, version 18.1
28th September 2020
Change log

Pokémon Essentials, version 18
2nd September 2020
Change log

You may remember that Essentials exists. It hasn't had a new release in nearly three years now, so you'd be forgiven for forgetting that it exists. But exist it does, and now there's a whole new version!

So what's in it?

Battle system overhaul

This whole thing started when I decided to rearrange how using a move in battle works, from "each target is attacked separately" to "the move hits all targets at once". I grossly underestimated the workload involved in this, and then things spiraled out of control and v18 became a whole battle system overhaul. Lots and lots of things have been rewritten and improved, and I can't possibly describe them all in this post.

The most notable feature is that triple battles are now supported. In fact, all battle sizes are supported, including 1v2, 3v1 and so on. (Anything above 3v3 will require you to add some extra things yourself, but the underlying code will work for those as well.)

The other most notable feature is that the effects of Gen 7 moves/items/abilities have been added. Gen 8 effects have been omitted for now, because I didn't want to add two Gens' worth of content at once. Essentials now comes with two sets of PBS files: one for Gen 5 and one for Gen 7, now with fewer mistakes and better formatting.

Battle visuals

There are move animations and common animations, and then there are "system" animations. The latter are things like "throw a Poké Ball" or "Pokémon faints" or "make the whole battle screen fade in from black at the start with everything sliding around and looking dynamic". These system animations have been greatly improved and standardised, now all using the same animation system which will eventually also be used for move/common animations because it's so much smoother and better.

Other visual changes have been made to the battle system. The command bar's background now depends on the environment rather than always being grey, data boxes (the panels with the HP/Exp bars in) now have better-looking numbers and improved bar-changing animations, and there's a splash bar announcing that an ability has triggered (which you can disable if you want). Messages can be sped up by mashing buttons.

PBS files

"trainers.txt" has a new format which is much easier to read and write (don't worry, the old format still works). This new format lets you define each of a Pokémon's IVs individually, rather than having a single number for all of them. You can also set their EVs. More properties should be easier to add in if and when they're needed.

Other PBS files get some improvements too. Formatting has been improved for added legibility, e.g. drawing a line between items in two different pockets in "items.txt"/moves of different types in "moves.txt", and indenting encounter lines in "encounters.txt". A few extra properties are definable, such as map-specific metadata for battle environments and extra positioning values for Pokémon sprites and their shadows. Move function codes are now strings rather than hex numbers, and a future update will make use of this by renaming all the 03C and 14A codes to proper English phrases that make sense.

The attributes of a trainer's Pokémon, if they aren't specifically defined in "trainers.txt", are now consistently chosen, meaning a trainer's Pokémon won't spontaneously change gender or nature if you fight them multiple times.

And more

While this wasn't a specific goal for this version, a lot of animations in the game have been made FPS-agnostic (including things like walking speed, Pokémon icon bobbing and event Wait commands). This means they won't speed up if you change the FPS, so you can play the game normally but at a higher FPS. Not everything has been affected, though, but many of the more noticeable things has been.

Similarly, a fair number of changes have been made to tackle lag. This includes the caching of data (and compiling it into better formats), simplifying calculations that are made constantly, and cutting down on unnecessary actions like checking for files when the game doesn't need to. I don't know how much of an effect this will have, but it felt good to do.

I'm fond of the Triple Triad minigame, and I've redesigned it a bit to use actual graphics for the cards rather than drawing them with code. You can now also see cards you're buying/selling, and the stats and prices on those cards are now calculated differently (they used to not care about HP and Speed at all, so Pokémon that excelled in those stats ended up with bad cards). There's much more that can be done, but that'll be in the future.

Essentials now includes a plugin manager script written by Marin, which will help third party add-ons check their compatibility with each other and with Essentials. It's worth using!

There have been loads of other code improvements, in the battle system and elsewhere. Things have been made more modular, more usable and easier to edit. There have also been plenty of bug fixes (and given how majorily the battle system has been altered, I'm sure a bunch of new bugs have been added). Check the change log for a longer, although still not comprehensive, list.

The full change log for this version is available on the wiki.

Enjoy!
Back
Top