Forum:Pikmin Engine by Espyo

Use this thread to discuss Pikifen. This thread will also cover updates.

Version 0.13 and a rename
Time for a new update! This one is a bit different from the others in that the project got renamed. Allow me to explain.

When I started the engine, I realized it was ambitious, but in the last few years, I realized it's actually impossible. Not because it's a long challenge, but because creating an engine that can make people's Pikmin fangames come true is not possible. No one software will ever be powerful enough for that! If it were, it'd be a programming language. At best, users can use the engine to create a fangame similar to what they envision, but still very far off. Whether it's because they want their fangame to be in 3D (which my engine is not aimed for), they want there to be features I have no way of customizing, or they want features that are just flat-out impossible (like some MMO mode).

Editing something like an enemy's name, a Pikmin's attack power, or an area's carrying paths is a matter of simply specifying numbers or words. But customizing the exact behavior the main menu should have, or how exactly the mechanics behind treasure collection work, or how a boss should manipulate the terrain or your leaders, wouldn't be possible in the same way you just write "max_health = 300" or drag a point around in an editor. It'd have to rely on some base logic that I program, but said base logic could never work for all sorts of crazy and diverse behavior ideas and sub-logics. Again, if it could, it'd be a programming language, completely defeating the purpose of the engine.

To add to this, adding story mode to the engine is going to be very hard. Ignoring things like the game's appearance and forced camera perspective, we've got enemy scripting, spray types, area geometry, etc. built in a very powerful and flexible way. But adding a cutscene system, a progress saving system, or a gameplay system capable of handling corner cases (extinctions, sprouts in different areas, wild Pikmin, etc., as well as specific and dangerous interactions between these mechanics) is going to be one of my hardest challenges yet.

So, I sat down and thought about everything. First of all, I really don't want to continue development under the premise that the engine can make fangames come true. It is impossible, and I don't want to continue in that lie. In addition, I want to spend more energy on making the core gameplay fun, instead of debating how to make a story mode that can define a game. Basically, I want my project to be a fan-made engine with which other fans can create and play areas, enemies, treasures, etc. Not a mystical software that can make dreams come true.

As such, I've decided to rename the project to Pikifen! (It's short for "Pikmin fan engine", but it also works for the old name, too!) More than a rename, this is a rebranding. Having the new name, and the new mission statement behind it, means I can actually follow through with creating a fun engine, that focuses on the gameplay first, and maybe later, on the ability to create fangames. There are other reasons for this rebranding too:
 * Not having "Pikmin" or "fangame" in the name of the project makes it slightly less likely that Nintendo will interpret the project as violation of their IP's rights.
 * Not having "engine" in the name also makes it sound less like I'm creating a remake of the canon games's engine, and more like this is just my own thing.
 * The new name is short and catchy, as opposed to the cumbersome "Pikmin fangame engine" name.
 * If I want to stop development, at least the core gameplay will be developed, even if there is no story mode support.
 * I can spend less effort deciding what's the most powerful, flexible, and friendly way to make a certain feature such that it fits most fangames, and focus more on making it fun, while still keeping it customizable.

In short, I don't want to give the idea that the engine can make your dream game come true. I still want to make it very flexible, so people can create their own content in it, like always, but I want to make it clear that the ability to create a fangame with it is an afterthought, not the main goal. I hope you understand my views on the future of this project, but feel free to ask me if you have any questions!

With all of that said, let's get down to the changes in this version! I've changed the default resolution and zoom to make everything bigger and better to look at. Let me know how this looks, but know that you can still change the resolution in the options, or in the all-new options menu. You can also make the window fullscreen! Speaking of menus, they received a general overall, and the title screen now uses an actual set of living Pikmin flowers to show the logo. All of the user data was moved to its own folder, which should make sharing content that doesn't carry personal things much easier. I've also added the Whiptongue Bulborb, which didn't get included in the previous release due to time constraints. A more detailed and complete changelog can be found here, and the download link can be found here. As usual, let me know what you think! — {EspyoT} 13:56, 11 February 2018 (EST)

