Tuesday, August 21, 2007

Free this free that O_o

Linux users can now get their hands on the latest version of FreeOrion, the turn-based space stategy project inspired by Master of Orion games, without having to compile it themselves. See this thread for details. It worked well for me, although the game is not easy to figure out and is incomplete - I couldn't work out how to do too much. However for fans of the genre the project is definitely worth following and I'm sure the FO guys would be glad of any extra help.



There's murmours over at the FreeTrain project - tangible progress on an SDL port is evident. One of the developers posted a screenshot with a basic UI much closer to the original A-Train games. Moving to SDL is the major hurdle for making FreeTrain run on Linux - currently it uses .NET and DirectX so can only be run on Windows. Forunately the project is moving towards Mono and SDL. :-)



Er, what else is happening? Not too much...



There's an opinion article on Linux Lookup discussing the problems with Linux/FOSS game development. On the face of things, the author seems to be spot on, but if you think about it properly I think he has completely missed the real problem with FOSS game development. It's not about lack of talent, artistic or otherwise. Or lack of good environments, or lack of anything for that matter. The single biggest problem with FOSS game development is the lack of consolidation. Duplicated effort, too many projects chasing similar goals, too many people solving already-solved problems. If we could harness just 25% of the wasted effort in FOSS game development we could produce some very high quality games. That has to be the community goal, to help eachother to help eachother because whilst competition is healthy, teamwork is powerful.

18 comments:

Anonymous said...

I haven't commented here before because I haven't had much to say, but I completely agree with you as far as this goes, Charlie.

What I'm surprised at is that thus far, there hasn't really been any kind of resouce nexus set up--a conglomeration of the results of talent, so to speak.

The idea is that it could be a general site that would serve as a repository for graphics, sound, music, and clippings of code compiled from the various efforts of coders within the FOSS community, cross-referenced into a huge database.

In other words, if a person desires to solve an odd problem they'd encountered, they'd be able to search for the solution there, or put up a request with their own code clipping. If a person needed an old cottage, they could search for it and if one isn't present, they could request it.

Then artists and coders of all types could browse through these requests and try to provide for them, keeping everything on the repository and under an open use license, and thus owned by no single individual.

I admit, my anarchistic leanings often give rise to ideas like this, but I don't see that it would be all that unfeasible and it would certainly solve a lot of the problems we're seeing today. The only problem would be finding someone to host it.

Considering the resources the FOSS community has at its disposal though, if someone were to knock together a concept in whichever web language they chose, so they had something to show, I doubt it'd be that hard to drum up interest.

Why, if I had the PHP talent for it, I'd try to do this myself and really get some hefty collaboration going.

In this way, we'd see more things being spread between different projects, and thus we'd see more and more projects crop up as a lot of the work would've been done for them already. This is how a lot of modding communities tend to work, as if someone has already done part of the work for them, it's easier to create a mod or a total conversion.

I need say little more than that though and I leave the idea open to anyone who might want to pursue it, but given the problem at hand, I really do think that this is what we need.

~Praadur

Anonymous said...

So, what are you charlie? A reporter on os games or an advocat of the os community?

Charlie said...

Both

Kaelis Ebonrai said...

The problem with that idea, Praadur, is some people will bone-headedly stick to the past, with all their might.

There are some, that will, inevitably resist a resource nexus, claiming their current setup is better, and, they want to keep their original identity, because it has lasted for so long. Even though, probably most people have never heard of them, or never *will*.

They wish to hold onto the old, when the situation for all involved could be so much better.

But, eh, some people fear change.

I don't. Things could, and should be so much better.

Anonymous said...

Whilst I agree with what you have to say as far as expectations of the average person are concerned, the FOSS advocate is rarely an average person.

What we have to look at here aren't people who're creating indy or commercial items but those who work with FOSS projects.

There are plenty of examples of this out there too, including my faovourite example: Vega Strike.

I'm sure that a number of providers for that project and many similar projects would have no trouble with providing works to such a nexus. And when a stable base is achieved to work from, we can simply lead by example.

There would be some reluctance to it at first, and you're quite right that people tend to fear change, but I think that once it's established and the majority are used to the idea, it wouldn't be long before the submissions start flowing in.

I suppose I'm just a firm believer of: "If you build it, they will come."

