Interviews / Tools

OGMO Editor 3 CE released, interview with the devs

The 2D level editor gets a massive facelift and cross-platform support

The third iteration of the popular, open-source 2D level editor was released last week on November 15th. The Community Edition of OGMO Editor 3 comes with a host of new features, including a three-column layout, quick access to your project's file tree, and support for both Mac and Linux.

OGMO Editor, which was originally created by Matt Thorson, had its third version begin as an in-house tool used for the development of Celeste. Earlier this year, it moved into the hands of a new team of developers: Caleb Cornett, Austin East, and Will Blanton (who can be heard on broadcast #63 of our podcast).

I reached out to the trio to discover how OGMO Editor 3 was revitalized and rewritten in Haxe.

indie(Function);

Let's start at the beginning. How did the three of you end up becoming contributors on OGMO Editor?

Caleb Cornett

I used OGMO Editor 2 back in the day for a few games and really enjoyed it, but then I took a several year break from making games

By the time I started to look for a level editor again, OE2 had long since fallen out of support, and was still locked to Windows only

The only game in town was Tiled...

I personally really didn't like Tiled. Its workflow always felt super confusing to me. I just wanted OGMO again, haha

indie(Function);

I think we all did!

Caleb

So I started working on a fork of OGMO Editor 2, called "OGMO Editor Community Edition". I focused mostly on quality of life issues like tileset zooming, editor refreshing, and fixing weird crashes

I shared the editor with several folks in the Haxe community, including Will and Austin

One problem I was ultimately unable to solve, though, was that the whole editor was based on WinForms, which, as the name implies, is exclusive to Windows. I really wanted to make the editor available to Mac and Linux users too

indie(Function);

What would doing cross-platform entail?

Caleb

It would basically involve a complete and total rewrite, which I wasn't crazy enough to attempt. But I knew from Twitter that Matt/Noel had developed OE3 as an Electron app, which (in theory) meant that it could work cross-platform

So I sent them an email introducing myself, shared a link to my OE2 fork, and asked if they would be interested in me helping with open-sourcing OGMO Editor 3. I was really surprised that they responded and said yes!

Will Blanton

Yeah, OGMO 2 had been my go-to editor for years, but it had a handful of issues, so Caleb working on [the community edition of OGMO Editor 2] was already really awesome!

Caleb

Matt and Noel wrote OE3 with TypeScript, but they actually mentioned they wish it was written with something else, ideally C#

I actually tried to port it to C# myself and got nowhere (C# -> JS transpilation is a trip)

So eventually someone mentioned rewriting it in Haxe, since it's a little more C#-like than TS. Since Haxe is intended for transpiling, we could keep all the benefits of Electron while using a programming language that we actually enjoyed using

The timeline gets a little fuzzy in my memory here, but I think I sent the original OGMO 3 app to Will and Austin for them to experiment with, and then soon afterward shared the source with them

Austin East

Yep! It was all very good timing, too. When Caleb contacted us, we were actually just starting on our own Electron-based map editor (also written in Haxe <3), so it was a no-brainer to switch our efforts over to getting the latest version of OGMO up and running.

Will

We were all on the unofficial Haxe Discord and there were probably about a dozen of us working on different tile map editors

indie(Function);

What was the state of the editor when you inherited the project?

Caleb

The port began early this year, probably around spring is when we started the Haxe port in earnest

OGMO was functional when we got it, but it had some, uh, quirks

Like it would perform unusably slow in certain circumstances, which Austin worked hard to mitigate

Austin

OGMO's file tree (where you manage your levels) caused us quite a bit of grief!

indie(Function);

Is that where the project directory depth field came into play?

Austin

Yes, that was one of the measures I took to help performance. When we first starting working on OGMO, the file tree would rescan the whole project directory basically every time the user would click, and you can guess how that panned out when project directories got to be pretty big.

Since then, I implemented a file watching-based system, which really helped us get to a place where it felt stable enough to release.

We're still looking for ways to improve though, if any node experts are out there looking to contribute!

Caleb

In addition to the fixes and language port, Will and Austin added a bunch of awesome new features too, including tile randomization (and autotiling, currently in the works!)

Austin

We've basically taken this opportunity to fix up an already great editor, and then add all of our own dream features to it

Caleb

The port began early this year, probably around spring is when we started the Haxe port in earnest

Will

I'm checking out some of the commit history now, looks like the initial commit was April 11th!

It looks like the Haxe port was building on April 18th - I remember that first week we worked a ton because we were so excited to have OGMO 3 haha

Austin

And we also had a couple of months where we were in a private beta, so not much work was done aside from collect feedback for future features

You could probably pinpoint when that was too, based on the drop-off on the number of commits, haha

indie(Function);

OGMO Editor 3 was used by Matt and Noel to assist in Celeste's development. Was the editor fairly specialized for Celeste? Was there a lot that needed to be removed before it was suitable for a public release?

Will

Really OGMO was already very generalized. There were no features or views that felt like "This was made just for Celeste"

I think OGMO 3 was probably made because they needed something like it for Celeste, but it wasn't specifically made FOR Celeste - that'd be my guess

Caleb

I almost wish they had made it slightly more Celeste-specific -- if they had included their room-stitching tool, that'd have been awesome for Metroidvania devs, haha

Austin

But we are working on something like that!

indie(Function);

For the last portion, I'd like to shift gears to talk about the community around OGMO, specifically in regards to extending and contributing

What would you say for other developers who wish to contribute to the project, either through feature requests or directly working on implementing features/bugfixing?

Will

We've already had a few people jump into submitting issues, and I think one pull think so far. Managing open-source software is something I don't have a ton of experience with, but it's exciting to have the community start contributing!

The project is completely open-source, so folks are welcome to experiment with it! The overall goal of OGMO Editor to me is supporting a project oriented workflow well so maybe not all features and wishlists will make it into the official repo, but like I said - I'm psyched to see how the community contributes!

I'm not even sure if one of my pet projects with OGMO will make it into the official build haha

Austin

Yeah, I would say, please come contribute! There's still a lot of work to be done!

indie(Function);

When development settles down, do the three of you have any projects you have on the horizon you're planning on starting or getting back to?

Will

Too many to think about, haha, but now I get to use OGMO 3 so my life is significantly better haha

Caleb

It's almost totally unrelated to OGMO, but I'm working on a Metal graphics backend for the FNA framework, which powers the macOS ports of games like Celeste, TowerFall, FEZ, Owlboy, and many others! That way those games can survive Apple's impending OpenGL-pocalypse unscathed and get a small performance boost to boot!

(I guess Celeste/TF were made with OGMO so they're related that way, haha)

Austin

I'm going right back into my other open-source project - a 2D Physics library for Haxe

In addition to a couple of (secret) projects that are already using OGMO 3!

indie(Function);

Thank you so much for taking the time to answer these questions and share some of the history behind the project!

And thank you SO MUCH for finally making OE3 a real thing I can download on every machine I own.

Caleb

Haha, you're welcome! It's nice to talk about it!

You can start your journey developing with the latest and greatest OGMO Editor via the official site, which has further links to documentation and the source code, should you feel so inclined to extend it to your own needs.