• Hey! Guest! The 36th GMC Jam will take place between February 27th, 12:00 UTC - March 2nd, 12:00 UTC. Why not join in! Click here to find out more!

GMC Forums Has anyone hired the GMC before?

andev

Member
I know programming can be an intimate balancing art, where anyone contributing largely must have a good understanding of the rest of the project first...

But has anyone tried a community programmed project here? I'm not sure how it would work financially but basically: A final project goal is set out, nothing too ambitious. A parts list is then created for all the code that will be needed, and the functionality / interaction it will be required to have.

So everything would align, there would be a naming standard. If you were making an enemy for instance, it would need to have the agreed variables like "Health" or "Level".

A lot of arrangements would largely determined by the type of game being made, but I honestly think it would be interesting.
 

GMWolf

aka fel666
I tried joining one. It was a mess.

It's more than just naming standards. There needs to be clear goals, a way to delegate work.. etc. This sort.of stuff is best left to githug.
 

hogwater

Member
I had an idea for a GMC community game thread and then forgot about it.

But I think it would be fun to play a game of telephone via game creation. Basically anyone would be allowed to participate, and add whatever they wanted. As long as there was an eye towards adding something, and trying not to delete previous code (rather fixing bugs or reworking code) I think we could make something interesting.

If we made a rule that the game was "handed" to the next person in line (so that a hundred people aren't editing it at once) I think it could work.

Whether it would be a great game or not is another thing entirely.
 

GMWolf

aka fel666
I had an idea for a GMC community game thread and then forgot about it.

But I think it would be fun to play a game of telephone via game creation. Basically anyone would be allowed to participate, and add whatever they wanted. As long as there was an eye towards adding something, and trying not to delete previous code (rather fixing bugs or reworking code) I think we could make something interesting.

If we made a rule that the game was "handed" to the next person in line (so that a hundred people aren't editing it at once) I think it could work.

Whether it would be a great game or not is another thing entirely.
Actually that could be fun.
Each person would nominate the next one in line. If they don't respond within a few days saying they will take the relay, then nominate another, etc.
 
In my experience... without a dedicated leader-type person it is very hard to manage a team project especially when it comes to working alongside other peoples code. No two people are going to have the exact same vision for a feature/idea and having a singular source of delegation/goal setting solves that.
 

andev

Member
I agree that there should be a leader, because they will know where everything is, and be able to stitch it all together. I kinda meant a more "modular" system where people would create code that runs on its own? But a pass the parcel type game maker game could be fun as well! That needs a new topic!
 

andev

Member
That would be horrendous in GML. No namespaces, variable name clashes...
That's why I suggested a variable naming scheme. I don't think variable name clashes would be a problem, the code will be contained within scripts or objects. Just so long as the standard ones that will be accessed through other code follows a structure, it'd be fine.
 

muddman

Member
Why wouldn't this work like any other open source project? There is a committer (or committers) that 'run' the project and essentially define a set of standards and then the project goes from there.

If you really wanted to get something going, and I think it's a great idea from a learning and community standpoint, is to come up with standards, decide between gms 1.4 or 2, and come up with a rough design. From there folks can contribute as they see fit and the committer team can then choose which pull requests to pull into the game and which need reworking from the original authors.

It's not exactly a new concept, http://www.wesnoth.org/ has been around for ages. I'm sure there are other games.
 

muddman

Member
I'm just a bit stubborn perhaps but I don't trust people to "community manage" anything.
The trick is to not think of it as community managed. Think of it instead as a community effort. You could argue that Linux is 'community managed' but the truth is that Linus is a (benevolent?) dictator. The community is involved, but the buck stops with him. (might be why there are so many forks)

There are very few projects where anyone can just commit whatever they want and whenever they want to. You're right, it would be chaos.
 

FrostyCat

Member
Please don't attempt to revive this "community based game" crap unless you've been around the GMC long enough to witness the last one.

This "community based game" idea gets raised every now and then since the birth of the GMC, and moderators always turned it down --- except once. When one sincere-sounding leader a decade ago proposed to the moderators, they knew it probably wasn't going to work but took a chance anyways, just to settle the debate. If I remembered correctly, within 3 months it had to reboot, and within 6 months it folded with nothing to show for.

The first iteration tried to gather a list of components, but the list didn't moderate itself and the design process diverged early. For months it went nowhere, just a heap of concept art with nothing much tying them together. In the end, the idea wasn't even enough to cobble together a demo.

The second iteration was a little better, but again the sense of direction still wasn't strong enough. The shell-shocked leader also pared down the scope so much that it wasn't appealing as a large team project anymore. It went downhill from there, the mods closed the section and never let it happen again.

Besides, what would come out of a community game? Chances are it's play-and-forget. I'd rather we work on a community library collection, a public test suite or a set of coursework for basic theory that video tutorials ignore. Something that actually has longer term utility and well-isolated, bite-sized roles.
 

Nocturne

Friendly Tyrant
Forum Staff
Admin
All true! The last (and only!) GMC Community Game was a bit of a disaster, and although there were a few hard working people who did their best to keep things going and actually create a final game, it just didn't work. the logistics are too complicated, and no matter how it goes it'´ll never be a true "community" project. That would require a majority of GMC users to participate in some way, and the sad truth is that these things usually end up with a hard-core group of only a very few members, at which point it stops being a community project and starts being just another WIP by a team...

So, no, this isn't going to happen in any official way.

I'd rather we work on a community library collection, a public test suite or a set of coursework for basic theory that video tutorials ignore. Something that actually has longer term utility and well-isolated, bite-sized roles.
Now THAT is something we can get behind! A public test suite sounds like a great project, as does a community library... something that everyone can help out on... :)
 

GMWolf

aka fel666
I'd rather we work on a community library collection, a public test suite or a set of coursework for basic theory that video tutorials ignore.
Yep I love those ideas.
I think such first project should be kept small: let's figure out some naming conventions for GML! Something that will cut down on ambiguity between local and instance bars, objects, scripts etc.
Something we can all use and make sharing code neater.
 

GMWolf

aka fel666
What is this? :eek: It sounds very interesting!
Well i think its something like Unit testing.
But frosty already made an excelent test suite. (Though, i would argue it woul benefit from a few more modern GM features, and some reflection, since we dont have annotations.)

Ooohhh. I know just the community project to work on: a serialization framework! Or perhaps something akin to a bean, but for GM.
 

FrostyCat

Member
Now THAT is something we can get behind! A public test suite sounds like a great project, as does a community library... something that everyone can help out on... :)
I'm most interested in the community standard library.