The only problem thus far is that no one has actually tried building such a thing, and until the experiment takes place, we cannot know for sure how it would all play out. It might even be a massive disaster, but it would be worth at least a try in order to pull the FOSS community together.

The only other thing I wanted to cover was that this needn't actually replace anyone's methods of doing things. Just because a new option arrives, it doesn't mean that people have to abandon their existing ways of doing things. It just means that it's there as an extra option for those that desire it.

I really do think that forcing something like this on people would be a mistake. If such a nexus is created, I think it has to be handled passively so that people don't feel threatened by it.

~Praadur

Anonymous said...

Yeah, those people exist, Kaelis, but you can't really go by them. I mean there are people out there today who still refuse to use version control systems because they can just zip up their code and email it - that doesn't mean version control is a bad or unworkable idea, it just means that some people are too lazy to do things the easy way. It's always been like that and always will.
Some people, OTOH, are smart enough to recognize the easy way and make an effort to use it. Those are the ones you want to lure in for a project like Praadur is imagining.

chunter said...

One of the anonymous folks wished all freely available software and related information was contained and catalogued in a single place, and I'm happy to announce that it is.

It is contained on the internet and it is catalogued with Google.

If you're working on a game that needs something extra, before you waste months of your life on coding or whatever, Google it first.

If you find another project that did the same thing, I'm sure its author will let you fork or copy the code with proper attribution.

End of public service message.

http://justfuckinggoogleit.com

Anonymous said...

i don't think trying to creating a central "nexus" for resources will do much good, such things exist already,

for free art i list a few sites here :
http://ghoulsblade.schattenkind.net/wiki/index.php/Links#free_content

you can't expect artists and coders to upload every useful bit somewhere, it's dublicate work, if you ask them to upload something on some nexus, they will just point you to the public read-only access of their projects svn or whatever and tell you to upload it yourself.

i think a simple collection of links to interesting projects would be more viable. maybe something similar to the social networking thing of http://ohloh.net, with something like the automated code analsis, just for graphics. in combination with a social networking and tagged search this could be interesting, but i think licenses will be a problem especially with art.

i don't think this is useful for code, as it is usually easier to implement than to search for the right code in the right language. and the more useful bits of code usually end up in some library anyway.

also i think trying to get the whole free-software community to agree on a single standard is pointless, and this is a good thing, the creative-chaos emerging from freedom is part of it's beauty.

Anonymous said...

Re: chris

Yes, Google is a handy tool, but allow me to share an example with you: let's say that I was looking for an old country cottage for one of the areas in an RPG I'm creating. Exactly what do I search for on Google to find a FOSS-license released cottage model?

While Google is a nice tool, it doesn't nessescarily allow for easy access to what's already been shared. I see the internet as being a bit more tenebrous than you do and whilst Google does exist, I believe that that self-same nature of the internet doesn't make it as viable of an option, in my opinion.

Opposedly, if we had the kind of project I spoke of then one could simply head to that page and utilise a more confined and focused search. They could use a dropdown to select models and then search through that particular database for the things they desire. If it wasn't there, then they could request it and someone might create it for them, or if it has been created elsewhere and it's simply not listed, then that information too can be shared.

As another example: why is it that a lot of people also use the TES Source, Planet Elder Scrolls and many others for Oblivion mods, instead of only putting up their own project sites and allowing people to find it with Google? I think that the answer is the same one that I've arrived at.

This is why I think it would be helpful to the everyday small project. It doesn't at all mean that any media has to be created especially for the nexus as that would defeat its purpose, but instead it would simply make things easier to find and use.

As a final point, I don't see this as something that anyone would be forced to use. It would just exist to make the lives of those who wanted something like that easier.

Re: ghoulsblade

You have a couple of good points and I thank you for sharing them, I'll cover them in the order you've given them.

First of all: one idea that I've been trying to convey is that the resource nexus needn't be a host, and it wouldn't require the right to be exclusive in any way. It wouldn't be like an art site in that people might develop site/brand loyalty, I don't think it should work like that.

Moreover, the artist doesn't nessescarily need to add the information him or herself, it could be added by fans of the project and their links could go to that project's repository, explaining what it is and which project it comes from, offering the project's home page aswell.

