Forum:Pikmin Engine by Espyo

So, a user from Pikipedia, proposed to me on the chatroom that he'd be willing to make a Pikmin engine for making real fanon games, if we wanted it. He said that it'd be pretty easy to make Pikmin games; instead of just programming it, we could just write stuff on text files. Enemy graphics would be easy, as most fanon enemies are just recolors anyway. And Espyo even suggested that he could create a program to generate areas. So it'd be pretty easy to make an actual Pikmin game! And our ideas, which were just written, could come to life! Comments, questions, and concerns are welcome. Also, here's a poll, right underneath.
 * You can read some details of what I have in mind down below. — {EspyoT} 09:15, 13 July 2013 (EDT)


 * User Espyo from Pikipedia is considering creating a Pikmin fan game engine so that the fanon games can become a reality. Would you be interested in this?

Definitely!
GREAT!Thank you so much!I cant make advance fan games and Im most likley wanna make a pikmin one!! I am so happy your making this!If you need help/supprort in eny way I can help-I am Marioguy123 and I thank you
 * Per reasons above, and I'd love to see my ideas (as well as other users') turn to reality!
 * Very great concept, could potentially make activity soar in this wiki.
 * Looks amazing!!! I will support you however possible.
 * Whoaaaaaaaaa man. I'm kinda skeptical on how I could possibly bring One Pikmin to life... I'll support this idea anyways since I am a programmer myself...
 * As someone who has dabbled in programming a little bit this would be a godsend if you could make this.
 * I would love to see some of my ideas in a pikmin game, but the only question I have is about the legal boundaries (really don't want nintendo to sue me for copyright).
 * Read the comments down below. As far as I know, there is really not much reason to worry. — {EspyoT} 21:18, 8 August 2013 (EDT)
 * Sounds awesome!!! Agoombaandapikmin 15:53, 15 August 2013 (EDT)
 * I think it would be great and I would support it... but it doesn't work on linux and I'm running linux so I can't help.:( Hipe 15:48, 17 December 2013 (EST)
 * Well, you're in luck, because Allegro is multi-platform. Porting the engine to Linux isn't really difficult, and Greenpickle keeps helping me out with it on IRC. Besides a really bizarre zoom-out glitch, the engine works perfectly fine on Linux, I just... didn't upload a working Linux version. But again, don't worry, because when the final thing is done, it'll work on Linux too (and I bet it'll work on Mac OS as well), and any fangame made with the engine will work anywhere! Hey, maybe you can also help me figure out what's up with the zoom-out glitch. Stop by on IRC (Chatroom on the left side bar) any time, from noon to midnight GMT mostly, if you want to lend a hand! — {EspyoT} 16:14, 17 December 2013 (EST)
 * Thanks! You can't open .EXEs in Linux though, so just show me the website which the Linux version is in! --Hipe 20:33, 18 December 2013 (EST)
 * Right, but the thing is, compiling a version for Linux for others isn't that easy. Not even compiling it on your own, there's always some problem! I'll get to you when I release the newest playable demo, later this month. — {EspyoT} 07:29, 19 December 2013 (EST)
 * Thanks!--Hipe 13:54, 19 December 2013 (EST)
 * OK, opening it in WINE --Hipe 16:08, 20 December 2013 (EST)

