The Tradeoffs
So what are the tradeoffs, you may ask? Well, you will have some memory overhead loading everything in, and yes, there are some small performance hits in some areas because of all the extra unused capability in the system. Playmaker isn't optimized for any particular type of game, and neither is Unity. But today's hardware is so powerful that unless you are doing something pretty crazy, you probably won't hit the wall any sooner than you would using other approaches.
Another trade-off that I encountered was that due to a couple of levels of abstraction in the game-making process, you can sometimes feel helpless to fix problems. I would find a bug and spend days trying to fix it, and be clueless to the source of the problem. I imagine this is common to some extent in most games, especially where you use someone else's engine/code/API; however, when you are using an engine with a plugin to that engine, things can get tricky. Luckily both Unity and Playmaker have excellent support, and I further mitigated this by working directly with an expert in both Unity and Playmaker whenever I encountered problems I couldn't solve.
Also, while I have yet to encounter this, the more plugins you use with Unity, the higher your chances of conflicts, or of the creator disappearing/no longer providing support. If you are selecting plugin(s) to use with Unity, I suggest choosing ones that have been around for a while, receive frequent updates, and whose creators are active in their own forums. In my case, Playmaker actually supports my chosen interface plugin, which has also been around for some time, which was very handy.
The Advantages
In terms of game design, Unity and Playmaker are great in allowing you to focus almost entirely on building and testing ideas as quickly as possible. I'm personally focused on game design, so this allows me to create ideas and prove/disprove them quickly, getting in as much practice and experience as possible in a short time span. I jumped out of games into a business and back again a few years ago, so I feel like I'm getting to make up some lost ground now!
If you're a game designer at a typical large studio, you might be making "safe sequel number 9999," and while you may have some room to move, you can hardly flex your muscles and push yourself in terms of wildly different or unique designs. If for example you're a designer "stuck" making say, racing games (happily or otherwise) you could practice in other genres with relative ease and low time commitment.
I also believe that the fewer people you have on a project, the more unique and singular the design vision will be, creating more individual games. Using these tools almost puts you into a team that has created a graphics/physics/animation/etc. engine and lets you run wild with whatever design you like, with little in the way of restrictions.
The Lean Startup?
I'm also a big fan of lean startup principles, a concept that Eric Reis is famous for. Lean startup is mostly a business approach where companies attempt to prove product or service ideas prior to launch, then quickly develop a minimum viable product (MVP), iterate on it, and get customer feedback as quickly as possible. This is the opposite to how games are traditionally created, where you define the game first via a design document, make the game, then hope it will sell well.
For lean startup strategy, I think this combination of Unity and Playmaker is certainly something to consider for both large studios wanting to prototype ideas/MVPs quickly, or for solo/small teams, especially if you lack a coder and just want to dive in yourself! Throw in Kickstarter (a crowd funding solution), and you have a very nice lean startup strategy of game development where you can quickly create a prototype, develop a Kickstarter pitch, then prove whether people would pay for your game before you have heavily invested in it.
(If you'd like to know more, you can read Tyler York's Gamasutra article on lean startup for games.)
So how did I follow the lean startup approach, exactly? Well, I did and I didn't. Because this was my first Unity title, and I was going to be learning a lot, I picked and chose various concepts from lean methodology while I decided to play it safe and attempt a fairly proven game concept. I looked at Tiny Wings, Dino Run, Dolphin Olympics, and other games that were similar, and decided that because those games have had some success, that I was already aiming for a concept that would have a good enough chance of success. If you like, you can go the whole hog and try to prove whether your idea would be popular by creating banner adverts or text ads on Google or Facebook, and see what sort of clickthrough rate you receive.
I then chose an art style that I was familiar with -- I have 3D art/texturing as my background, with no animation required (I have no skills there), no AI, and just an extremely simple game mechanic that I could tune based on feel. My minimum viable product was done in days due to Unity's built-in physics; I showed some friends who approved, and I was then on to the finished product.
From my work on Zombie Outbreak Simulator, I was also familiar with freesound.org, where I sourced almost every sound in the game, quickly and free! For music, my friend Rhys Lindsay recorded me an awesome spaced-out track. This left me to concentrate entirely on the learning process and fine-tuning the game.
I would say that I followed lean startup mostly in respect to creating an MVP and final product with the minimum asset requirements, minimum spend, while iterating quickly and often. I honestly was a complete coward in terms of getting early feedback from anyone but friends, as I was genuinely scared that someone would steal my idea while I crept along at a snail's pace learning how to make it. I also just wanted to make something that was uniquely me, with little outside feedback. Funnily enough, towards the end of the project, I found it really helpful and great fun to work with testers and get their feedback. My apologies to them for not being able to add more planets! Perhaps in a future update!
|
http://img507.imageshack.us/img507/4826/tutorialinputball3.png
Playmaker definitely requires programming for anything slightly complex with custom classes, etc.
http://www.mediamolecule.com/blog/article/littlebigplanet_the_road_to_7_million_
levels/
These console "mod tools" aren't successful just because they foster exploratory creation through instant feedback (i.e. no waiting for your experimental changes to compile), but because they spread out the space in which the problem is articulated: usually by providing 1:1 contextual triggers for in-game events. Yet, a degree of indirection supports the construction of mechanisms, traps, and even computers!
http://www.youtube.com/watch?v=ZiRgYBHoAoU
I mention all this as I forsee a convergence between development tools, mod tools and open source. In the future Independent developers should not have the unnecessary burden of having to build and debug a 3D engine from scratch, to handle collisions and a stereo soundscape, they should be able to adapt AI routines written by others and published altruistically as open source, common models of trees and buildings should be done once and made available to all rather than needlessly replicated. If someone makes a virtual Paris for a racing game, some of that work can be reused for a detective game, etc.
Right now there may be two developers at different companies struggling to build two Eiffel towers!
"In the future Independent developers should not have the unnecessary burden of having to build and debug a 3D engine from scratch, to handle collisions and a stereo soundscape, they should be able to adapt AI routines written by others and published altruistically as open source, common models of trees and buildings should be done once and made available to all rather than needlessly replicated. If someone makes a virtual Paris for a racing game, some of that work can be reused for a detective game, etc"
The problem for this is most game assets are custom made for that game or even that specific level. How would you like to be playing GTA5 and see the same gun from Fallout New Vegas, while this might be cute to some, I personally would feel like they were shorting me a gun model. And the 2 different developers could just buy an eiffel tower model if they were that terrible at modelling.
Love Playmaker and hope to see more systems expand on this idea.
I'm glad for things like this, because it provides a nice bridge for artists who know the logic of what they want done, but don't know the language the program "speaks" to make it happen.
As a more serious encouragement:
The key thing I've learned being an english nerd turned engineer, curiosity, perseverance, and a measure of pure bloody-mindedness are the three greatest traits to cultivate in making the leap to any STEM-like discipline. They turn a person's thoughts from "that... is too much for me" to "I can almost pretend I understand it" to "I think I got it" to "Old hat old bean". Keep at it and be grateful for the kindness of teachers, friends, and mentors.
Keep it up and many thanks for sharing!
I learned flow graph scripting in engines like CryEngine and Unreal before I ever did anything in actual scripting. Now that I have a fairly good grasp of scripting using C++ (and could probably move to other syntax fairly easily), I wonder if this would be a good way to make the leap from scripting to actual coding.
The only thing is that I feel that the game engine should already handle so much of the coding side of things already. The wonderful thing about using an engine like Unreal is that, for the types of games it's built for, you can literally get started making a game in it with almost no tweaking necessary (and usually it's to the small stuff, like camera distance from the character, UI placement, etc.). If you are at a point where you have to program the physics yourself from scratch, I feel that's already a problem for game production.
While custom tweaks to an engine are always going to be needed for certain games of course, and any engine should let you edit just about anything, I do think that the idea of a "game kit, just add content" is probably a better route if you have a specific genre in mind. I'd love to see the same thing for, say, RPGs, RTS games, and that sort of thing in addition to just shooters.
I haven't looked into ShiVa but I guess that's another "general purpose" engine. If I liked coding in LUA, I'd probably try ShiVa ... but since I prefer coding in C# and am very happy with Unity, I don't look much further ;-)
I still enjoy using PlayMaker because as you mentioned, it's visual coding, and designing around states really helps to keep things organized, manageable, and understandable at a glance.
As far as for teaching myself Unity and PlayMaker, I found it very helpful to port a couple of the 2D games created in the "The GameMaker's Apprentice" book (for the GameMaker engine) to Unity & PlayMaker!
The 2D art assets were already created on the book's CD, so it was then just a matter of learning how to create the sprites, collision objects and physics back in Unity and getting PlayMaker to mimic GameMaker's code blocks - in some cases I even created custom PlayMaker objects to more closely match the functionality of GameMaker.
Turned out the be a great way for me to learn PlayMaker and Unity.
Seeing how easily I was able to port the GameMaker games to Unity made me appreciate the power of using Unity & PlayMaker together - what a powerful combination!
Let me know what you think!
My logic bricks are undeniable
Blender wins again
http://www.youtube.com/watch?v=H3lEgMqm1eg
My logic bricks are undeniable
Blender wins again
http://www.youtube.com/watch?v=H3lEgMqm1eg
I find it a lot easier to debug but if any of you are interested in seeing it in action below is a link to a demo video that I made for people who are doing tutorials in uScript that I'm running out of Sydney.
http://www.youtube.com/watch?v=Pp-LI7wvRWo
As you can see it is very similar to UDK's Kismet, but I've found just as flexible as Playmaker and again, a lot easier to debug.