Version 0.14
Version 0.14 is here! This version mostly changes the way hitboxes and scripting work. For players, you will just see minor stuff working better, but for content creators, you'll have to do some things differently, and you'll also have access to more scripting options. This version also has the following highlights: leaders can now punch, added an Armored Cannon Beetle, Bulborbs now turn on the spot to align, like in the canon games, and dead leaders no longer lock up gameplay. Besides that, there are many more minor tweaks and bug fixes. I'm sad to say that content creators that wish to port their content to 0.14 will have a lot of work to do, as explained in the changelog, but as usual, I trust that these new formats are for the better. The changelog can be found here, and the download link for this version here. Let me know what you think! — {EspyoT} 10:47, 24 April 2018 (EDT)

A few words.
From what I've read, this update should be just what I need to make a good 75% of what my games were missing available.

The new script action "Spawn" should help me (potentially) make random enemy spawns (perhaps using the new randomize variable thing), which was one of the key concepts behind my game.

A scripting update is just what is necessary, but hard to accomplish, and so I thank you for the work you put into it.

--I am the GreatBulborb! Bulborbs are the supreme race! Bow down before my might! (GreatBulborb) (talk) 13:10, 27 April 2018 (EDT)
 * Thanks for the words! The mob scripting is still a limited concept, but I hope it's powerful enough to accomplish most tasks that users need. — {EspyoT} 13:36, 27 April 2018 (EDT)

Question About The Spawn Mechanic
So, I tried using the "Spawn" mechanic to make an enemy (an imperial bulborb) spawn other enemies (dwarf red bulborbs) when it shakes. However, I wanted to spawn them on all sides, so I used negative relative coordinates, which promptly crashed my game. How do I get them to spawn behind and to the right of the bulborb? Am I doing it right? --I am the GreatBulborb! Bulborbs are the supreme race! Bow down before my might! (GreatBulborb) (talk) 08:15, 10 May 2018 (EDT)
 * How weird, I don't see why the negative numbers would cause a crash. Does it work with positive coordinates? I'll check what's up with this crash later today. — {EspyoT} 09:59, 10 May 2018 (EDT)

It didn't crash with positive coordinates. Here's the Code for the spawn parameter: shaking { on_enter { stop spawn Dwarf Red Bulborb relative 120 0 0 0 spawn Dwarf Red Bulborb relative 0 120 0 0 spawn Dwarf Red Bulborb relative -120 0 0 0 spawn Dwarf Red Bulborb relative 0 -120 0 0

set_animation shaking }       on_animation_end { set_state examining }   } Otherwise, it's script is identical to that of a Red Bulborb. --205.213.195.20 10:10, 10 May 2018 (EDT)
 * Weird, that exact code is working perfectly fine for me... Does Error_log.txt say anything? Also, maybe it's crashing because one of the Dwarf Bulborbs is spawning out of bounds, or something? — {EspyoT} 15:13, 10 May 2018 (EDT)


 * Actually, you're probably right. The bulborb testing map takes place in the middle of two small islands over the void. Thanks foor the tip.--I am the GreatBulborb! Bulborbs are the supreme race! Bow down before my might! (GreatBulborb) (talk) 10:18, 11 May 2018 (EDT)


 * Ah, that's good to know, but I should probably add some system to stop the game from crashing if a spawn happens out of bounds... Thanks for letting me know. — {EspyoT} 12:17, 11 May 2018 (EDT)

Version 0.15
This E3 didn't give us any Pikmin content outside of Smash, but at least I've got something to show for the E3 week!

Version 0.15 of the engine focuses primarily on improving the animation editor, which was really clunky and confusing. Between new features and streamlined menus, it should be much easier to use. Since I was already implementing some quality-of-life changes to the animation editor, I decided to port some of those to the area editor too. And since I was already messing with the area editor, I added a couple of new features I thought were important. The animation editor changes also came with changes in the way animations themselves work, though that also means that the file format for animations has been changed. If you made custom animations, you may need to port them, but not necessarily. For this update, I've decided to include a Yellow Wollywog – it doesn't match the topic of the update very much, but I needed to create something to test the new animation editor!

