[WIP] Tyler - Tilebased Map Editor

Started by
6 comments, last by l0calh05t 10 years, 8 months ago

Hey everybody,

I'd like to share my work on my tilebased map editor "Tyler" with you and would like to gather some feedback and ideas during the development progress.

I want to build an alternative to Tiled - the current more or less standard editor for tilebased maps - in HTML5 and Javascript.

My motivation behind the project is, that I am currently working on a little browsergame for fun that is also using tilebased maps.

I found that Tiled is lacking a couple of features I would want to see inside a map editor - some of them are game specific.

My problem is: its a C++ project, based on Qt. While I am a more or less talented web-developer, I have no clue of building stuff with C++ and I don't want to learn it just to try and extend Tiled somehow smile.png

My plans for Tyler so far are:

  • Support of the Tiled Map format (JSON)
  • Creation and management of palettes (so you can configure things like water-animations right inside the editor)
  • Automatic prettifying of maps with autotiles
  • Minimap generation
  • Object management with free, JSON-style custom object properties
  • Support of own modules/plugins based on JavasScript

I am especially looking forward to the users developing their own modules that can be integrated into Tyler with a breeze. I have build a easy to use API that can be used to:

  • Create own Tools to draw on the map
  • Append containers to the sidebar of the application
  • Append buttons the toolbar of the application
  • Interact with other modules of Tyler by exporting a public module context
  • Through the public module context:
    • Embed new data into the Info-Sidebar-Box
    • Add plugins to the "new map"-process chain.
    • Add plugins to the "save/load map"-process chain, so you can create your own output file formats.

Tilers own tools and nearly all functionality is based on that same module system to make sure it gives 3rd party devs the post freedom in creating their own stuff.

Since the whole editor is based upon HTML5 and JavaScript, it should be easy for most people to extend its features to their like.

I also plan a public repository, where the most useful modules can be hosted and activated by every Tyler user.

But enough of the talking, here are a few impressions of the editor - I hope you like it smile.png

Screenshot of the UI state from about a week ago:

ed88+.png

Screenshot of the layers sidebar panel:

Swyr+.png

Screenshot of the "Create a new map" dialog:

rVAT+.png

Screenshot of the current module manager, displaying Tylers core modules:

f9AI+.png

Most recent screenshot of the tooltips I implemented today:

GBLt+.png

The editor supports so-called "infinite maps". This means, you don't have to specify the dimensions of your map, when you just want to start sketching around. The map is really infinite - you can simply move around and draw wherever you like.

Upon map creation I added the possibility to chose from different options, regarding the used tileset:

  • Create Tileset from image
    You upload an image and it is turned into a tileset (the usual approach).
  • Generate Tileset
    You pick which types of tiles you (will) need and in which size you want them and
    Tyler generates a Tileset of simple colors for you. Great when you want to sketch
    out some maps, but don't already have a tileset created.

  • Preset Tilesets
    You can choose a tileset from a list of bundled tilesets and start working with it.

Isometric maps are currently not supported, but I will certainly add them at a later point in development.

Phew, this post grew quite lengthy... I hope to fetch good feedback and a couple of ideas for my editor smile.png

greetings,

Chris

Advertisement

Looks pretty neat. In some ways I'm actually pretty keen on the idea of building certain kinds of content tools as web applications. It sounds kinda crazy to say that, but it probably sounded crazy, too, 5-10 years ago when studios started writing tools in C#. HTML5 is great for UI also.

When you think about it, the model actually fits nicely enough -- many of the processes you want to do with content at scale are just content processors sitting on a server anyhow. And many games today, during development, virtualize the file-system and are actually pulling down the latest content from--guess where--a server. Some asset types lend themselves to collaboration, or could, and again you can see that a web application isn't a terrible place to start. And since its all centrally managed and administered, everyone keeps their tools up-to-date. Finally, the general trend with web applications is to roll out small improvements and features on a rolling basis, so that's a win for flexibility.

We're a ways off from when we'll be doing high-end 3D modeling, or writing our code in a web application -- but already there are products out there beginning to do those kinds of things in web applications. Its not even that radical, really, when all the heavy lifting is on the server and the web application aspect is more-or-less a dumb-terminal.

Good luck. I'll check it out in more detail later.

throw table_exception("(? ???)? ? ???");