The current Marketplace is filled with extensions that people still ask questions about but can't rely on community support with. Here are some common problems and obstacles:
  • The extension is behind a pay wall
  • The extension is from a different vendor than the one the responder is used to
  • The extension employs poor development and deployment practices, such as having a dirty import (i.e. example code mixed with framework code), poor scope hygiene (e.g. declaring temporary variables in instance scope) or inconsistent style. This makes it more likely for the extension to conflict with other extensions, even if unrelated in functionality.
  • The extension is supported by a sole publisher and it goes lights-out with nobody left to answer questions about it
At the same time, GML suffers from a lack of standard library functions that any other industry-standard language would take for-granted, and those needs are often still not served by the Marketplace. This is what the GMC can and should help address.

If it goes forward, here are some ideas that I would like to see realized by the end of 2018:
  • Extended string/real functions
  • Extended path-finding and other graph/tree algorithms
  • Array-based data structures that support deep cloning and unified serialization
  • Standards-compliant format parsing (JSON, XML, YAML, etc.)
  • Linear algebra, matrix and vector math (i.e. "Numpy for GML")
  • Basic industry-standard cryptography (HMAC, SHA-2/SHA-3, AES Rijndael, etc.)
  • Responsive UI framework (grid system and UI elements)
  • Cross-platform native text rendering, text with embedded styles
  • A backport of MPlay or some other networking library that works across HTML5/native
  • Virtual file system interface (for handling non-Sandbox or user-selected files/directories across exports)
What is this? :eek: It sounds very interesting!
Well i think its something like Unit testing.
But frosty already made an excelent test suite. (Though, i would argue it woul benefit from a few more modern GM features, and some reflection, since we dont have annotations.)
I'm not talking about a unit-testing framework, I've handled that already and it's open-source. Though I'll happily rewrite it to suit a community coding standard and incorporate it into a "GMC standard library" if given the chance.