As always, you can get a list of what got changed, as well as a list of steps to follow to port your content in the changelog. Download version 0.15 here and let me know what you think! — {EspyoT} 15:53, 16 June 2018 (EDT)


 * Version 0.15.1 is now out! This revision fixes a crucial glitch in the sprite bitmap part picker, in that larger spritesheets on weaker machines could cause a stack overflow. I also fixed other minor problems along with it. Same as before, the full changes are here, and the download is here. — {EspyoT} 17:48, 23 June 2018 (EDT)

Just Checking In
Based on what I've heard from the detailed changelog, the most recent addition has added the ability for bomb rocks and with it the ability to have enemies eat enemies? If so, I can't wait for the next update- hyper-predatory bulborbs can finally be a reality! --I am the GreatBulborb! Bulborbs are the supreme race! Bow down before my might! (GreatBulborb) (talk) 16:07, 12 July 2018 (EDT)
 * Well, more or less. I've just tweaked the code a bit to pave the way for such features, but they aren't in the engine. I'm not quite sure what I want to do about enemy in-fighting just yet, but bomb rocks are planned to show up in the next update! — {EspyoT} 16:23, 12 July 2018 (EDT)

Version 0.16
The Nintendo Direct didn't bring any Pikmin news, but I do! Version 0.16 brings a lot of different features that allow the creation of more powerful and dynamic objects. These include linking different objects, making them have a parent/child relationship, sending messages between objects, the ability to walk on top of other objects, and rectangular collisions. To help demonstrate some of these, I have created a Beady Long Legs, the most complex enemy yet! It's not perfect, but given how complicated it is, even in the canon games, I think I did a good job. That said, I couldn't find a place for it in the usual area, so you'll have to create one yourself and spawn it in. I've also made several miscellaneous features, like a richer rendering system, more interactive Onions, and a handful of new actions and object type attributes. As always, the full list is of changes is here, and the download link is here. Enjoy!— {EspyoT} 13:26, 14 September 2018 (EDT)

Version 0.16.1
Much like version 0.15, version 0.16 launched with a couple of critical glitches. The most important change in the 0.16.1 update is that the sector deletion crash glitch was fixed. I'm so sorry for that. I've also added a way to specify a particle generator's Z offset, so particles can now be drawn above or below the objects that emit them, similar to how it was before 0.16. I couldn't tell how much that feature was missing till players reported it! It stinks that I broke some particle effects, but receiving the feedback was very important, so I'm glad that 0.16.0 steered the engine towards a better particle system, in the end. I've also tweaked the Beady Long Legs a bit, and brought some new features (which brought one format change), all detailed in the changelog. Download 0.16.1 here! — {EspyoT} 13:43, 22 September 2018 (EDT)
 * Quick note: If you downloaded it on its launch day, go download it again. Neo and Kman helped me fix a glitch with the Armored Cannon Beetle not working. Instead of launching a new version, I just updated the .zip file on GitHub. — {EspyoT} 10:48, 23 September 2018 (EDT)

Version 0.16.2
Version 0.16.2 is out! It fixes some more glitches and tweaks a few things. I've also added a couple of small requested features, like the ability to change the starting number of sprays, and the ability to make objects glow when under a status effect. As always, the full list can be found in the changelog, and the download for the latest version can be found here! — {EspyoT} 12:45, 3 November 2018 (EDT)

Version 0.17
Version 0.17 is out! This version introduces several important objects to the engine, like Pellet Posies, decorative plants, nectar, Candypop Buds, bomb rocks, and a few others. You can find some of these new objects in the "Play" area. As usual, there are also some improvements and new features in this version. Specific enemies can now drop specific things, like pellets or treasures, the editors got some minor quality-of-life features, Pikmin that carry a single-Pikmin object will now do it better, gameplay should have better performance, and perhaps most importantly, some nasty glitches with the area editor have finally been fixed! You can find the full list of changes in the changelog, and download 0.17 here! — {EspyoT} 14:04, 4 May 2019 (EDT)