I definitely plan to release Tyler as a Desktop Application as well.

While it has its benefits to offer the Editor as SAAS - no installation, always most recent version - it comes with a heavy downside: no local filesystem access for saving your data.

I will propably include the usage of a service like dropbox in the online version of tyler, but in my opinion its absolutely necessary to have access to your filesystem in order to work properly with such a tool.

Thanks for the good luck smile.png

I will try and keep this thread updated when I make further progress.


I definitely plan to release Tyler as a Desktop Application as well.
While it has its benefits to offer the Editor as SAAS - no installation, always most recent version - it comes with a heavy downside: no local filesystem access for saving your data.

It certainly is a concern, especially if you're running it SAAS-style for random people across the internet. Then, what you really need is to host workspaces for people so that they can upload content privately, save working versions etc. HTML5 has limited (sand-boxed) file system support, but you can kind of get around that if File->Save in your app really translates to: Send data to server->server compiles file->server hands back URL to said file, then you can save anywhere you want on your local file system. Loading from local filesystem works the same way in reverse: user uploads file through interface->server hands back URL/Data to a session that represents the file.

This is all doable, it just necessitates some heavier lifting on the server, which means its going to cost you more out-of-pocket to run the service, so you'd need to be able to charge a subscription fee or otherwise recoup those costs, unless you're just generous and independently wealthy.

On an in-house, corporate network its not so much of a problem. There you'd probably writing to a shared network location, or version control system, on the network, and you have permissions to do so.


I will propably include the usage of a service like dropbox in the online version of tyler, but in my opinion its absolutely necessary to have access to your filesystem in order to work properly with such a tool.

Dropbox would be a nice feature, and it might mitigate some of the additional server burden (disk space, certainly, but that's dirt cheap -- processing time, RAM, and bandwidth are the real costs for SAAS apps), but you'd still probably need some amount of server-side processing. I don't think its critical to have unfettered filesystem access for such a tool, actually -- what matters is that you can get content into and out-of the tool, and some way of maintaining work-in-progress without having to re-upload each bit of content each time. You may not have the same workflows you would with a normal, desktop application, but I think there are reasonable workflows that could be achieved without, particularly as an in-house installation.

I still have yet to try Tyler out, but I mean to very soon. I'll be very interested in your updates.

throw table_exception("(? ???)? ? ???");

Looks awesome. Is there a site where I can keep tabs on this?

Also...

If this is your first map...

Tyler-Durden-psd64910.png

You have to tile.

void hurrrrrrrr() {__asm sub [ebp+4],5;}

There are ten kinds of people in this world: those who understand binary and those who don't.

How about something like this for saving ? http://updates.html5rocks.com/2011/08/Saving-generated-files-on-the-client-side

Man, feedback is rolling in :)

@Ravyne:

I have gathered a lot of experience in developing SAAS in the recent years. My company creates such apps on a daily base. I know what kind of features I would have to implement on the server; but the lack of proper save-to-hdd support in browsers is a real downside of that thing.

The problem is, that you would want to work with local files, since you need to work with that files inside your game. Also uploading all data to the server first, then downloading again is very tiresome for the user. I really want the application to feel like a native one.

Even the FileSaver.js library @l0calh05t suggested (thanks for that!) just triggers a download. Goes straight to my downloads folder in chrome without asking.

So offering Tyler as SAAS will definitely be done - maybe I will even throw in a hosting solution for the generated map data, but imho a offline application with native access to the filesystem is a must :)

But hey - maybe it turns out that folks are happy with the SAAS solution and will abandon native apps at all :D

There is currently no website available for Tyler, I'll try and set one up when I have a first version ready (and docs for the module API).

Until then, you may just follow this thread - I'll post any updates in here :)

greetings,

Chris


The problem is, that you would want to work with local files, since you need to work with that files inside your game. Also uploading all data to the server first, then downloading again is very tiresome for the user. I really want the application to feel like a native one.

Even the FileSaver.js library @l0calh05t suggested (thanks for that!) just triggers a download. Goes straight to my downloads folder in chrome without asking.

The FileSaver at least avoids uploading to the server first. That it goes straight to your downloads without asking depends on your configuration of chrome.

Found this on the same site too btw http://www.html5rocks.com/en/tutorials/file/dndfiles/

This topic is closed to new replies.

Advertisement