2D Point and Click Engine Recommendations

I’m looking for some good recommendations on modern 2D point-and-click adventure game engines. These should be complete engines, not just advice to use Lua or Pascal (it’s making a comeback). I want to look at the whole engine, not just the scripting language. PC based is required. Mobile is a ok. HTML5 is not necessary. Screw JavaScript. Screw Lua too, but not as hard as JavaScript.
I’m not so much interested in using them, as I’d just like to dissect and deconstruct what the state of the art is today.
P.S. I don’t know why I hate Lua so much. I haven’t really used it other than hacking WoW UI mods, but there is something about the syntax that makes it feel like fingernails on a chalkboard.
P.P.S It's wonderful that "modern 2d point-and-click" isn't an oxymoron anymore.
P.P.P.S Big bonus points if you've actually used the engine. I do know how to use Google.
P.P.P.P.S I want engines that are made for adventure games, not general purpose game engines.
http://unity3d.com/
I know lots of indie developers still use Adventure Game Studio - http://www.adventuregamestudio.co.uk/ - I guess it's not perfect but sill great games were developed using it, for example The Cat Lady - did you see it? - http://thecatlady.co.uk/
http://www.stasisgame.com/visionaire-engine-powering-stasis/
I used it a couple of years ago for a small hobby-type adventure game and was very pleased with it. In the meantime it has even been open-sourced, so all the better.
https://opensludge.github.io/
Adventurezator: When Pigs Fly
http://store.steampowered.com/app/300280/
Never tried it myself, but seems quite interesting.
I looked into EEPP (https://bitbucket.org/SpartanJ/eepp) and ORX (http://orx-project.org/) as alternatives along the lines of what I wanted to achieve (a 2.5D OpenGL/SDL/C core with Cython/Python or another sane language scriptability)
I've also tried Wintermute few years ago, great for 2D games, but lacks some robust scripting for me though.
http://wiki.scummvm.org/index.php/HOWTO-Fangames
Basically, most engines referenced there were already mentioned in the comments:
- Wintermute
- AGS
- SLUDGE
Some people really like the SCI/AGI fangame creation tools for whatever reason ;)
http://www.bertramfiddle.com/dev-blog/
I wish I had known about Adventure Creator before we started out though, that could probably have helped us save a lot of time.
I have never played a Wintermute game that was not at least one step above the rest. From low res indie, or big shiny commercial product, at the very least the engine never stood in the way of crafting some amazing games.
There's a market for a refreshed engine, and there are some out there, but their lists of shipped games are much smaller.
In Wintermute, everything is an object (including variables). The engine creates a Game object. The Game object has an attribute called Scene (i.e. Game.Scene) that stores the currently-loaded Scene object. Scenes are comprised of Actors, Entities, Items, Regions, etc. and UI objects like Windows and Buttons. These are created using plain-text "definition" files. Wintermute comes with tools that create these automatically for you, but it is possible to make templates/snippets in your favorite text editor and generate them that way. To change the scene, you simply use the Game.ChangeScene method and pass it the location of one of your scene files (e.g. "../../scummbar.scene") and some other parameters like how the scene is supposed to fade in and out. In Adventure Game Studio, the engine is wedded to the editor and is the only way to create new scenes and other objects. You can't copy a folder to a new destination (e.g. cp -r room1 room2) and this is a huge limitation. To my knowledge, it is impossible for developers to work on different scenes at the same time and merge their work. One must save and close the project, and re-open it in another location. In Wintermute, however, everything is stored openly in a directory structure and any work will immediately be accessible across a local network. You can use git or whatever it is you prefer for source control. It comes with a debugger that allows you to view all the global and script variables at run-time. You can create watches, set breakpoints, step through code, etc. In fact, it's the best debugger I've seen in an adventure game engine, but that's not saying much. You attach scripts to the characters and items in your game, and code is executed when an event occurs. There's a "this" keyword which stores the object currently running the script. Dialog is created using nested if/else or switch/case statements. For example, if the Storekeeper's TalkTo event is triggered, a function named StorekeeperDialog is called. Inside the function body is an infinite loop that displays the dialog choices and waits for the user's input. You store the selected response and process it. Lastly, there's parallax scrolling, particle effects, plugins can be written in C/C++, and more. Audio and video is license-free OGG and Theora. All the graphical elements are sprites including the UI and fonts, but there is TrueType font support. You can dump the string table for localization and talkies.
For hobbyists, AGS is a great way to learn how to make an adventure game, but I would not recommend using it outside of that scope. Nevertheless, it's been used to make commercial games. As for OpenSLUDGE, the language is poorly-designed, has poorly-chosen keywords and built-in function names, and the included tools and documentation are really lacking. It's not object-oriented, but pretends to be.
Most Languages: Do it like this;
Lua: Whatever
and use Unity3D just as a tool to make exporters for your
own game entities and scenes design and format :P
Wintermute is the best for me but no recent updates.
Visionaire would be my second choice, i hate the fact that it is "too" commercial as an engine. AGS is more for Sierra games mentality. Do not use MOIA, seriously i will kick your butt if you do. Lost 8 months of my life with moia.
This is link of the game: http://game.hamdimortan.com/doublefine/
Sad to hear my main source of inspiration would not appreciate it :(
Yeah, i kept working on MOIA because i thought "yes double fine uses it, they know something better".
But in fact Oliver franzke from Double fine has written TONS and TONS of code on top of MOIA, it is not MOIA anymore. In fact MOIA was more used as a good, let's say, starting C++ project template. There is no support for MOIA, its own community struggles with making sense of the very sparse and incomplete code releases.
Btw i think Ron you are looking for a thing that doesn't exist by definition. You say "modern" 2d point and click engines are disappointing in terms of their features. This is oxymoron. "Claimed" 2d point and click engines were to serve the creation of games that have that old, nostalgic feeling in terms of functionality,etc. Do not expect more from that.
Moreover, you COULD create a 2D classic point and click game in an engine like Flash, Unity, even Unreal 4 and CryEngine (why not?) with tons of modern state-of-the-art features.
So the evaluation of "modern" 2d engines should not be limited to engines like AGS, Wintermute,etc.
While it's powerful, it does mean the tasks that should be easy, now take more code or hacked in constructs. One of the advantages of SCUMM was that it was built specifically for adventure games. Some very complex tasks (that you'd only need in adventure games) could be accomplished with one line of code. It also had a wonderful multi-tasking system that I have yet to see in any other language. Yes, you can get a similar result in Lua, but to my earlier point, it takes way more code.
That said, SCUMM had it's issues if you strayed outside of the adventure game. At Humongous Entertainment, we used SCUMM not only for the adventure games, but also for the Backyard Sports games, and it was a pain in the ass. We were taking a non-adventure game and twisting it into an adventure game. Lua and the like didn't really exist back then, but we would have been better off.
General purpose tools are great, but sometimes you want use a tool built just for the job it needs to do.
http://www.adventuregamestudio.co.uk/
Can you give an example of a complex (adventure only) task that you were able to do with SCUMM with just a line (or so) of code? I'm curious about that. Is it like letting characters walk around the scene or activating a built-in special effect?
Thanks for sharing. I consider this homework to make a good adventure game engine.
Sounds just like what you described at: http://www.pagetable.com/?p=614
Even the code is similar except it uses dot notation found in OOP. So instead of "actor sandy face-right" you have an Actor object named sandy with a Direction attribute that you can set. e.g. sandy.Direction = DI_RIGHT; It's the same thing written differently. DI_RIGHT is just an enumeration that describes which sprite to display.
There is virtually zero boilerplate. If you do a 9-verb interface, all your objects will have boilerplate by nature (i.e. programming unique responses to verbs), if you even want to call it that, but otherwise, nearly all of the scripting is describing what you see on the screen.
What's also encouraging is seeing Disney give Grim Fandango to have Tim Schafer rework it.
...Actually, I think Curse of Monkey Island is still "the best" 2D point and click, for a given value of best. Just about everything after that has used 3D in some way.
I am currently developing an open source engine an editor for classic adventure games:
Some features:
- Desktop(Win+Mac+Linus)/Android/IOS
- sprite/3d/skeletal(Spine) character integration in the 2d scene.
- The graphic editor lets you create the adventure with minimal custom script programming.
Some demo videos:
https://www.youtube.com/watch?v=I-wjMDTwk_w&list=UURFK2_qC6hEGcYA2Ngd6_dw
https://www.youtube.com/watch?v=jmPP7Vfy0Eg&list=UURFK2_qC6hEGcYA2Ngd6_dw
https://www.youtube.com/watch?v=H1Ce60dYslk&list=UURFK2_qC6hEGcYA2Ngd6_dw
And here it is a little game developed for testing with an early version:
https://play.google.com/store/apps/details?id=org.bladecoder.engine
The code:
https://github.com/bladecoder/bladecoder-adventure-engine
I hope you like it.
I would like to ask:
What's wrong with something like
guybrush.WalkTo(bananaTree);
guybrush.Wait();
guybrush.SayLine("Mmm, bananas...");
guybrush.FaceCamera();
guybrush.SayLine("Wish I had a banana-picker");
with all actions that internally fill an action queue like a stream or something like that?
I mean, can't you recreate your desired framework modules (e.g. your Entity Component system, your IoC container, integrate your favourite tween engine, etc. at a base layer, then you adventure games framework on top of it) using a general purpose language, and then program the game at higher level, using your own design?
In this way, when needed, you have the flexibility to add features that your framework didn't provide and directly use your modules at a lower layer.
I think these kind of exceptions would be hard to be managed by an application-specific language.
I am not looking for a 2D Point & Click engine. I already have a great engine that runs on iOS/Android/Mac/PC/Linux. It will do (just about) everything I'd need to make a adventure game or any other 2D game.
Using someone else's engine would drive me crazy, I'm way too much of a control freak and am constantly making engine changes to suit my needs. I also love to program and much of the fun of making a game comes from building low-level engine code and trying to optimize work flow. I enjoy that stuff.
The genesis of my original question was just to see what is out there and what others are doing and liking. Everyone's feedback has been super useful! Thanks much!
Libgdx: Java game development framework for multiplatform targets - Games: Ingress. Delver
HaxeFlixel: 2D game framework ported from Flixel (Flash) engine to be used with OpenFl/Haxe for multiplatform purposes - Games: Papers, Please. rymdkapsel
Now focussing on making it work in Unity. Ultimate goal is to control game at runtime via event manager, via CMS. Of course if this works i'll share all tools to whoever's interested.
Visionaire
Adventure Game Studio (AGS)
Wintermute
All of those are great engines. Visionaire is probably the best to use for a commercial game as it is now cross platform, well supported and is used by Daedalic Entertainment (a big adveture game studio in Germany). AGS is a good second, the code base is open source and community supported. Also lots of commercial indie games made with it. Wintermute is also good but still Windows only.
The plug-in for Unity called Aventure Creator (mentioned previously - http://www.iceboxstudios.co.uk/adventure-creator) also looks promising. Unity3D is used by tons of developers, is highly supported and cross platform.
There are a few people that try to understand the scripting used for these games and it is quite interesting, and I think with a few changes could be easyly updated to a more classical P&C game. Two itteration of this licences are more close are the "Gyakuten Kenji" aka "Miles Edgeworth Investigation"
Here are some fan made tools to generates working scripts:
http://www.court-records.net/casemakers.htm
- not hardcoding resolution. So all graphic positioning is represented in floating point..
- easy regeneration of graphics. Using a 3d editor for each scene, with external references to all reused people\geometry. eg So you can change the way a town looks, and all the scenes that contain that town in the foreground or background, get regenerated.
- loosely coupling graphics to code. This way in the future you can change the amount of images in an animation, and your scripts will play the animation with same timing, but more frames.
- Do timing of animations in the gamescript.
- Declarative gamescript. This makes your scripts focus on what you want the character to do. And leave the engine (now or the future) to figure out the how.
- XML gamescript. This makes future porting, or rearchitecting, just a case of writing an XSLT.
- If you have a good editor, XML also means you can give your editor a schema, and it will give you intellisense for all the commands\elements at your disposal.
- Using XML selectors for object-verb interactions so that your xml editor will detect things such as doubling up of an object-verb handler in a script.
- All script commands done as animations, so they have a temporal dimension if needed for sequentialization or parallization, and they all have a similar interface eg run\cancel\onComplete\onUpdate.
- have a very simple object model that the animations act on (eg scene is list of objects\ object is list of animations\animation is list of images)
- Unit test all animations, passing in the simple 'mock' object model, and test that the animation modifies the scene in the expected way, when its done - and sometimes when its running.
- Use C64 themes for all your editors, so you get that good simple feeling like in the old days :)
To answer this question properly, you'd have to conduct interview with Amanita Design on what strengths and issues they found in using Flash to make their games (Samorost 1-3, Botanicula, Machinarium). That would be interesting read as I don't think I've seen one that digs in how much help or hindrance using Flash really is.
Its easy to use, hard to master. You can get a room set up in the engine with a working inventory and character in less than an hour (from knowing nothing about it), but you can get into EXTREMELY complex puzzles and interactions very quickly.
Its very artist friendly as well, and works well in team projects.
AND its being actively developed - something that really just isn't happening with the other AG specific engines.
Im using it on my game ( www.stasisgame.com ) - but when you look at the different types of games that are being made you can see how insanely versatile it is.
I admit that I didnt read all the coments nor do I know if this website is even active anymore, but...
Is it possible to get a high res version of that image anywhere?
AGS and Wintermute are both very mature for 2D point and click engines, but lack the deep multiplatform support, especially for touch devices. Visionaire was nice, but I remember there was some platform drawbacks. The big problem to be solved, I find, is the sprite-system, especially sprite packing, for mobile devices, if you want to support high resolutions, while also being able to run on lower resolution devices. And because of Android fragmentation, if you want to support that platform you have to consider that resolution soup from the beginning, at design time.
I still think Lua is pretty good, but a hassle if you have to compile it for multiple platforms, and you have to be carful how it performs on mobile, if it's consistent between desktop and mobile. I find C# really good as a scripting and programming language, but multiplatform is not straight forward, though Unity seems to have solved this, but I don't think it's straight forward. C++ is obviously king for multiplatform.
Honestly, no-one has really solved it definitively for 2D point and click and multiplatform (especially for touch). And there's not a lucrative market for it so your best course of action, which I'm sure you've no-doubt surmised, is to roll your own solution.
DoubleFine mentioned they were going to release their engine, built on Moai, when it released, but I think they did so much work on it that it's too closely tied with their proprietary tools to be any good to anyone.
This is if Unity doesn't appeal to you, which was used for Kentucky Route Zero for example. There's a plugin/toolkit for Unity called Adventure Creator which you could check out as a timesaver: http://www.adventurecreator.org/ I don't know how widespread it is nor have I used it yet.
it's a bit off topic, but, talking about scripting languages,
nowadays you could get much fun implementing your own
interpreted/compiled optimized language with LLVM (http://gnuu.org/2009/09/18/writing-your-own-toy-compiler/ http://llvm.org/docs/tutorial/LangImpl1.html).
The combination of these is totally epic
Andrew Plotkin wrote an interesting article / presentation about rules based programming and the Inform 7 toolkit for writing text adventures:
http://eblong.com/zarf/essays/rule-based-if/
I realise that theres not a 1:1 mapping between the problems in text and point & click adventures, but it does share some commonality – more than a generic 'game engine' might – and the survey of different programming paradigms is interesting.
good luck with the kickstarter
I've created our own graphics adventure engine at my job, running on Flash and using XML files generated by a tool created by our Game Designer. It pretty much solves all needs when creating a Graphic Adventure and supports most classic features with a nice interface for developing the adventure itself. It could even run on other platforms if the XMLs are interpreted correctly.
Here are some games we created with it, the engine itself got upgraded from one game to the other as seen in the improved game quality:
http://www.cartoonnetwork.com/games/ben10/the-mystery-of-the-mayan-sword/index.html
http://www.cartoonnetwork.com/games/ben10/the-alien-device/index.html
http://www.youtube.com/watch?v=Zx_DbSW_zN4
http://www.youtube.com/watch?v=lo3DGx52PyY
http://thecell.tv/games/season-2
http://thecell.tv/games/season-1
Regards,
Rodrigo Vieytes
PS: love your game, don't ever leave this world please.
I only started to make a point-and-click game in Flash, and more recently I started looking at Unity. But I keep having a deep desire to build an engine from scratch. The stumbling block I come across, having only made scientific programs really, is where to start with graphics.
Anyway, I'll end my ramble there. Any help you could offer would be appreciated. Can't wait for Thimbleweed Park!
Honestly, creating the mechanics wouldn't be too difficult. I might be doing it myself here shortly.
On another note, I love this C64 theme for your blog. I think I might rip it off for mine... :)
First of all let me thank you for all these wonderful childhood times with your great creations; you are an inspiration for us all! (Yes, till today :P )
Perhaps you'd like to check http://crusader12.com/C12Jaguar/
A SCUMM-like engine for online adventures on HTML5 , it is simply great.
Cheers from Greece!
Chris