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!

 * 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)

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!

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.