Game Jam OSG Jam

Discussion in 'Community Chat' started by rui.rosario, Aug 30, 2016.

Tags:
  1. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    Hey there GMC!

    It is with approval from the forum staff that I bring to you....

    [​IMG]
    (banner is a courtesy of @TDSrock)

    OSG stands for "One Script Games" and the rules are pretty simple:

    Jam Rules:
    • You must make a game in a single script (no tabbed scripts);
    • The whole script must be created during the Jam time frame (1 week, starting Saturday - September 10 at 00:00 GMT until Friday - September 16 at 23:59 GMT);
    • Submission must be made by PM to me (preferably with the title "OSG Jam Submission") and must contain only the script .gml file;
    • The scripts will be made available as soon as the Jam ends (so make sure you're comfortable with sharing your code) for future reference by everyone;
    • During the weekend of September 17 and 18 it will be the validation period, where all the scripts will be manually checked for conformance with all of the rules (multiple participants may help in this effort for cross validation);
    • If the script is found to not follow the rules, a notice will be made to the developer and the developer will have until the end of the validation period to make the script conform to the rules (no new features, just adherence to the rules, remember your code will be checked)
    • If a script is found to not follow the rules for a second time (after the developer has supposedly fixed it), the script will be disqualified.
    • After the validation period ends, an executable will be made available per script with just one room with one instance in it and the script in the instance's Draw Event (no kind of configuration will be performed, e.g. changing room size. This means Room Setting will be the complete GM defaults);
    • Participants and fellow GMCers will have until Sunday - September 25 to vote for the entry they liked the most (or rank all entries);
    • This is a solo Jam, so no teams (although it would be funny to see a team work on the same script). However, each participant may submit multiple scripts if (and only if) all of them are OSGs that conform to the rules.
    Script Rules:
    • You may not instanciate any object;
    • You may not use instance variables;
    • You may not use global variables;
    • You may not use extensions;
    • You may not retrieve assets in any way (e.g. download them) except if the assets were previously created by the script itself (you may save state across each step in a file, for example)
    • You must state explicitly which portions of the code were auto-generated/copied from other sources. Auto-generation / copy-pasting is only allowed if the tool or source is made available to all participants NOTE: If you make your generators / or copy your code from sourve you made during the Jam then you don't need to signal it as it was technically made within the Jam timeframe.
    • .... (rules are subject to change and adapt according to suggestions, corrections, etc)
    NOTE: I will be compiling the game with GM:S version 1.4.1757, so make sure your script works in this version!

    You can check out an example OSG I made called Pushy!

    Help spread the Jam by placing the following badge (courtesy of @TDSrock) in your signature with a link to this thread!

    [​IMG]
    Code:
    [url=https://forum.yoyogames.com/index.php?threads/osg-jam.6018/][img]http://i1250.photobucket.com/albums/hh534/TDSrock/OSG-promo-badge_zpsm2jtomvx.png[/img][/url]
    REWARDS:

    @Jobo has decided to sponsor this Jam with rewards!! So (for a minimum of 10 participants), the top three winners may choose a game from the following list (1st chooses 1st, ...):
    Winners can contact @Jobo to claim the prize.

    @Bingdom is offering 2000 free coins on his currently released free game called Pixel Kingdom Builder for the top 5. These coins can be used to help progress throughout the game. (Android only).

    He will PM the winners a download link of a modified version of the game.
    The winners will only have to run the modified version ONCE, then you can update the game on google play if there is any.
    Currently, there are 3 save slots in the game BUT, the reward can only be redeemed once per save slot. If you delete a save slot, you can redeem it again.
    If you ever delete the game (APK), you can always get the gift back by installing the modified version and running it at least ONCE

    @Surgeon_ is giving away free copies of his Mercury Engine to the 1st and 2nd places, and free copies of his Turbo Print Parser to the top 5 entries. Prizes will be claimed via PM.

    @Alice will contribute with customized banners for all participants!

    Have fun!!!!

    PARTICIPANTS LIST:

    @Alice
    @chance
    @Coded Games
    @Galladhan
    @JimmyBG
    @Matthew Brown
    @Mike
    @Nallebeorn
    @Nocturne
    @PsychoDelph
    @shadowspear1
    @Surgeon_
    @Threef
    @YellowAfterlife

    You can access the shared folder with the sources and executables on Dropbox or download it directly as a ZIP Archive.

    RANKING:

    In case you're wondering what system I used: I used the system in place for the GMC Jam. If you don't believe me, check out the Excel file I used to calculate the rankings (or the equivalent Google Sheet). You also have all the votes there, so that you can double check if any of the votes mismatch (in case I made a mistake in copying them over).

    And if you haven't opened the excel file, the rankings are........
    1. @Mike
    2. @Alice
    3. @Surgeon_
    4. @YellowAfterlife
    5. @Nocturne
    6. @JimmyBG
    7. @chance
    8. @Threef
    9. @Matthew Brown
    10. @Galladhan
    11. @Coded Games
    12. @PsychoDelph
    13. @Nallebeorn
    14. @shadowspear1
    Congratulations to @Mike, @Alice and @Surgeon_ for the top 3!! But in fact, everyone here deserves a round of applause for the amazing games that you pulled of with just one script. Some participants even learnt new things, so that's even better! :)
     
    Last edited: Sep 26, 2016
    Bentley, 607, ParodyKnaveBob and 19 others like this.
  2. Jobo

    Jobo GMC Member YYG Staff

    Joined:
    Apr 19, 2016
    Posts:
    304
    This sounds like a fun challenge! I'll definitely enter, and hopefully there'll be a decent turnout from the community.
     
    rui.rosario likes this.
  3. Tthecreator

    Tthecreator Your Creator!

    Joined:
    Jun 20, 2016
    Posts:
    715
    Maybe a rule could be not to use dlls/extensions?(kind of falls under the no assets rule already)
    Another rule could be one script, no tabbed scripts allowed.(would count as another script)
    Would constants/macros be allowed? They make things easier but aren't really assets.

    What I like is that you'll need abstract drawing functions to make what you want. You cannot really import sprites. (unless you sneakily make something with draw_point and a constant string)
     
    rui.rosario likes this.
  4. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    I believe that falls under the rule, but I'll make it explicit :)

    Thanks for reminding me of tabbed scripts! Although they would be exported as different scripts, so it would fail the validation, but I'll make it explicit.

    Technically the only thing that will be made will be adding the script to the object in the draw event, no other setup will be performed (that includes macros). You can, however, use enums (not exactly the same, but for most cases it is enough).

    Yes, part of the challenge is coming up with several ways to bypass those features :p
     
    Tthecreator likes this.
  5. ShaunJS

    ShaunJS Just Another Dev GMC Elder

    Joined:
    Apr 12, 2016
    Posts:
    148
    Up for this if I find some time free, it's an interesting one!
     
    Heat4Life and rui.rosario like this.
  6. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    Good to see people are engaging the Jam!
     
  7. Galladhan

    Galladhan Member

    Joined:
    Jul 1, 2016
    Posts:
    119
    Very nice idea! Limits always stimulate creativity :)
     
    rui.rosario likes this.
  8. Nocturne

    Nocturne Friendly Tyrant Forum Staff Admin

    Joined:
    Apr 13, 2016
    Posts:
    6,345
    I shall be trying to create something for this... I've been away from GMS this last couple of weeks, and this seems a great way to get me warmed up and back into using it again. :)
     
    rui.rosario likes this.
  9. Yal

    Yal Member GMC Elder

    Joined:
    Jun 20, 2016
    Posts:
    3,312
    *rubs chin* I don't quite like how this approach forces you to draw stuff in a loop, basically, since you can't initialize stuff the first step and then do other stuff the following ones. It makes the game stop responding, more or less.


    Actually, I realized an approach. score, lives and health all are initialized to default values on game start (I think they start at 0, 3 and 100 respectively, but I'm only sure about score), so you could check either of them has the default value, and if so initialize your game, otherwise run your actual game code. (You could also check whether the instance running the code is on its start position, or anything using its local variables, I guess)
     
    rui.rosario likes this.
  10. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    Hey @Yal, if you see my example you can see I used a file to check if the game was initialized or not (with the added bonus of it acting as a save file as well :p).

    About the drawing stuff, you could create all your sprites manually on a surface on game start and save it to a buffer and to a file, and then load the surface back up. It would have some associated cost, but it could make the game more responsive than drawing everything on a loop
     
  11. Surgeon_

    Surgeon_ Symbian Curator

    Joined:
    Jun 22, 2016
    Posts:
    248
    According the the rules, you may not use global variables.

    By the way, I'll be joining the Jam :)

    EDIT: I already kind of know what kind of a game I'll be making - and then... You'll know the true meaning of complicated...
     
    Last edited: Aug 30, 2016
    rui.rosario likes this.
  12. Heat4Life

    Heat4Life Member

    Joined:
    Jul 7, 2016
    Posts:
    288
    Rewards? lol
     
  13. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    Skill and fame? :p
    Maybe a banner or two but no promises
     
  14. Heat4Life

    Heat4Life Member

    Joined:
    Jul 7, 2016
    Posts:
    288
    When I win, I want a banner lol please? :p
     
  15. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    I'll see if I can get someone with graphical skills to do it (or else I'll do it.... but it won't be good xD)
     
    Heat4Life likes this.
  16. GMWolf

    GMWolf aka fel666

    Joined:
    Jun 21, 2016
    Posts:
    3,184
    Happy to see this is on!
    I've already been working on code to generate sprites and all :)
     
  17. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    It's nice to practice (I've been developing another OSG myself, more complex than the Pushy example), but don't forget the whole script must be made during the Jam time!
     
  18. GMWolf

    GMWolf aka fel666

    Joined:
    Jun 21, 2016
    Posts:
    3,184
    oh? so i cant copy paste some bits of code i made?
    What about if i make a tool to generate some code?
    I was working on a system to create full texture pages and vertex buffers from strings...
     
  19. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    Well.... it would be fair only if you did it and shared it with the rest of the participants (so you don't have an advantage over them). If you do that, then I'll post it in the first post as well so everyone can use it for themselves.

    EDIT: I'll also add a rule in which you have to state which portions were auto-generated/copied (you can copy on the same grounds: the code is available to be copied by everyone).
     
  20. Big_Macca_101

    Big_Macca_101 Member

    Joined:
    Jun 20, 2016
    Posts:
    114
    If we aren't able to use instance variables, are we able to make use of saving files?
    Similar to how you have your example using buffers but i mean just to store data, can't wait!
     
  21. GMWolf

    GMWolf aka fel666

    Joined:
    Jun 21, 2016
    Posts:
    3,184
    So what you are saying is, i can make my OSG engine, and as long as i share it, i can use it for the jam?
     
  22. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    Yes, you can't use instance variables because they would transition state from step to step without you needing to do anything. You can however use files and data structures to do everything else (you can theoretically even hard-code a reference to a data structure, in order not to recreate it each step.... but I advice against it)
     
  23. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    If no one here opposes that thought, then yes. As long as all participants have access to the same tools / sources then it becomes a matter of which ones the developer chooses to use. I added the rule to make the generated / copied code explicit so that voters can also choose to judge on whether or not the code was generated or copied.
     
  24. Surgeon_

    Surgeon_ Symbian Curator

    Joined:
    Jun 22, 2016
    Posts:
    248
    You know, the whole point of this is how people manage to organize themselves in such a strange and constrained environment, and if there are "engines" to circumvent all of those obstacles then what's the point? So I'm against this sharing thing. If @Fel666 made his code generator, then good for him. But let others either make their own generators, engines and so on... Or just let them suffer in confusion. We'll at least see more diversity like that.
     
  25. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    True, in that case I'm keeping the generated / copied code annotation as mandatory, but you use your own resources at your discretion.
     
  26. TehPilot

    TehPilot Member

    Joined:
    Jun 20, 2016
    Posts:
    80
    This is a challenge that tickles my programming fancy. I'm already working out how to do some interesting things with the code in my mind.

    Just to clarify: no other resources such as sound, music, etc. - it all has to be generated from within the one script?
     
  27. GMWolf

    GMWolf aka fel666

    Joined:
    Jun 21, 2016
    Posts:
    3,184
    yeah, thats the idea.
    I was trying to mess around, generating textures from strings though, and that got messy really fast. (especially since buffer_get/set_surface seems bugged).
     
  28. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    Yes, you may end up using sound and music, but only if you can generate it within the script.
     
  29. Nallebeorn

    Nallebeorn Member

    Joined:
    Jun 20, 2016
    Posts:
    219
    This sounds very interesting! I think I'll join this. So, with no global or instance variables, pretty much the only way to store data persistently across steps is by writing to a file, eh? Which is kind of slow (at least for HDD users like me), but I guess you can get quite a long way by just feeding get_timer() into functions and algorithms.
    And this will give me a good excuse to try out procedurally generating audio.
     
  30. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    You can actually get a long way just with files, but of course that it will have a toll on the game, so other inventive ways can arise from the Jam!
     
  31. GMWolf

    GMWolf aka fel666

    Joined:
    Jun 21, 2016
    Posts:
    3,184
    Another way to do it is to refference a map at index 0.
     
  32. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    I wouldn't go very far with that approach, one wrong move and you may be pointing to a completely different map (that may even not exist). Although with care it can be achieved.
     
  33. GMWolf

    GMWolf aka fel666

    Joined:
    Jun 21, 2016
    Posts:
    3,184
    Its what i have been working with. It has the advantage of being faster than a file. But yes, it is possible to mess it up if you delete the map. So long as you dont (and GMS doesnt get updated to use types and pointers), it should all work fine.
     
  34. Nallebeorn

    Nallebeorn Member

    Joined:
    Jun 20, 2016
    Posts:
    219
    @rui.rosario, you should probably specify the GM version we're supposed to use, to make sure there are no incompatibilities between the version you build with and the version we use to test.
    Or mention that we should specify what version we used when sending our scripts, if you can stand having to switch when compiling all the games. GameMaker isn't always backward-compatible, after all.
     
  35. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    True, I'll update the main post with that information (and to keep it free-users friendly, I'll use the version of the latest downloadable executable). Time to download GM to see in what version it is!
     
  36. Alice

    Alice Toolmaker of Bucuresti Forum Staff Moderator

    Joined:
    Jun 20, 2016
    Posts:
    675
    Maybe there should be distinction between generators made before the Jam time and during it? Generally, I think someone who writes their generator in the Jam time doesn't have that much advantage compared to someone who made it during the Jam.

    On a side note, I really wouldn't mind if the "template" came with a font, and a "draw_set_font(...)" call before calling the script. I dunno, I'm just not quite fond of the default font used by GM, and I don't even know if it's consistent across different users or what...?

    (come to think of it, maybe if there were variations of OSG Jam in the future, they would come with different templates, different ranges of variables etc., and the template proper would be released at the beginning of the Jam?)

    Also, there might be some symbolic trophies for this Jam, maybe...? :rolleyes:
     
  37. GMWolf

    GMWolf aka fel666

    Joined:
    Jun 21, 2016
    Posts:
    3,184
    Well, turns out writing an OSG engine is a lot of work. and working with the engine isnt that easy anyways (it being a big large script and all).
    I think ill just stick to writing all of my code during the jam :)
     
  38. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    Good ideas @Alice!!

    Yeah, symbolic trophies are always nice :rolleyes:
     
  39. GMWolf

    GMWolf aka fel666

    Joined:
    Jun 21, 2016
    Posts:
    3,184
    not to mention some targets need a default font.
    That does give me an idea: ascii based game!
     
  40. Nallebeorn

    Nallebeorn Member

    Joined:
    Jun 20, 2016
    Posts:
    219
    Pretty sure it's consistent, the manual even specifies it's 12pt Arial.
    I don't really think there should be an alternate font bundled – it doesn't really make much sense to make an exception just to replace the default font with another default font, what's the point? And after all, if you can draw graphics through the script, you could draw text with custom fonts as well. =)
     
  41. GMWolf

    GMWolf aka fel666

    Joined:
    Jun 21, 2016
    Posts:
    3,184
    Not defining a font works on windows, but try it on HTML5. it doenst work...
     
  42. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    I agree, so for this version no template will be made, but if people like the idea then there can be further OSG Jams with multiple templates, like @Alice said, besides the "pure" no-template jam.

    All executables will be Windows executables, so that problem only occurs if you intend to release your OSG as an HTML5 game, in which case you'd have to build it so you could set the default font.
     
  43. ShaunJS

    ShaunJS Just Another Dev GMC Elder

    Joined:
    Apr 12, 2016
    Posts:
    148
    By instance variables do you just mean things like x,y,speed and so on?
     
  44. Cantavanda

    Cantavanda 〜Flower Prince〜

    Joined:
    Jun 23, 2016
    Posts:
    67
    I don't even know how to code a menu
     
  45. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    Yes, and also any user-defined instance variable

    Nice way to practice then :p
     
  46. TDSrock

    TDSrock Member

    Joined:
    Jun 29, 2016
    Posts:
    312
    I might be able to help out on that end. It's just been a while since I did anything in PS.
     
  47. Yambam

    Yambam Member

    Joined:
    Jun 21, 2016
    Posts:
    82
    That's strange. What are the alternatives then?
     
  48. Nocturne

    Nocturne Friendly Tyrant Forum Staff Admin

    Joined:
    Apr 13, 2016
    Posts:
    6,345
    That's part of the challenge... thinking up alternatives. ;)
     
  49. Juju

    Juju Member

    Joined:
    Jun 20, 2016
    Posts:
    380
    You should change this to 1.4.1760 as that is (as of 30th Aug) the most recent beta.
     
  50. rui.rosario

    rui.rosario Member

    Joined:
    Jun 21, 2016
    Posts:
    476
    Anyone who wants to add banners / badges is welcome! The maximum that can happen is having multiple badges/banners per person :p



    Or as @Nocturne said, that's part of the challenge .P


    I think it's best to keep it on the stable versions.
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice