Sign in to follow this  

In Game Editor vs Separate Editor

This topic is 2838 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello guys I'm developing a kind of jump and run game and there should be an editor for creating levels. I'm questioning myself whether an "in game" editor is better than a separate application or vice versa. By "in game" I mean an editor that you can access from the game's main menu. It has the custom GUI of the game. Example of in game editor: Age of Empires. By "separate" I mean an editor that is in a separate executable. The editor would probably use the standard GUI from the OS. Example of separate editor: Warcraft III. Currently I have a simple editor in the game itself. But it's very simple for now. My subsystems should be reusable for a separate editor if I want to create one. I really can't find a key argument for using one type of editor instead of the other. My requirements on the editor is that it has multiple "windows" for selecting entities from a list, selecting textures, editing objects, creating triggers and objectives. The only pros and cons I can find for each editor type are: In game editor:
  • (+) Easy access in the game menu
  • (+) One single "package" instead of multiple programs
  • (-) Needs programming of custom GUI
  • (-) Multiple windows can be confusing
Separate editor:
  • (+) Clean look (maybe my personal taste)
  • (+) Can easily be used parallel to other programs (e.g. Internet browser) since not fullscreen
  • (-) Need to load up the whole game for testing a level
But I think that none of this points is very important. Is the whole think only personal taste? Which kind of editor would you prefer in your favorite game? Can you point out some other arguments in favor and against each sort of editor? Still a few points that are probably of importance: 1. My game is cross platform (GNU/Linux and Windows so far). So using the Win API directly is not a solution. 2. I have no (good) GUI implemented yet in the game. I'll use something like CEGUI or guichan for the game GUI. Maybe this is good/bad for an editor. 3. I'm thinking about using some scripting languages like Python for the editor (for writing the editor itself, but maybe also for using in levels), but that would probably not work because the game framework is written in C++ Thanks for the help! aeroz

Share this post


Link to post
Share on other sites
My editor is purely internal so I dont limit myself to APIs and platforms based on my game being cross platform. The advantage of this is that i get to use WPF and C# which imo is the current leader in GUI contstruction. I picked up expression blend 3 over the weekend and although the learning curve is really high, it is pretty awesome what you can do.

So as you can see i went the "separate" way. It keeps the main program lightweight and only includes in your main.exe WHAT YOU NEED. Also, it allows you to make things modular, building a level from pieces as opposed to having all your pieces loaded in your engine and constructing a level from everything.

And like i said above... i dont know about you but my game engine is nowhere NEAR as robust as WPF and C#, and it shouldnt be, its a game engine.

Share this post


Link to post
Share on other sites
I personally prefer separate editors. I've never tried to create one myself, but I have used many - I'm an avid mapmaker for many games.

I think the most important thing to have in an editor that is kept separate from the main game is a quick testing environment - a scaled down version of the actual game that can be quickly executed to take a look at a map in progress. If the game itself does not take long to boot up, then it won't need to be scaled down. The key is speedily switching between the two, as when I'm putting the final touches on a map or scenario I might need to rapidly try many variations of the same map.

Share this post


Link to post
Share on other sites
I'm a fan of in-game editors, but that might be because I somewhat enjoy making a custom GUI.

If you use a separate editor, one trick that you can use to improve the experience is live asset reloading. In the game, you write some code that constantly checks the modified-time of the level file. (this code gets disabled in the final production version) If the modified-time ever changes, you reload the whole level. Then when editing, you run the game and the editor simultaneously. Every time you save something in your editor, the game will pick it up and start showing you the new version instantly. So you get the best of both worlds.

That's easier said than done; it can take some work to make the game engine support quick level reloading. But if you can support it, it's a pretty fun way to work.

Share this post


Link to post
Share on other sites
IMO in-game is only worth it if you want it to be usable by your end-users, and even then it still probably only makes sense if you're targeting consoles. Making a good enough GUI for an editor is a tremendous task, and one that's easily underestimated. The moment you say "hey I want to browse for a file" and realize that you can't use GetOpenFileName, it dawns on you.

Also with regards to "Need to load up the whole game for testing a level"...that's certainly not true. If you have your editor use your engine + renderer for drawing (which you should), it's not that hard to take it all way and allow in-editor playtest. This really gives you the best of both worlds.

[Edited by - MJP on March 3, 2010 4:04:08 PM]

Share this post


Link to post
Share on other sites
I'm actually playing around with a game with a map editor now, I'm doing it in C#/XNA and the way I have it set up is in 3 projects:

Game (XNA Project)
SharedLogic (XNA Library)
MapEditor (XNA Project / C# Windows Forms Application)

MapEditor and Game share classes such as the map and camera from SharedLogic, making them seperate executables but having the exact same display methods of the game world. MapEditor is actually an XNA project due to the hackiness I went through to get an XNA window inside a windows form panel. It really works quite well and removes the need to create a custom GUI system.

Thought this might give you some ideas for your own. :)

Share this post


Link to post
Share on other sites
I started off doing a separate editor in wxWidgets, but I ended up scrapping it and going for an in-game one. I was using CEGUI for my in-game GUI anyway (it's an RTS so it's got fairly complex GUI requirements already), and I didn't think it was worth it to go to the effort of learning CEGUI and wxWidgets in-depth.

At the end of the day, though, I'm not really sure if it was the best idea... I've thought about going back to wxWidgets many times. CEGUI is nice and powerful and all, but MJP certainly has a point about the "GetOpenFileName" stuff... I had to write a file browser from scratch! (and it still sucks compared to the built-in one with it's nice keyboard shortcuts and so on). Obviously it's more than just that as well, but a nice GUI designer wouldn't go astray (the on that CEGUI has is pretty horrible).

Share this post


Link to post
Share on other sites
Hi, thanks for the replies! A few comments on your replies:

Quote:
by AverageJoeSSU
My editor is purely internal so I dont limit myself to APIs and platforms based on my game being cross platform. The advantage of this is that i get to use WPF and C# which imo is the current leader in GUI contstruction. I picked up expression blend 3 over the weekend and although the learning curve is really high, it is pretty awesome what you can do.
I have never used WPF but it seems to be very Windows specific (you say your game is cross platform??).
Quote:
by AverageJoeSSU
So as you can see i went the "separate" way.
First you say internal and then you say separate, what is it exactly? Sorry, maybe it is just my bad English that makes me not understand.

Quote:
by Telcontar
I personally prefer separate editors
Quote:
by pinacolada
I'm a fan of in-game editors
Sounds like it's really personal choice...

Quote:
by pinacolada
(...) but that might be because I somewhat enjoy making a custom GUI.
So you actually prefer in-game editors just because of the development process or also do you like it as end user?

@Codeka: your two approaches of making the editor are basically the same as mine.

This options are currently on my list:
- Separate editor application made with wxWidgets
- In-game editor with CEGUI as GUI
- In-game editor with guichan as GUI
Which one of those can you recommend me? (Note: I have never used these GUI libraries before, just a bit o wxPython)

Thanks again!

Share this post


Link to post
Share on other sites
This is a tough call, this question. I always seem to decide at the start of a project to go in-game in order to streamline asset creation, then end up going external in order to take weight off the actual game.

The nice thing about external is that you can bodge any old rubbish together as an editor for just you to use until such time as the game is playable, then you can start to put a more usable editor together.

User generated content should, to my mind, be a key consideration of most indie projects at the moment. But not until the project is mature enough to be released in some demo form and has an existing base of interested users.

However, I recently decided I was at the point where I could invest some time in a better editor for my game. That was about two months ago and I've done precisely NO work on my actual game since.

Maybe we should be writing the game in-editor? [smile]

Share this post


Link to post
Share on other sites
Well, as I said, I ended up going the in-game editor with CEGUI route, but I've kind of regretted it. CEGUI is great and it's very powerful, but there's stuff that a native GUI simply does much better.

For example, you can't do keyboard shortcuts in CEGUI (well, you can do it "manually", but there's nothing in CEGUI itself that'll do it). Also, tabbing: you basically need to implement tabbing yourself (I wrote a wrapper class that I "attach" to controls on my windows that subscribed to the "KeyUp" event, looking for the tab key and setting focus to the next control in the list).

These may not sound like much, but when you're writing an editor, it's very important that your designers can be as efficient as possible. If you can save 10 seconds for every five minutes they're using your editor, that's 15 minutes a day!

So yeah, I'd probably recommend the wxWidgets route now.

Share this post


Link to post
Share on other sites
Quote:
Original post by aeroz
Hi, thanks for the replies! A few comments on your replies:

Quote:
by AverageJoeSSU
My editor is purely internal so I dont limit myself to APIs and platforms based on my game being cross platform. The advantage of this is that i get to use WPF and C# which imo is the current leader in GUI contstruction. I picked up expression blend 3 over the weekend and although the learning curve is really high, it is pretty awesome what you can do.
I have never used WPF but it seems to be very Windows specific (you say your game is cross platform??).
Quote:
by AverageJoeSSU
So as you can see i went the "separate" way.
First you say internal and then you say separate, what is it exactly? Sorry, maybe it is just my bad English that makes me not understand.


This options are currently on my list:
- Separate editor application made with wxWidgets
- In-game editor with CEGUI as GUI
- In-game editor with guichan as GUI


Thanks again!


My editor is a seperate application that is windows specific because i use WPF and C#. My Engine, however, is OpenGL, so it is theoretically cross platform (even though i havent bothered to write windowing stuff for linux/mac).

The advantage of doing this is that i have a very robust tool for making my games, and dont need to have a robust gui (something i can create using the editor) to create games.

Anyways, i dont know any of the tools you use, but i know a couple people that use wxWidgets and havent complained about it.





Share this post


Link to post
Share on other sites
There are a few games out there which are multiplatform but whose editors are windows-only. But anyway, specifically for a multiplatform game, an important point that you seem to be missing is that if you make a separate editor, you will end up writing, testing, supporting, and maintaining two separate applications instead of just one. On the other hand, the ability to use a "real" GUI library will make your skill set look more attractive to potential employers, in case you care about that. I think WPF, Winforms or Win32 GUI programming experience is more valuable than experience with Crazy Eddie's GUI library. I'm not dissing CEGUI, I'm talking professional appeal only here, which is ironic because I'm an unemployed bum :(

But if you decide to write a separate, cross-platform editor, then your choices for the GUI library will practically be limited to wxWidgets, AFAIK, which is if IIRC too bloated for most applications. If anyone has worked with it I'd be interested to hear how their experience with it was, especially for game-dev-related stuff.

Quote:
Maybe we should be writing the game in-editor?

I find that to be much more natural and intuitive than an in-game editor actually.

Share this post


Link to post
Share on other sites
Quote:
Original post by Amr0
There are a few games out there which are multiplatform but whose editors are windows-only. But anyway, specifically for a multiplatform game, an important point that you seem to be missing is that if you make a separate editor, you will end up writing, testing, supporting, and maintaining two separate applications instead of just one. On the other hand, the ability to use a "real" GUI library will make your skill set look more attractive to potential employers, in case you care about that. I think WPF, Winforms or Win32 GUI programming experience is more valuable than experience with Crazy Eddie's GUI library. I'm not dissing CEGUI, I'm talking professional appeal only here, which is ironic because I'm an unemployed bum :(

But if you decide to write a separate, cross-platform editor, then your choices for the GUI library will practically be limited to wxWidgets, AFAIK, which is if IIRC too bloated for most applications. If anyone has worked with it I'd be interested to hear how their experience with it was, especially for game-dev-related stuff.

Quote:
Maybe we should be writing the game in-editor?

I find that to be much more natural and intuitive than an in-game editor actually.


This is a very good point. Mine does serve the intention of looking good on my resume, and at the same time make games (do what it is supposed to haha).

EDIT: Oh and about the creating the game from everything, you (MJP) are right. i got a little carried away with the robustness of a gui and actual game stuff.

Share this post


Link to post
Share on other sites
As a one-man-band, I found having an integrated editor immeasurably useful during development. Being able to make changes to the map and enemy positions mid-game not only saved a lot of time but also allowed much more freedom to experiment and try things out.

The editor was a separate executable, but included all of the game's source code so that instances of the game could run within a window in an MDI Windows app. When running in the editor, the game could also pump out diagnostics information which it wouldn't bother doing if running stand-alone.

This also meant I didn't have to worry about developing a bespoke GUI. The game just ran in a window in the editor.

Share this post


Link to post
Share on other sites
Separate Editor works the best that way you can use it over an over again on different projects just like your game engine it should be placed into a Library style source code so it can be reused and edited easily. This will make your life much easier.

Share this post


Link to post
Share on other sites
Thanks a lot for the answers. GameDev is really helpful [smile]

I think I'll go for a separate editor with wxWidgets. In the game itself (not editor) I'll use guichan (if I'm happy with it).

The most of you recommended me a separate editor. But I also asked a few people (3 actually, so not really representative) if they would prefer an in-game editor (from the point of view of normal players) and they all said they would prefer the in-game one.

What I think now is when you choose each type, you get (or must implement) this properties:

In-game
-------

- Easier to use editor
- Must be very polished, as the player will see this as the game
- The editor has a bigger "fun" factor to use
- Needn't to contain every feature the game creators used, it's a simplified version
- Programmer has to implement more GUI features on his own (e.g. Save Dialog)

Separate
--------

- Maybe not as simple/user friendly as the in-game editor (steeper leaning curve)
- Can be in a "development" state and not fully finished (can be released as a separate program)
- Is probably more efficient to use than the other and looks more professional

They have not to be necessarily true, but I think in the most cases they are.

Regards
aeroz

Share this post


Link to post
Share on other sites

This topic is 2838 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this