Instead of seeing it as a resource host, look at it more like the webcomic indexing sites which have become popular around the internet. A lot of people use those and often comics are added by fans instead of authors, and using such sites it's easier for people to find comics that fit their tastes.

I think the problem here was that I didn't explain myself very well from the start, and the idea of this nexus being a host has embedded itself in the minds of the readers, whereas that wasn't really my intent. I've been thinking of it as a giant database of information instead, one that exists for the simple purpose of allowing people to find things more easily.

The option of hosting could be offered so that a file could be held in place of a link, but that need not be a requirement, opposedly I believe that turning it into a place of hosting alone would be harmful to the idea.

On the topic of searching for workable snippets of code instead of coding them oneself, I can't really argue or hold a point there as I don't feel I'm educated enough in that area to do so. It's possible that it would be best kept to media instead of code, I wouldn't know in this case.

The next point you make is one I've been trying to fight as I really don't understand the reasoning behind the statements, so I have a few of questions to ask you about these particular views.

Why do you see it as a standard, are other web databases seen as such? Why do you think it would need to be so instead of merely another option that people could use if they so desired? Why do you think it would need to be mutually exclusive in that regard?

I don't see it as being mutually exclusive in my mind, it would simply be another option instead. Therefore, if it isn't an exclusive system, how could it possibly be damaging to the openly creative spirit of the FOSS community? Would providing easier access be detrimental to the freedom of creation? If so, how so?

~Praadur

Tyler Olsen said...

I agree that there needs to be a more/better collaboration between FOSS game designers. From my personal experiences working on Allacrost, I've found the most disappointing factor to be the lack of "good code". What do I mean by that? I mean code for another game that is well written, well commented, and well documented. Essentially, I'm talking about a large code base that is not overly puzzling to understand.

When I first starting working on Allacrost, my immediate first thought was to look at Battle for Wesnoth's code base to help me get a head start. Even though the game is nice and all, that code is a disaster area. At the time I found very VERY few comments (only a header comment for each file) and no documentation. After going through the code for 15 minutes and not having the slightest clue of what was going on, I said "screw this" and did my own thing from scratch.

I am trying to do my part to change that. Particularly, with Allacrost we are writing code that is easy for others to understand and modify. In fact, our team periodically goes through the code base and "cleans" code that works, but it is dirty, ill-commented, or not consistent with our code standard. I believe that we have one of the best code bases for FOSS games from that perspective. The purpose for all of this documentation/standardization/commenting work are the following:

1) It makes it much easier for new programmers who wish to contribute to Allacrost to pick up the code base and understand it fairly quickly

2) Having code that is very well written and commented makes it much easier to build upon or modify because there aren't as many annoying bugs that are introduced by the updated version

3) It greatly helps others who are interested in understanding how the internals of the game function, and why things were designed the way they are

4) It makes it very easy for others to take our code base, keep the engine but remove the "game modes", and then create their own game.

#4 is something I haven't seen yet, but I hope that one day it will happen. The way our game is designed it is trivial to literally turn it into any 2D game, from a RTS, TBS, puzzle game, action game, adventure, you name it, its possible. In fact, after Allacrost is finished I've been considering taking that code and using it as a very solid foundation for a new FOSS RTS game.



So, IMHO FOSS programmers need to stop being lazy and start writing code that is well explained, whether its through comments, doxygen, custom documentation, or (preferably) all of the above. As for content FOSS sharing, I really don't have much to add about that, except that I wish more artists and composers were more willing and accepting to work for free for a good cause, like so many FOSS programmers are.

Kaelis Ebonrai said...

Tyler: Sadly, there are few of us, that is, Artists that will work freely for the cause of Free Software/Content.

I'm an artist at heart, however, I am openly an advocate of the Free Software movement.

I have had artist friends tell me I am making a mistake, and, tell me one day, I will regret it.

I, however, disagree. I will not "regret it", because, it is something I believe in.

In any case, I do wish to help with Free (libre) Art Content, for FOSS Games.

Anonymous said...

That was a very good post Tyler and the last part was something that gave me even more to think about.

I think you're right with what you've said about many artists not being quite so forthcoming with their talent and providing things for free, but I believe that's because they try to make a living out of their art and obtain payment for what they do.

Often, those who do something as a form of work would rarely want to do the same thing as a hobby and for free.

One idea that I did come up with to work around this problem is an idea I've stolen from the furry fandom and Open Metaverse (respectively), the system of commissioned works. That might be just what we'd need in order to drum up interest from more professional sources.

For the sake of reference, I'm going to tie it into my database idea and the request system I spoke of.

Let's say that someone requested a particular model or piece of music and there wasn't any interest in creating it, well what they might then do is offer a monetary bounty for said work to be created.

Someone might then step up and show interest in the work, they might accept the terms of the request or they might try to negotiate something better based on their talents. If their work appealed to more than just the person who made the original request then a system could be used to allow others to try to help pony up that cost and pool it via some sort of donation system to make the payment the artist desires.

I'm not sure how pooling could be handled in a trustworthy way though, so I'd leave that to other people to discuss as there are likely others with knowledge of how to best handle such transactions.

Anyway, the end result is that we could commission an artist to create a work to be released under a FOSS license, and then that work could then be shared between a great deal of the FOSS projects.

In fact, there could even be a drive towards this end: commissioning known artists who're interested and having them create works which can be shared openly around the internet community, hosted and used by anyone who wants to, owned by no one.

I understand that it's a bit of a strange idea, to include money in such a thing. Wouldn't it be worth it though if we could use that to help convince professional artists to create and release works under a free license? Would it be possible to work that out so that the contract for the work wouldn't conflict with the end result?

That way we could even further flesh out our list of available resources. If someone requests something that we know doesn't exist elsewhere under a FOSS license, we could request a creation for free or for a small toll offered up to any willing artists.

Coming back to the original mention of Open Metaverse, I believe their system was that they offered a monetary reward for coding services provided, with the actual results of those services being included as part of the project under an open license. So going by that the system does seem to be a functional one at the very least.

These are just a few thoughts I wanted to share, anyway.

~Praadur

Anonymous said...

ghoulsblade (self-quote):
also i think trying to get the whole free-software community to agree on a single standard is pointless, and this is a good thing, the creative-chaos emerging from freedom is part of it's beauty.

Praadur:
Why do you see it as a standard, are other web databases seen as such? Why do you think it would need to be so instead of merely another option that people could use if they so desired? Why do you think it would need to be mutually exclusive in that regard?

I don't see it as being mutually exclusive in my mind, it would simply be another option instead. Therefore, if it isn't an exclusive system, how could it possibly be damaging to the openly creative spirit of the FOSS community? Would providing easier access be detrimental to the freedom of creation? If so, how so?

I didn't say it was damaging or bad or anything else, i just wanted to remark that maybe you should think the underlying concept over : Currently it sounds like it is designed to be a centralized solution (central database for all links), which might work well with the decentralized nature of FOSS development.

one possibly interesting alternative is embedded metadata system like here : http://wiki.creativecommons.org/Embedded_Metadata
i don't know the details, but it might be interesting for your plans.


tyler olsen :
documenting code manually costs time and effort, while it is very important for libraries, i don't think gamedev projects can afford it, and if the development team is small, it is sometimes easier and more efficient to ask the coders directly.

when the coders face the same question over and over again they will start writing the answers down for public view on their own account.
A wiki greatly helps with this.

if the project lead demands that all code is written and documented well, you'll loose a few of the already rare code contributions, and i think this price is too high for making contributing easier, it kinda misses the goal, contributing gets easier but you get less contributions.....

gamedev is about fun, so you won't find many people willing to do the grunt-work of cleaning other peoples code.

gamedev is often rapid development, where people want to see results quickly, otherwise they loose motivation .
i think it is unrealistic to expect everything to be well documented in such an environment.


i think a better direction to improve the documentation of projects is to write and enhance tools to generate such documentation automatically,
doxygen is only the beginning.

an advanced development environment should make it easy to get an overview over code even if the code is not well written or docuemented.

features like class browser and jump to definition are only the bare minimum, i hope to see some more advanced code analyis getting more common soon (and if i have to i will start my own IDE project).

another possibility i can think of to keep projects viable even with bad code is to make extensive use of a plugin system. this way you have a bunch of core code that is small enough to be kept clean, and most contributions and "dirty but working" code can coexist peacefully with it, as it is capsuled in a plugin and doesn't bother others.

i think this is a good way to take advantage of chaotic code without letting it spoil your project.

