Smaller scope challenges in addition to the BGMC?

I am on lunch here at work and letting my mind wander a bit and I got to thinking about how it often seems that due to scheduling I am unable to participate in the BGMC as they come up. Then I thought it would be nice if there was something a bit smaller scope for a challenge, but still over the course of a week. It could be anything resource related to the BGE:

  1. Effects - explosions, cinematics (screen wipes, fades, transitions, etc), other.
  2. AI stuff - “Drop in” behaviors in logic bricks/python
  3. Managers of various kinds for say lighting, object spawning, inventories, etc…
  4. Character animations on a standardized basic humanoid rig that could be ported to many models and tweaked.
  5. Static environmental objects of various categories (just to work on modeling and texturing)

The list could go on and on. This way we could challenge ourselves to make the best “thing” we could in a week without the daunting scope of a whole game. Submissions could be judged on how easy they are to integrate into existing projects, how easily they are to configure and tweak options of, or how well they are crafted such as with animations. And anything submitted can be open for the community to use and learn from.

Any thoughts?

For this to work, any content should be easily reusable in other games. It is a problem because in BGE templates usually doesn’t work outside of a project, for example all the code of KRUM is useless in newer projects because it is made for Blender 2.49. Systems based on logic bricks are also useless because to make them work in another project the other project configuration (ObjectNames, ScriptNames, etc) must be the same, and you can have name collisions, wire webs, hidden logic and unknown folklore magic all around making any preset based in logic useless.

For example imagine someone makes a cool system for a camera that follows the player. In order for the camera logic bricks to known who is the player the player must have a property. To apply this you should add a property to your game player. But you don’t known this if no one tells you, maybe you were already using that name for something that you don’t even remember, maybe you want to change how a part of the logic of the camera works but since nothing is encapsulated you don’t even known how to start.

Ideally this should be done in such a way so that you can extract whatever preset you’ve done in a game folder and it just works, without need of any extra configurations, and so that you can known where to look for anything inside a preset. For that you also need a folder structure, and ideally a framework. Welcome to BGECore Framework.

I will let here a list of simple rules that I think should be followed:

  • Whatever you do must be compatible with last Blender version.
  • All scripts must be external to the .blend
  • All your work must be compressed in a folder, not in a .blend, you can use multiple .blends
  • A readme.txt file is a MUST.
  • Things must be designed to be append/linked or loaded at runtime (and the design must be specified in the readme.txt)
  • Whatever your work is, it must be optimized to work at least in a mid-spec computer at 30 fps.
  • Use GLSL, Multi-texture is deprecated.
  • You should be able to install the preset by just reading the readme.txt, the readme must also contain a list of any dependency the preset may have, the license, and the author contact info.

And some example of how everything should be packed and installed would be also good.

Actually I think that using BGECore Framework as the base would be great, since contributions could be added to next releases of the framework and it already implements a lot of functionality and organization. But even if you don’t agree with using BGECore, at least some sort of rules is absolutely necessary.

I started other “add-a-thing” challenges in the past (e.g. [Add a Thing - outdoor environment](Add a Thing - outdoor environment)).

They were designed to create reusable content. The contributions were [linkable libraries](BGE Guide to linked Libraries).

The first add-a-thing challenge were pretty successful. The followups failed due to lack of contributions (I guess it was a bit too complicated at that time).

I planned “Sci-Doors” a long time ago, but never completed the frame work (I was thinking too big about it :D). The basics already exists. If we can live with a simple presentation layer we could start right now.

If you want I can prepare a small start-up project.

How about creating a repository on github?
This avoids fiddling with the three attachment limit. You can even maintain your contributions after publishing. For pushing you need an account (not for cloning). Readers who do not want to use git can download a zip file. As side effect contributors can learn how to deal with larger projects and working in a team (light).

I think this topic allows both - artistic contribution and behavior contributions. I have a working door controller (inclusive tutorials), that can help pure artists to create doors without adding any logic brick.

What do you think?

Getting late here so I don’t have a lot of time to take a look at the Add-a-thing concept… though I think the idea is a good one from the quick glance it does seem a bit complex to handle properly.

@elmeunick9

It is true that I would hope that things should be reusable easily and part of the criteria in judgement at the end of the competition period would be how easy is it (whatever it is) is able to be imported into another project. And models and animations that are just a rig should be trivial to import into any project. But I am not sure I understand or agree with your list of rules such as not packing files in a blend or keeping scripts external. Users should be able to learn from scripts and logic bricks if the creator keeps the code clean, comments a lot, and includes a bit of help in readme to explain why and how things work. Either way I am not talking about implementing huge things in the competition period; the exact opposite in fact. Anything submitted would be concise and quite limited in scope to make it easier to actually produce something, even if it is just one thing, in the week.

I really like Downshifts idea. Thouse competitions should have a very limited scope, maybe a week is already too long. One weekend would be sufficient. It should be just one task at a time that has to be performed as best as you can.

For example we could do a level design challenge where everyone gets a blend file with the same premade level mesh + a linked in set of blueprints (vegetation, Crates, houses etc.) that you have to add and arrange in order to make it look pleasing to the eye.

I think a level-making contest

You get the framework for a game (Eg maze) and have to make levels for them. Whether you make lots of levels or just a few doesn’t matter. Then the levels get voted on.