I'm talking about a public, comprehensive test suite for operators and functions in the latest version of GMS 2.x, with cases written by the general user base. Unexpected reappearances of serious bugs in basic functionality have been a persistent problem throughout 1.x's timeline. Not everyone benefits from a community game, but everyone benefits from a more stable GMS 2.x that has been tested against the test suite.

There had been rumours of an internal test suite called "GMDeath" on Mantis, so I'd hold on the idea until a staff confirms or denies it. If it exists, the GML portion of it could become open-source and serve as the first community project. We should know what GML operators and functions have been tested against, be able to present automated counterexamples when a bug arises, and have a degree of reassurance against unexpected regressions.

Ooohhh. I know just the community project to work on: a serialization framework! Or perhaps something akin to a bean, but for GM.
I'd love to see that happen as well, but I think it should wait until classes and non-ID-based buffers/data structures become a reality. A serialization framework done now would either need to rely on a schema or flaky array-based type markers, only to be rendered obsolete by the roadmap.
 

GMWolf

aka fel666
Well, to support all this, we will need some way for all these libraries to communicate with each other.
For instance it would be handy if data we get from JSON parsing, could then be used directly with an XML library, or perhaps a standard UI library.
I have an Idea for a standard reusable data unit in GML (akin to a javaBean) ... Ill make a post about it for discussion once I come up with a good 1rst iteration. (I'm thinking reflection based right now)
I dont want to make a post before I have a first suggestion, Or the thread will probably end up ignored an unseen.
but if you are interested, Why not pm Me your thoughs and ideas?
 
  • Extended string/real functions
  • Extended path-finding and other graph/tree algorithms
  • Array-based data structures that support deep cloning and unified serialization
  • Standards-compliant format parsing (JSON, XML, YAML, etc.)
  • Linear algebra, matrix and vector math (i.e. "Numpy for GML")
  • Basic industry-standard cryptography (HMAC, SHA-2/SHA-3, AES Rijndael, etc.)
  • Responsive UI framework (grid system and UI elements)
  • Cross-platform native text rendering, text with embedded styles
  • A backport of MPlay or some other networking library that works across HTML5/native
  • Virtual file system interface (for handling non-Sandbox or user-selected files/directories across exports)
That all sounds super awesome. I'd like to see this happen.
 

FrostyCat

Member
Well, to support all this, we will need some way for all these libraries to communicate with each other.
For instance it would be handy if data we get from JSON parsing, could then be used directly with an XML library, or perhaps a standard UI library.
I actually think they should be offered as discrete packages, at the moment using only standard GML functionality with no additional dependencies. The only requirement is that they abide by a community-mandated coding standard, have a clean import, and is scope-hygienic. That reduces the amount of coordination needed between project teams, which brought down the GMC community game last time.

For example, the JSON library shouldn't automatically talk to the XML library. That's the job of the developers using those libraries, not the developers creating those libraries. The formats don't have a well-defined one-to-one correspondence in language elements, and imposing a particular interpretation would just cause frustration in cases where another interpretation would be more appropriate.

I have an Idea for a standard reusable data unit in GML (akin to a javaBean) ... Ill make a post about it for discussion once I come up with a good 1rst iteration. (I'm thinking reflection based right now)
Again, I would hold that until YoYo formalizes support for classes, lambdas and type-safe data structures in the roadmap. The last thing I want to see is community library work that pits us against YoYo developers, and risks becoming obsolete by or conflicting with something YoYo will soon be doing.
 

GMWolf

aka fel666
Again, I would hold that until YoYo formalizes support classes, lambdas and type-safe data structures in the roadmap. The last thing I want to see is community library work that pits us against YoYo developers, and risks becoming obsolete by or conflicting with something YoYo will soon be doing.
well given the current speed GM of development...
For example, the JSON library shouldn't automatically talk to the XML library.
Think of all the reflection based Json and XML libraries in other languages. They are by far the most popular onse. We are even seeing some reflection based UI libraries...

The formats don't have a well-defined one-to-one correspondence in language elements, and imposing a particular interpretation would just cause frustration in cases where another interpretation would be more appropriate.
The current proposal I am working on would only enforce a way to declare what scripts are used to get or set data, as well as which scripts create or destroy the data. The actual representation of the data would be left to the library developer.
With that, I believe that making your library compliant with the data framework would be rather painless, and enforce very few restrictions.
Of course, it would only make sense to use this for libraries that deal with POD.
 

andev

Member
I'm talking about a public, comprehensive test suite for operators and functions in the latest version of GMS 2.x, with cases written by the general user base. Unexpected reappearances of serious bugs in basic functionality have been a persistent problem throughout 1.x's timeline.
So if I'm understanding it correctly, an open source project file that tests every single function in every possible way, so that if an update breaks functionality of something, it can be immediately detected?
Do they not already use something like this?
 

samspade

Member
I actually think they should be offered as discrete packages, at the moment using only standard GML functionality with no additional dependencies. The only requirement is that they abide by a community-mandated coding standard, have a clean import, and is scope-hygienic. That reduces the amount of coordination needed between project teams, which brought down the GMC community game last time.

For example, the JSON library shouldn't automatically talk to the XML library. That's the job of the developers using those libraries, not the developers creating those libraries. The formats don't have a well-defined one-to-one correspondence in language elements, and imposing a particular interpretation would just cause frustration in cases where another interpretation would be more appropriate.


Again, I would hold that until YoYo formalizes support for classes, lambdas and type-safe data structures in the roadmap. The last thing I want to see is community library work that pits us against YoYo developers, and risks becoming obsolete by or conflicting with something YoYo will soon be doing.
As a relatively new coder. I would be interested in this. While I doubt I could contribute I think one of the other benefits of something like this would be to teach newer coders some basics which aren't widely taught in the GMC such as what it means to have a clean import and be scope-hygienic and write code meant to be used by other people in other projects and just in general give people access to the underlying way good functions are built.

Also on a slightly off-topic note, @FrostyCat I really like your tutorial posts in the tutorial forum. If you ever take requests I think doing some tutorials on the above subjects would be really useful.
 

FrostyCat

Member
Ever seen "Twitch Plays..."?
Like that ... but with code. :eek:
And so what? I'd still brand that as play-and-forget on the most part, and the generality of its applicability still falls far below the other types of products that I proposed for a community-wide project.
 

Kris Hyre

Member
And so what? I'd still brand that as play-and-forget on the most part, and the generality of its applicability still falls far below the other types of products that I proposed for a community-wide project.
I wasn't arguing for it.
Just making a joke about what would come from it. :D
 

GMWolf

aka fel666
And so what? I'd still brand that as play-and-forget on the most part, and the generality of its applicability still falls far below the other types of products that I proposed for a community-wide project.
Yes, I think @Kris Hyre was alluring to the fact "twitch plays _" series are always an absolute mess.

People keep pausing the game, undoing moves...

I think @Kris Hyre is right. All we would do is step on each others toes and get nowhere.
I do think community projects can be useful though. Any of the ones proposed by frosty for example.
They just need someone to get them started. Either by starting some code (but by experience I think they will be left completing it too), or by getting a discussion started.
 

muddman

Member
@Kris Hyre is right. All we would do is step on each others toes and get nowhere.
Despite the example i posted earlier showing otherwise :)

At any rate, I just wanted to chime in that Open sourced software, and that's what we're talking about here, is not only successful, but its wildly successful in the software industry. Being a game has nothing to do with it.

EDIT:
damn keyboard shortcuts for posting...
I don't think @andev's idea was flawed. I think a lot of the same issues with creating a game are going to come up with creating an extension.

@FrostyCat 's asking of what the goals of a community project is worth bumping again. That's really what's going to drive a project forward. It's also why i like the extension idea. It's something that the whole community can benefit from. A game project loses value to the community as they move up (or down) in knowledge.
 

GMWolf

aka fel666
Despite the example i posted earlier showing otherwise :)
The thing is, its not a community project.
It's an open source project. I think it's different.

A forum is just not a great place to have such discussions, especially not the GMC.
We need to have individual issues thread, a way to delegate work, etc.
The best option that would be to use a website like GitHub, or Trello, etc.
But then its not longer a GMC project. Just a project with a couple members from the GMC.

[Edit]
A library however would be easier to be called a community project, if we can have a whole community using and giving feedback, etc. (Still though, it will probably end up being a few people working on it only).

I mean, just look at the number of open source libraries projects that have been started for GM; most of them end up being developed by whoever created it. Because everyone wants their creation to be the one.
 
I've worked with the GameMaker Steam community far too much. Enough to never do it again. People get bored and move on super quick.

Its best I remain an island. I've hired artists and composers from outside the GameMaker community.
 
Last edited:

Wraithious

Member
I know programming can be an intimate balancing art, where anyone contributing largely must have a good understanding of the rest of the project first...

But has anyone tried a community programmed project here? I'm not sure how it would work financially but basically: A final project goal is set out, nothing too ambitious. A parts list is then created for all the code that will be needed, and the functionality / interaction it will be required to have.

So everything would align, there would be a naming standard. If you were making an enemy for instance, it would need to have the agreed variables like "Health" or "Level".

A lot of arrangements would largely determined by the type of game being made, but I honestly think it would be interesting.
That would be a cool idea! Jokingly I posted a project on this forum where you just add stuff to the project, upload it as a gmz and the next person can do the same, but, sadly, no one tried it
 

