Distributed, crowd-sourced level building

A secret forum for people who preorder Overgrowth!
Post Reply
idbeu
Posts: 39
Joined: Sun Sep 04, 2005 11:20 am

Distributed, crowd-sourced level building

Post by idbeu » Sun Mar 08, 2009 1:34 pm

Goal:
Let's say we (the OG community) wants to build an epic level. Tons of buildings, complete with indoor facilities, roads, parks with trees and bushes, knickknack's, etc.

Method:
The level file, objects, height maps, etc will be stored in a Git repository that anyone can clone and modify. A moderator in charge of the level could pull in changes from a contributer.

Benefits:
This would allow the moderator to post zoning guidelines for their city, and only pull in updates from contributers that followed the guidelines or made something worthwhile. This also allows people to focus on what they're good at. For example, Hale and Nimai could focus on building while jo-shadow focuses on creating object assets. I might be good at gathering textures.

Potential Problems:
Can the Pheonix engine handle a lot of objects?
I don't think the current XML level methods are robust enough to make this easy?

Discuss.

User avatar
Hale
Posts: 172
Joined: Thu Jul 17, 2008 7:53 pm
Location: Severna Park, MD

Re: Distributed, crowd-sourced level building

Post by Hale » Sun Mar 08, 2009 3:12 pm

Wow, beat me to posting the idea chum. ;D

Seriously though, this is a superb idea. It'd take quite a bit of organizing, but we don't have much of a deadline so I think it's doable. Regarding the object limit, I believe it can go pretty high. For instance, my map, Shale Guard, currently has far over 1500 objects, and it runs smoothly. However, to make a detailed, epic city like you're planning too, you'd probably need more than 1500.

User avatar
Johannes
Posts: 1374
Joined: Thu Dec 18, 2008 1:26 am
Contact:

Re: Distributed, crowd-sourced level building

Post by Johannes » Sun Mar 08, 2009 5:53 pm

Hmm, I'm not 100% sure I get what you're asking (Whats Git?) but multiple people working on one level at the same time might be cool.

Networking is possible right now via IP connecting, though I don't know if level editing works as well while you are connected together. I'm guessing it won't, if only because there is no model browser yet and you can't see what files the hoster has, and it might cause a crash of the hoster's program if someone tries to add a file they have, but the hoster doesn't.

And concerning the number of objects, sure, any large city would have thousands of objects, but as the standard response is: "It's still the alpha and not very optimized" Not to sound like a broken record, just don't worry about it right now. If we get a system working with a few hundred objects it should work just as well with many thousands once the engine is more optimized

idbeu
Posts: 39
Joined: Sun Sep 04, 2005 11:20 am

Re: Distributed, crowd-sourced level building

Post by idbeu » Sun Mar 08, 2009 7:43 pm

Sweet, I'm glad you had the same idea Hale. It seems doable, but when I looked into _really_ doing it, I found the XML to be a bit uncooperative. It may need a bit of further work from the Wolfire guys to make it a reality. But we can get into that later.

Jo-shadow, Git is a distributed content management system. It is most often used in source code repositories, where there are tons of text files to keep track of. If you edit myfile.c and then I edit the same file, Git can merge the two changes and make a single myfile.c that includes both our changes. It's a very, very powerful program. One of its features is being 'distributed', which allows a repository to be cloned to another area. So for example, I could maintain a repository (let's call it MyAwesomeLevel), and you could clone MyAwesomeLevel onto your personal computer. After you worked on it and improved it, I could merge in your changes to my repository. There could be hundreds of people working on this level "at the same time", and I could pull everyone's changes into a single 'master' repository that keeps track of it all. If you wanted Hale's changes, you could pull his stuff directly from him, or wait until I updated the master and pull from me.