Comments

 * To make Pikmin move around obstacles, you'd need a decent pathfinding system. What kind of programming/dev kit are you using to make the engine? Because I know some tricks with UDK, that's about the only one I am proficient in, save for Unity. But you need to pay for Unity, so I prefer UDK. UDK has not enough static meshes so I'd have to make structures and models with Maya, which also is a lot of money. So I couldn't help much with that, but I am still interested in the idea. I tried opening the files in Pikmin 2's ISO to find game code but i couldn't figure out the right program to open SZS files, the only program I found is for Mario Kart Wii.
 * To add to that, I had planned to make a mod for Pikmin 2 that converted it into a fan game, with perhaps new Pikmin types, etc, but I can't edit SZS files. As soon as I can open and modify the base code of those files, I am good to go. If only there was a way...
 * Well, because it's not gonna be 3D, just 2D top-down, I'll use Allegro with C++. I've grown to have quite some experience with it. As for the path-finding, for now, a simple set of waypoints would be enough. In the future, something like A* would be better. — {EspyoT} 06:29, 2 August 2013 (EDT)
 * Ah. Also, do you think it's possible to modify Pikmin 2? (Possibly NPC, I've heard Wii games are much easier to modify)
 * It might be. The files in the Wii version might be the same, though, specially because of how a Wii is "just two GameCubes glued together"; I doubt they changed most files for the NPC release. But anyway, to view Pikmin 2 model files, you'll need to extract the szs file with yaz0dec, then use rarcdump, then use bmdview2 to view the final bmd file. I tried with the Bulborb Larva and it worked. Don't know how possible it is to change the models, but keep searching. — {EspyoT} 07:51, 3 August 2013 (EDT)


 * Ok, update time. I decided I should go ahead and make it (despite only 5 people showing any real interest), but there are two things to be said...
 * First of all, in order for the engine to really be flexible enough to handle several types of fan content... It'll have to be slightly more complex than I imagined. For instance, what if you want an enemy that shoots a stream of water towards one direction for 1 second, then walks towards the Pikmin for 3 seconds, stomping one of its two massive feet at a time? There is no enemy you could base yourself on. So, you'll have to specify that in the "shooting water" state, there is a hitbox that spans for how long the jet of water is, then after 1 second, it changes to the "stomping" state, where there is a foot here that hurts, but not another one, because it's in the air... Hopefully, it still won't be too confusing, and with minimal guidance, be it from other fan-made enemies or from simple tutorials I'll put up, anyone will be able to add enemies. Simple enemies might still be easy to do, though.
 * Secondly, I know I won't have enough time. I know I won't be able to do everything I want. As a result, and because this will be open-source, I plan on putting it on some repository so that others can contribute with code at any point, and so that if I have to abandon it, someone else can easily take my place. I'll try to make my code easy to read. — {EspyoT} 07:51, 3 August 2013 (EDT)


 * Can we get a status update?
 * Sure. On the IRC channel, I post updates every once in a while. I haven't posted anything here for two reasons: a) I'm gonna start studying for my September finals just tomorrow. I haven't been quite inclined to worry about the engine with that in mind, you see. b) Nintendo's been recently banning more and more things. It made me feel a bit uneasy thinking about talking about the project. But screw it. Here goes an update: — {EspyoT} 21:28, 1 September 2013 (EDT)
 * Looking good. I just have to say, thanks, this is a dream come true!


 * I think all of us here at Pikmin Fanon thank you again and again for undertaking this project. Making real fan games has always been a dream for Pikmin Fanon, something we were always reaching for but never really managed to grasp and hold on to. This is going to revolutionize Pikmin Fanon. Suddenly, many games like Pikmin:Ultimate Doom and Pikmin:Connection of the Worlds will do far more than just tell you about the game. They will give you the game to play and enjoy! Thank you from the bottom of my heart!


 * Thanks for the kind words :) I've got classes now, but they're only during the morning. I'll have the rest of the day to work on the engine. I know I said I'd eventually stop on this (I know I will, it's always how it works), but personally, I'd be more worried about Nintendo shutting me down. On the other hand, I guess they don't care about 0%-profit fangames... Maybe the fangames they shut down from Newgrounds were being paid with ad revenue? This isn't the case for the fangame engine. Either way, the development is going steady. There's a lot to do, it's complex, but somehow, progress keeps going brilliantly. — {EspyoT} 10:43, 15 September 2013 (EDT)


 * I think you should strictly forbid people from trying to make money of off the games they create, because if they start doing that, then you will be in trouble.

(1) Will there be beta testing, or will it just be pronounced complete and posted? (2) If it is not already planned, could you add some system so that users can share completed Pikmin games and play them?
 * I have two questions/requests:
 * 1) The engine isn't just going to be a thing that's made and later released and ended forever. It's a project that exists all throughout its development, and it's available for everyone (check the latest update that's included in my edit for more info). But yes, I suppose there will have to be a release where I ultimately say "This is it, you can now start your fangames using this engine!", and any version that's released from there on out will just be bug fixes and extra features. As for beta testing, it's too soon to go into detail, but I'm guessing that when the engine starts to become really complex, I'll compile some versions and have people quickly test them out, to see if they can find glitches. Otherwise, I'll just like a weekly/monthly release, and people can play around, whether they want to help catch bugs or not (kinda like Minecraft's weekly snapshots).
 * 2) Well, that's the whole point, really. You create your fangame, either by editing the files or using the included editors, and once you have a fangame that has all the Pikmin, areas, music, etc. that you like, you just grab the files on the Game_data folder, throw it on Dropbox, Sendspace, or some other file uploading service, and share it with the world! Whoever wants to play your game can just add your folder onto their installation of the engine, and it'll play the game right away. That's what I've been planning all along. Now, if you meant some feature in which the engine connects to the internet and downloads a game automatically, that's something I've considered for a while, but might be too hard to implement, and not worth the effort. — {EspyoT} 08:24, 14 October 2013 (EDT)


 * I just played around with it! I was wondering, could you please give me a quick run-down of the controls? I only how to move, throw pikmin, whistle, and take pikmin out of the onion (I can't put them back in, though).
 * Oh crud, I knew I was forgetting something! I'll update the update. As for the Onions, they're really incomplete. It'll have a full menu when it's done, but for now, all you can do is withdraw a Pikmin. — {EspyoT} 06:53, 24 October 2013 (EDT)
 * How do you make menus come up? As I said I'm running it on WINE. --Hipe 16:22, 20 December 2013 (EST)
 * No Onion menus yet. Right now, if you get close to an Onion and left-click, it'll pull out a Pikmin, provided there aren't 100 on the field. — {EspyoT} 16:50, 20 December 2013 (EST)
 * And also, I could write some documentation for you if you want me to.--Hipe 17:41, 20 December 2013 (EST)
 * Documentation? What do you mean exactly? (Also I was on IRC when you joined just now, but I was busy). — {EspyoT} 17:50, 20 December 2013 (EST)
 * Controls and info... that sort of stuff. --Hipe 18:06, 20 December 2013 (EST)
 * Oh, no need, thanks. There's not much about that sort of info, atm, and what exists is not yet final. — {EspyoT} 18:15, 20 December 2013 (EST)
 * And also (note to self: stop using and also), what do the purple boxes do? --Hipe 18:31, 20 December 2013 (EST)
 * Oh, those just provide information when you get close. I wanted to make some rudimentary wooden sign graphics, but I never got around to it. No such thing exists in any Pikmin game, but for some reason I decided to make them. Say, does the game fade out to black when you zoom out (press C or the roll the mouse wheel down)? In addition to that, does the cursor and captain spazz out at random? I really should hurry with a release that fixes the latter glitch... — {EspyoT} 18:37, 20 December 2013 (EST)
 * No, but I'm running WINE which is a Windows emulator, so I really can't say. --18:48, 20 December 2013 (EST)
 * Plus, where did you put the purple box-sign thing's graphics in your github repo? I've forked it to change the sign graphics to something that looks like a sign. -Hipe 19:14, 20 December 2013 (EST)
 * They don't use graphics yet. They're rendered using Allegro's native primitive rendering functions; in this case a rectangle. — {EspyoT} 19:21, 20 December 2013 (EST)

October 23 Update
A couple of days ago, I compiled a quick runnable alpha version: https://dl.dropboxusercontent.com/u/47921869/Permanent/PFE/PFE%20alpha.zip You can't do much right now, but feel free to mess around! One warning though: Don't issue more than 50 Pikmin to carry the cyan object, as the engine will freeze. Also, I've got something that I figured I could ask for help with. A logo! I need something that's quick, simple, small, looks good, and makes it clear that it's an engine for Pikmin games. Maybe some Pikmin carrying some cogs and nuts. I want to hear your suggestions! — {EspyoT} 09:58, 23 October 2013 (EDT)
 * Forgot the controls... Ok, so you can move with WASD, and aim the cursor with the mouse. Left click to punch/throw/pluck/etc., and right click to use the whistle. Tab switches leaders. Left Control dismisses your group. R and F use sprays (think of it like the up and down buttons on the D-Pad in Pikmin 2). C switches between the 3 camera zoom levels, although you can fine-tune the zoom with the mouse wheel. Hold Space to move the group towards the cursor. I should also note that you can also use a gamepad to play, although it's a lot wonkier at the moment. — {EspyoT} 06:53, 24 October 2013 (EDT)

October 14 Update
The engine is now on GitHub! The source code is now available, and safe. Because of the way Git works, you can now check out my changes there, instead of the old changelog file. As for news on the engine itself, it's shaping along nicely. It really looks like something now, and besides stuff like animations and Pikmin actually doing something that isn't weirdly following you, it actually looks like an actual game! Here's a screenshot: Screenshot I won't post a video because there's actually quite a lot that's been done, and a video would just take forever to show it all. I still have a lot to do, but at least it's going well. — {EspyoT} 08:24, 14 October 2013 (EDT)

September 2 update
I have decided to start it, and at the moment, you can already see, move, and switch captains, you can move the cursor, and the captains turn accordingly, Pikmin move around and can be idle and burrowed, you can whistle them, they can (weirdly) follow you, you can kinda throw them, and there's a partial HUD. In terms of looks, it's no Gioconda, but it's perfectly understandable. In terms of progress, it looks like most of the basics are done already, but they really aren't. Even for mechanics and such, I'm only like 1% of the way there. A lot of other things are still needed, like menus and collisions/areas.

Anyway, there's this (slightly) outdated video I recorded to tide you over. I'll also leave a link to the development log.

Now, as I mentioned above, I'll be studying hard for my finals the next weeks, and after that, I'll go on vacation for a week, no Internet (probably). I obviously won't work on this while I'm trying to study, but during my vacation, because hanging around on the beach all day every day becomes boring, I'll probably work a bit on the engine as well. Other than that, remember that you can also use the chatroom (link on the left bar) to talk to me and other Pikmin fans. Every time I do something on the engine, I post it on the chatroom. This ranges from new features to the game exploding in hilarious ways, as it often does during development. And yeah, because the engine was greenlight, you can go tell your friends about it and share the word, about the engine that might revolutionize Pikmin forever (/ambitious). I'm... just kinda skeptical about Nintendo finding this and shutting us down because they're insane... Maybe I'm being too negative. Thoughts? Oh, one last thing. If you can find someone who has time, likes Pikmin, and can draw sprites reasonably well, don't hesitate to tell me about them. I may do the programming side of the engine, but I won't do basic sprites, which will definitely be needed. If anything, basic Bulborb sprites will need to exist so that game creators can change them accordingly. — {EspyoT} 21:28, 1 September 2013 (EDT)

Details
I am a very busy guy. I have tons of projects, mostly revolving around programming and games. Because of all of these projects, I don't focus enough time on actually programming games, even though I have the skills for it. In order to develop some experience, I want to program on loads of game-related things, and I already have a few in mind. One of the least-priority ones is an engine for Fanon members to make their Pikmin games come to life. But then I realized... Maybe I should ask the fans if they want to have such a thing really badly. If they do, I might move it up on the list, because, after all, it's a project people really want, and it could easily change the community deeply. This is what this poll is for.

Please give your opinion, and comment on anything regarding the project! I really want to know if you're interested in such a thing or not. Now, to answer some questions about it that you might have... — {EspyoT} 09:15, 13 July 2013 (EDT)

Do I need to be a programmer to make my game come true?
Short answer: not at all! You see, my goal is to have an engine upon which a game can be created, using day-to-day knowledge. Of course, that's only for the game's logic; the custom graphics and audio will still have to be done by you!

How would the editing work?
To edit one of the game's images our audio, just change the image file on a folder. Easy as that. To actually add new Pikmin types, new areas, etc., things get a bit more complex, but hopefully, nothing confusing.

To add a Pikmin type, there will probably be a text file, somewhere. Editing the text file should be very straightforward. Here's an example of what it might look like: pikmin{ name = Brown Pikmin color = brown resistance = ground strength = 1 weight = 2 mobility = 1.2 carry = 1 power = 1 size = 1 }

It shouldn't be more complicated than that. That should be more than enough to create a new Pikmin type: some Brown Pikmin that has a resistance to ground based attacks (you'll have to tell the game what a "ground-based attack" is, later on), has average strength and such, but walks faster than normal and is twice as heavy as normal. Simple, right? Now, even though that's easy enough, I plan to also make it possible to have very complex Pikmin types, using nothing but these simple text files. So you can really approach this however you want: make a simple Pikmin by changing some attributes from a normal one, or make a completely wacky Pikmin that changes quite a bit. For an enemy, it'd be pretty much the same thing: enemy{ name = Electric Bulborb body_type = electric can_sleep = yes hp = 4000 weight = 10 pikmin_seeds = 10 pokos = 100 size = 50 }

Pretty simple, right? I mean, come on, this is so self explanatory! Even if you get confused, I plan to have some documentation on this very wiki, so you can always check that if you become overwhelmed.

As for the areas, because of the "minimal work to get a game" theory, if your fangame doesn't have specific areas, you can probably just let the engine draw them out for you. Otherwise, I have a few ideas, involving drawing simple lines to mark walls. That's it, easy.

As for the plot, captain comments on the Piklopedia, day log, etc. you'll probably be able to just edit a text file easily: intro_frame{ name = taking off image = taking off.png text = "All controls are appropriately set. Preparing to take off!", said Olimar as the ship rumbled violently. }

...

note{ enemy = Electric Bulborb captain = Mr. Punny Junior text = Yow! What a shocking experience! Touching one of these can really make your hair stand up! Make sure to use Yellows, or you'll be sent frying out of there! }

What will it look like?
Sorry for all of those that had any idea that the games will be in 3D. But that just cannot be done for mine and for your sake! It would take a LOT of work to program the engine in 3D, and also, if you wanted to create the graphics for your enemy, instead of being a simple sprite, you'd need an entire 3D model with textures!

The games will be 2D, seen from above. The concept of height will still exist, though, but it won't be easy to see from a top-down perspective. In terms of graphics, you can either use the built-in graphics (probably ripped textures from Pikmin and Pikmin 2), or you can just easily add your own!

What about the engine's development?
I'll only be able to work on the engine on my free time. I might not be calculating this right, but, in my head, I can see the project going kinda smoothly. However, knowing game programming, chances are things will take a turn for the complicated all the time. By this I mean that... if I get too too busy, I may have to drop the project at some point... Let's just hope not. But either way, be willing to accept this as a possibility.

Some of your characters, areas, etc. might have something non-standard. For instance, a boss enemy that sometimes clings to the ceiling. No other enemy does that, and adding that bit of logic to the game just can't be easily done using the text file alone. This means that I'll have to include some code so that the game knows what a "ceiling" is, for instance. You can ask me to include such things, if you notice that they're missing and you'd like them, but I might focus on more widely-used mechanics first, naturally.

As for licensing, I think you don't need to worry. The engine will be open-source and free, and both the engine and the games made with it will be considered free fan-games, which are all right in the eyes of Nintendo. The only problem is that you can't make people pay for your game. The second you start getting profit directly off of a franchise that belongs to Nintendo, you're doing something lawsuit-worthy.