hogwater

Member
Haha, I had the same idea and recently someone made another thread. That thread is meeting the same fate. I'll add something to yours soon.
 

andev

Member
This is purely my opinion:
But I think a project with no clear goal (just add random stuff lolz) is destined for failiure, because there's just no point. Especially if we are specifically not allowed to change other people's code? Bugs? Inefficiency? Mechanic tweaks? Imagine leaving a canvas with some paint in the middle of the street. By the end of the week, it will just be a completely black canvas with a phallic drawn on it (and a huge mess to clear up).

"Press ; to play a random laser sound" isn't really a stable foundation for a game worth my time (imo), if I'm not allowed to touch existing code.

Sure, you could probably find a way to incorporate it, but before I've even opened the project, I am fighting it. Instead, I propose we start with an actual decent start to a game, and allow people to "improve" it or add new things to it. To make it easier, whoever does the art should add loads of dormant assets for the other people to use. I also think the rule should be:
  • You can modify other people's code in the interest of improving it, tweaking it for balancing, fixing bugs, adding format to it (variable naming schemes) or altering conflicting code.
  • In certain circumstances, you can remove code if it's really bad (riddled with bugs, or unproductive), unnecessary, badly maintained, or simply just counter productive to the goal of the project (troll edits).

There needs to be also a requirement asking that you don't contribute if you're a beginner, or if you do, beware that your code may be removed.

Also omg, screenshots. No one is going to bother downloading, closing their current project, and importing this new file from their downloads, for an idea they were mildly interested in, if they can't see what it looks like.
 
I don't think anyone thinks such a project is just going to become a hit or something. It's more like a fun silly thing for a couple people to throw together, not anything supposed to be organized.
 

Wraithious

Member
  • You can modify other people's code in the interest of improving it, tweaking it for balancing, fixing bugs, adding format to it (variable naming schemes) or altering conflicting code.
  • In certain circumstances, you can remove code if it's really bad (riddled with bugs, or unproductive), unnecessary, badly maintained, or simply just counter productive to the goal of the project (troll edits).
Very valid points, I agree, My initial goal when I posted that gmc gmz hot potato was just for pure fun to see what the game would turn into
 

andev

Member
It's going to be OK andev. Breathe.
:eek::oops: :eek::oops: :D

I don't think anyone thinks such a project is just going to become a hit or something.
It doesn't matter if it's a hit or not because firstly it could never make money (can you imagine negotiating financials after it's been made and already successful?), but it wouldn't even serve as exposure because anyone interested in seeing the developer's other games would have a list of perhaps ~50 people to go through...

I was talking about the other end, getting people to be involved with the creation of it. If it had no hope of ever becoming a finished product, what's the point of contributing? Especially since the process of downloading/opening/reuploading is going to take ~10 minutes.
 
Top