Ideally, some work needs to be done to make the level files more structured. Right now, I think a level XML file is composed of groups of objects laid out in a file. There's no way to label a group as a 'house', so the file is really flat. Even though there are technically groups, the groups can be arbitrary. Objects can even be regrouped by accident, if you aren't careful with the "select all" feature. This means that if I work on a house and Jeff works on another house, the elements of our creations can accidently be grouped with the other. This will make Git freak out. Reordering objects in a file will be flagged by Git (and why shouldn't it? It changed!) even though the level itself will look the same. In order to make this work, I think groups need to have the ability to lock themselves. Or maybe the level could load up a group as an object, so the elements of the group can't be seperated. I'm honestly not totally sure what the best answer is here, so I'll have to differ to Jeff or David.

We can do this with what we have now, but it'll take considerably more work.

Does this make sense? Is it the sort of thing people would be interested in contributing to? I like the idea of a huge city where lots of different stories play out, and where the city changes as people build and modify it. With Git, you'd be able to go back in time to an earlier stage of the city to create levels at any point in the city's history.

User avatar
Wilbefast
Posts: 1204
Joined: Wed Dec 31, 2008 2:32 pm
Location: In a sealed box shielded against environmentally induced quantum decoherence
Contact:

Re: Distributed, crowd-sourced level building

Post by Wilbefast » Mon Mar 09, 2009 9:33 am

Yeah, I talked about this a bit with John I seem to remember - games need to tap into that Open Source energy by providing good mod tools and systems for... for letting people do all the cool stuff you mentioned. To be honest I don't really now what you're talking about (when it comes to git files for example), but I think Open Source is cool: Today I released my first game's source code - I'm in an Open Source sort of mood - oooooh yeah :mrgreen:

Go for it buddy :D

User avatar
tokage
Posts: 615
Joined: Sat Dec 13, 2008 12:24 pm
Location: In a meat machine

Re: Distributed, crowd-sourced level building

Post by tokage » Mon Mar 09, 2009 1:07 pm

If I understood you the right way, Git is something like SubVersion or CVS?? Why come I never heard of that? Ah, Wikipedia tells me it's for the Linux-Kernel and it seems it is not fully cross-platform. Do you know how well it runs on Win and Macs? Although the distributed aspect sounds nice, if it is not fully cross platform there is already a problem I think.
But anyway, having a version management system for group level editing sounds like a great idea. The thought of a level/campaign project run by three people or more wouldn't be a dream and as you pointed out it is even now fairly possible. It is really too bad that there is no intelligent versioning for XML-Files, but just plain text should do the trick also. What format are the .obj files for the assets?

For that object grouping problem, I haven't played around with the map editor yet, because my computer is too old, but maybe a more hierarchical structure for the level file, with the possibility to include stuff from other files in the level files or lower hierarchy files and thus allows groups, subgroups, subsubgroups ... of objects all in different files would be a good idea.

idbeu
Posts: 39
Joined: Sun Sep 04, 2005 11:20 am

Re: Distributed, crowd-sourced level building

Post by idbeu » Mon Mar 09, 2009 2:34 pm

Git runs on anything (and yes, similar to CVS and Subversion). On Windows, you either have to use Cygwin (which is what I use) or the Git Windows port, msysgit (which I have never used... dunno how good it is). MacOS and Unix/Linux both have *nix environments, so they're no problem. But you're right, using Git could be a stumbling block to a lot of people due to the learning curve, if not the system requirements. Perhaps we need another way. It may end up being the case that it's eaiser to just zip up all the files and email them to each other. :)

Details, details.

Perhaps a good first step would be to simply try to build a level, and see how it works out. We can post our progress here, and I (or someone else) can merge it all together.

Skofo
Posts: 545
Joined: Fri Nov 07, 2008 7:44 pm

Re: Distributed, crowd-sourced level building

Post by Skofo » Mon Mar 09, 2009 3:27 pm

http://github.com/guides/get-git-on-mac
http://github.com/guides/using-git-and- ... or-newbies

Git works fine for me on both Linux and Windows. Mac shouldn't have any problems either. I mean, look at github, the most popular git hosting service; it practically screams Mac.

idbeu
Posts: 39
Joined: Sun Sep 04, 2005 11:20 am

Re: Distributed, crowd-sourced level building

Post by idbeu » Mon Mar 09, 2009 7:17 pm

Me too. Git is fantastic. But the concepts and everyday use can be a steep learning curve for someone that just wants to stake their claim in a level and build a house. The more I think about it, the more I want to get started on this without Git. Although I guess we could also accept submissions in zip form. It's also something we can use later if we find the need.

That said, if someone wants to start a project with Git/Github, I'm in. I'd start one myself, but I am short on time this week, and I want to get a bit more comfortable with the editor before trying to manage a project like this.

EDIT: Wait, did you say you use it in Windows? Do you use Cygwin or msysgit?

Alorwin
Posts: 38
Joined: Sat Oct 25, 2008 6:43 pm

Re: Distributed, crowd-sourced level building

Post by Alorwin » Mon Mar 09, 2009 10:35 pm

On object limits: I've run up to 2700 objects, though there was massive frame-drops at that number.

Skofo
Posts: 545
Joined: Fri Nov 07, 2008 7:44 pm

Re: Distributed, crowd-sourced level building

Post by Skofo » Mon Mar 09, 2009 10:45 pm

idbeu wrote:EDIT: Wait, did you say you use it in Windows? Do you use Cygwin or msysgit?
msysgit. I don't have too much experience with it, though. But it pulled my repository off github fine, at least.

Post Reply