Hi there,
Has anyone else been inspired enough by Thimbleweed Park and the LucasArts canon to create and wire-up your own room for fun?
If so, I’m curious as to what developer tools you would use.
I’ve thought about a couple…
Flash/AS3 - Pros: good tool for managing artwork and animation, Cons: not supported by iOS.
Javascript - straight coding in JS seems doable, but very time-consuming to re-invent the wheel for every function. I’m betting there’s already code out there for things like inventory tracking, object databases, etc.
If you just want to create a SCUMM-like point’n’click adventure game it would be much easier using existing engines made for this particular purpose, e.g.:
They allow you to create adventure games without much coding involved beside scripting the actual game. Most of them offer multiplatform support in some ways.
I’d really like to make an adventure game but I know nothing about coding and I’m no artist either, so I think it’s out of the question. I’d be happy to brainstorm and contribute ideas though to anyone who actually can realistically go about putting a game together.
If you are more interested about the inner workings of such engines you can take a look at those blog posts: https://www.groebelsloot.com/
They are using Haxe (a cross platform language/toolkit) to create such engine from scratch.
He talks for instance about path finding and dialog trees which both are quite complex topics.
You can then decide to go this way (which is a lot of work but allows full control) or using an existing full-fledged engine (with possible limitations which cannot be addressed by yourself).
It was used for the adventure “Dog Mendonça and Pizzaboy” and is cross platform, but it’s a (free) multi-purpose game engine. So with AGS or Visionaire Studio you will get faster results.
I’m just creating a SCUMM template with Visionare Studio, I’m learning the software, it’s not script based like AGS (which I’ve used to make my first SCUMM little game) and you can literally create your dreamed adventure games in few time (of course you need artwork and some basic programming intuition). For example to create a game like Broken Sword is basically really easy with Visionare, instead complex with AGS if you have no programming experience.
Personally I find Visionare really good, I’ve experienced some crashes but I was using an outdated version and on Mac is more stable. The big plus is that you can export for html5, Osx, iOs, Android and PS4 soon!
I did my own engine in JavaScript using pixi.js. it supported rooms, objects, pathfinding and zplanes. You can probably do nothing serious with it, and it doesn’t even have polish enough to be public in github, but I’m happy to share the code if anyone’s interested.
This guy created something simlilar to SCUMM with some limitation for PICO-8
Nice project.
From Creator:
WHAT IS SCUMM-8?
SCUMM-8 is a PICO-8 “demake” of the SCUMM engine that powered most of the classic LucasArts adventure games, such as Monkey Island and Maniac Mansion. However, it is only (heavily) “inspired” by the SCUMM engine, not a true replica - for that you’ll want good ol’ SCUMM-VM.
My plan/hope is to make it possible for anyone to make their own point & click adventure games in PICO-8!
CURRENT FEATURES
• Multiple Rooms (up to 32, technically)
• Pathfinding for walking
• Dialogs between Actors
• Cut-scenes
• Camera system (pan-to, follow, static)
• Room transitions (“iris”, cut)
• Customisable Verbs
• Z-plane ordering of objects/actors
• Global-level (background) & Room-level scripts
• Game start-up script
• Object dependencies
• Replace Color (to allow re-use of room/object gfx)
• Adjustable Room Brightness Levels
• Screen “shake” effect
• Proximity (between Actors/Objects)
Sure, I would love to see your code if you don’t mind sharing.
I tried Adventure Game Studio first, and it seems very easy to follow, but it crashes my laptop. Though to be fair, it’s a pretty old laptop, reserved for non-work related things like checking this forum when I’m supposed to be doing real work.
I’m looking at Visionaire Studio next…
Between the game itself and slamming through all the podcasts after, I’ve definitely got the itch. I do business software development for a living, but the idea of doing something both for entertainment and graphical is absolutely foreign to me. It’s been incredibly cathartic.
I wanted to start (sort of) from the ground up with building an engine. I come from a Java background, so I landed on using libgdx as a starting point. Currently I’m focused on animation and Sprite movement. Next phase is commands and rooms… I want to wire up rooms by creating JSON files that the engine parses rather than hard code them in.
There’s really not much to this yet as I’ve only given it a few hours a night, but I’m more than happy to share for ideas and feedback. At this point it’s just me learning the nuances of libgdx.
Being a developer, I made my own engine in Java on Android using the AndEngine library and I’m now working on moving to C++ and making it cross-platform using cocos2d-x for the input/output handling.
I tried AGS, but even if it’s quite powerful, I still don’t like it. And it’s not cross-platform. There are some ongoing ports for various systems, but if you want to publish directly for iOS, Android and PC I wouldn’t recommend it.
Visionaire… I couldn’t get it to work. Too much stuff and it crashed a lot of times, so I’ll try again when I get a new PC.
But again, my day job is software developer, so I prefer to write my own code instead of adapting to some tool. It takes a lot of time in the beginning, but once you have everything set, on the long run it’s way faster. Especially if you want to tweak parts of the engine to allow a one-time feature.
With my week and a half of experience with game development and design, I absolutely agree. It seems almost impossible to find a generic tool that does exactly what you want it to do in the exact way you want to do it.
If you do not have a software development background and starting from the ground up scares the pants off you, then things like AGS and Visionare could be great.
In terms of the programming language, I’m using Java because at this point in my life I am more fluent in Java than I am in English. Unless you are targeting a specific platform (or have specific cross-platform requirements), I don’t think there is a wrong answer.
I do have a question for the well-versed in game development (wouldn’t it be nice if a wild Ron Gilbert/David Fox appeared!).
When they talk on the podcast about “wiring rooms” together, are they talking about creating metadata about room layouts (using something like XML, JSON, YAML, whatever) that the engine will read/interpret/render? Or am I way off? I feel like this approach would be better than “hard-coding” in your programming language of choice, especially because it gives the ability to create tooling for less-technical developers to design and layout rooms.
Same type of question with “scripting” events… do they actually write these scripts in Squirrel? Or do they write similar data files that their engine interprets?
what’s wrong about javascript?
I mean, besides it being kinda unintuitive, your game will be portable, you have sound and graphic functions available, you could even do 3D if you wanted.
Yeah, it almost always makes sense to do it like this.
In a game you have several kinds of data(assets) that you need to connect in the right way.
The kind of data you need for a room in an adventure game are (for example) where the characters can walk, and where not (you can imagine this like using a text marker for painting over the parts of the room that should be walkable), where objects/items are placed in the room, where portals/doors to other rooms are, and where they lead to.
If you would hard-code all these details within the game-engine code, it’ll get a huge pain in the butt to do iterative development on the game (which you need to do for any larger software project).
You should check out the Postmortem on Maniac Mansion by Ron Gilbert (popped up on some other thread here too, I believe).
I really shouldn’t be so negative about it; over the years I’ve seen some absolutely terrible code written with Javascript in the web development world. You see that in every language, but I think there is a lot of ambiguity with the language that leads people to abuse it more than others. Plus its been around so long that it can’t really undergo a major overhaul without breaking 20 year old web pages.
The “new sexy” is languages that you write that are trans-piled to Javascript. I haven’t figured out why yet; I’ve been out of that world for a while.
In terms of starter languages and game design I’m sure it is fine. The biggest issue I have with it for learning development is how loosely typed it can be, but that’s a polarizing opinion that I see both sides of.
Yeah, it’s probably a bit too forgiving. On the other hand, this kinda ensures that web developers will be in business for quite a time. There’ll be always something in need for a fix /s
Also for a one/off project (like most games) you don’t have to write the bestest code. People won’t complain as long as it runs.
Thanks for sharing. I’m curious about how you map your Sprite sheet. Do you store data on the height/width, and number of cells for each sprite, or is that something hard-coded in your engine?
Not speaking directly for the gods of TWP here, but from listening to the podcasts I got the impression there is a scripting “language” they developed specifically for use with their engine. It would have functions to make characters walk, set the coordinates of objects, walk-boxes, that sort of thing.
For example, Ron’s blog post Tracking Talkies includes a command: sayLine(PLAYER_ADR(29971,"There are no drawers to close."))
I imagine sayLine is a function, and there are several others that allow you to manipulate a scene. They mentioned a couple times when David was wiring up a room, and needed functionality that the scripting language didn’t support, so Ron had to go back and update the engine to allow it.
At my level of programming skills, I would be comfortable using a scripting language that was already developed, but building an engine from scratch… probably not.
I also wouldn’t bug Ron about releasing the engine code at this point. He’s mentioned that if and when they decide to do that, it would be after everything else is done.