Ionflux said...

Hey Charlie, I have been keeping an eye your blog for a few weeks now and I think it is the best information source on open source gaming available. I am also looking forward to freegamedev.net. Way to go! :)

As for code not being understandable enough, I think as well that that is one of the key reasons for duplicated efforts in FOSS game development. I have gotten into the habit of reading the code of interesting projects and though some have an impressive amount of code and complexity, documentation is usually a mess (if it is there at all).
Understanding the code then comes down to starting at main() and painstakingly picking your way from there. This can lead to successes, you may understand a few things about the code after a few weeks, but it still is much effort that could have better been invested in productive activities like fixing bugs, adding features or building your own game on the existing foundations.

I also don't think it is too much to expect of developers to document their code (of course, it's free and all, so why comlain - but anyway, here goes).
You just have to get into the habit of at least writing doxygen (for example) comments for each item as you first write it. After this, it hardly seems like any effort at all. The benefit is, in my opinion, tremendous - not also to other developers but also to yourself. It cannot be so hard to just write what a function or class is supposed to do. Same goes for a general overview of the architecture, like "We set up everything in initStuff() and then enter the main event loop in runGame() which processes input events using processInput() and updates the world state using updateWorldState()", this cannot be too hard and (with some added detail) makes it obvious where to start looking for things. And no one is in a better position to document the code than the original developer, at the time of first implementation.

That said, there are also issues of style. Some people like amazingly intricate abstract object interface hierarchies containing lots of Factories, Managers and Adapters backed by tomes of whitepapers and concept documents.
Others like to get stuff working fast with potentially ugly code. However, this is something that an experienced programmer can adapt to (I think), still, some may be so offended by the coding style of an existing, similar project that they decide to start their own.

As for art (or lack thereof), I think that really is an issue. People who want to create FOSS games regularly seem to underestimate the requirement for skilled artists as well as skilled developers. There may even be more artists at work on a current commercial game title than programmers.
Licensing may be a problem here. Artwork often is created for a very specific purpose (to create a certain unique style for a game) and so I have some understanding that artists want to have control over what their art is used for.
On the other hand, several projects clearly have a need for Art that could be shared while the games still could be unique. For example, having common 3D models for generic fantasy characters would still enable different worlds and stories.

Anonymous said...

Hey there. This is a pretty good article and I agree with it, especially the points about the duplication of effort within the FOSS game community.

I agree with some of the other comments on here that a repository mixed with a social networking / statistical tracking website would draw a lot of artists and contributors.

As an artist that contributes to FOSS gaming regularly, I can definitely see the value of getting my work out to a larger audience. Not only would be beneficial to those who would use my art, but it also would give a greater warm fuzzy feeling knowing that I've contributed to great projects. :)

I'd also like to mention that several years ago Grumbel (who recently had an interview on this blog!) created a FOSS media repository. I'm sure if someone were to ask him nicely, he'd provide the source. It'd be a nice starting base for this nexus-like project.

Free Gamer said...

I remember Grumbel's media repository. It was awful when it came to browsing it. Just a search feature, nothing else. I'll try and speak to him.

Irrevenant said...

A key problem with Open Source Gaming that noone's really touched on:

OS development is incremental, which is great for web browsers or operating systems where people use it on an ongoing basis. Successful open source games - Wesnoth, Freeciv etc. fit this model. But what about something linear like Half-Life? Players aren't going to want to play Half-Life 1.0 when they've already played Half-Life 0.9 (and maybe Half-Life 0.8) through. As such the incentive to finish the game DIMINISHES as people become less interestd the closer to finished the game becomes.

re: Artists, I've often thought that there are PLENTY of artists. People are TRIPPING over themselves to create models and mods for Quake or Unreal Tournament. If you could convince these people to release their work as open source - and maybe even interest them in directly producing work for open source games - you'd have art aplenty.

Anonymous said...

i think multiplayer games and clones/ports of famous games are most successful in OS-gaming, they probably are less affected about the diminishing effects when playing games for story.

the mod-scene of commercial games sure is interesting as source for art.
neverwinternights mod-makers seem to produce lots of 3d medieval/fantasy models as far as i know.

Provide feedback:

Due to SPAM issues we have disabled public commenting here.

But feel free to join our forums or easily chat via IRC with us.