I like the idea of a level making contest. This could be a good way to to get something done together. But this requires a good Framework.

If we decide to to this we maybe can split the contest into two parts: One where the participants submit a rough prototype of a game framework. Then we vote which Framework we use for the second part (the level contest itself).

And i think there should be some time between these contests where the community together refines the framework (Maybe under leadership of the winner).

Just some ideas …

Sounds a bit like chicken or the egg causality dilemma.

We need at least a small framework to start with.

How about an ongoing challenge? Each challenge brings the framework one iteration forward. The winner is the start point of the next iteration.

This can distribute even further. Several results of the asset creation contest might remain. This way there are more options on level creation contests.

I think that a week a good amount of time. I’m sure that making a professional looking character with a complete set of animations from scratch takes at least a week. The same happens with code. A good module, well designed, free of bugs, and with plenty of features also takes at least a week.

@DownshiftDX

  • not packing files in a blend or keeping scripts external

If you do have say 10 scripts inside the blend, and you want now to reuse them, you have to create and copy paste the new files. If you make a game project that consists on multiple .blend files (and all game projects should actually be like that), packing scripts inside the blends will probably mean that you have copies of the same code all around (horrible design). For coders, using a version control system is a must, and binary files (.blend) doesn’t support it, so you need external script files. With external script files you can also use your own Python IDE, etc…

Basically there is a bunch of reasons, but the most important I think is re usability. The same texture may be used in 2 different blends, you either have multiple copies of the texture inside the blends or use the same external texture (second is better). Using the external you can even edit it with GIMP, save it, and the changes will automatically be applied to all .blends of the game.

Packing files in a .blend also means that someone could forgive to add the readme.txt file.

Note: Keeping scripts external means in separate files, not out of the contest, users will be equally able to learn from them. I’ve already spoken against logic bricks, why bother to learn about them when you can learn Python and do the same but better?

It’d be very interesting if this sort of competitions can help establish some sort of “standard” in tackling certain problems(coding/animating etc) for the community, I don’t mean all games should be made with the same “standard” but there are things like mouselook/movement/AI and stuff that are recurring and could be REUSABLE* yet they can still be handled/customized very very differently in each cases depending on the game it’s made for

Like does anyone recall who sets the standard for this function name? :smiley:


def main():
    print('Beware of Monster')

main()

That’s what BGECore tries to do: http://bgecore.royalwebhosting.net/behavior.html#preseted-behaviors

Since people is suggesting to use a framework I of course propose BGECore Framework, I’m willing to help and give support to anyone who wants to give it a try.

I do not think there will ever be a standard. The idea of the BGE is to allow your own way.

But the challenges allow to see various individual solutions to the same requirement. This way the community can choose whatever they like. A user does not need to use the winner.

This way we can get a wide diversity in different solutions.

Beside of that it allows each of us to evaluate different methods before using the first one that seams to work.

I’d like to see this if/when we get python components in master.

@DownshiftDX

  • not packing files in a blend or keeping scripts external

If you do have say 10 scripts inside the blend, and you want now to reuse them, you have to create and copy paste the new files. If you make a game project that consists on multiple .blend files (and all game projects should actually be like that), packing scripts inside the blends will probably mean that you have copies of the same code all around (horrible design). For coders, using a version control system is a must, and binary files (.blend) doesn’t support it, so you need external script files. With external script files you can also use your own Python IDE, etc…

Any assets can easily be brought into any new blend anybody makes simply by appending or linking. And yes version control is important, especially on a large project but that is not what I am suggesting here. Nothing that I am envisioned with this should/would have 10’s of scripts to include unless somebody was a mad genius and decided to go totally overboard for a week. (But hey anything is possible.) I am also not saying that I disagree with keeping things external to the blends, I just don’t think it should be required for the purposes of the competition.

I have tried using external python IDEs with Blender and gave up because I found it frustrating. Blender could certainly use code completion and a few other things but I really don’t mind the distraction free integrated text editor.

Note: Keeping scripts external means in separate files, not out of the contest, users will be equally able to learn from them. I’ve already spoken against logic bricks, why bother to learn about them when you can learn Python and do the same but better?

I don’t understand why there is this distaste for logic bricks. I use both python and logic bricks. Sometimes I have an easier time figuring out how I want to do something like handle animations playing by using logic bricks. Sure I think there is a lot of room for improvement of the logic brick system but they both serve a purpose. (Really, why use python and the BGE when you could just code your own engine from scratch in C/C++ and “do same but better”?)

I am also not saying that I disagree with keeping things external to the blends, I just don’t think it should be required for the purposes of the competition.

It should, it absolutely should. Is either that or make them external manually every time you want to use something.

I have tried using external python IDEs with Blender and gave up because I found it frustrating.

You have not tried Notepad++, Nor Atom, nor Sublime Text. You have not tried a version control system either, and I bet that you don’t document your code either. This indicates how much of a professional programmer you are.

I don’t understand why there is this distaste for logic bricks.

And you won’t even if I explain it to you. Maybe someday, it will be too late tough, all the contributions will be already done in logic bricks.

(Really, why use python and the BGE when you could just code your own engine from scratch in C/C++ and “do same but better”?)

Actually, you’re right, fuck you BGE.

This can be done in the mean-time with a small add-on

The above post does not add any value to this topic. You expressed your opinion before. There is no need to go away from providing objective arguments turning into subjective aggression.