2018-07-24:

Gynvael's Summer GameDev Challenge 2018

gsgc:compo:competition

For some reason it's summer in the northern hemisphere. This means it's time for another gamedev challenge - a game programming competition where the rules are made up (by me) and the limitations/constraints put in place are pretty challenging. And, as previously, there are rewards as well!

Without further ado, welcome to the GSGC2018!

P.S. If you like this challenge, please help me spread the word around - there were 13 submissions last time, let's aim at beating that record :)

Constraints:
Create a game that meets the following requirements:
• The game is a single-player real-time shooter.
• The game is made in client-side web technology that runs by default on the newest stable Chrome on Windows 10 (1803) - yes, that means HTML/CSS, JavaScript and/or WebAssembly (C/C++/etc).
• The size of the whole game (i.e. sum of sizes of all the files) is at most 31337 bytes (everything, including all art, fonts, etc).
• All the game files and directories must use the 8.3 filename format (i.e. 8 letters for the filename and 3 letters for the extension or less). There cannot be more than 20 files + directories in total. EDIT (2018-08-04): Minor exception for the 8.3 naming - feel free to use .html and .wasm extensions as well (but only these two; the 8-character file name limit still applies in these cases).
• The game renders all displayed graphics into one canvas element that has exactly 360x400 pixels in resolution (i.e. 360 pixels wide, 400 pixels high). The canvas must be stretched to fill the whole window (100% width, 100% height). Please note that this means individual pixels will be rectangular (like bricks), almost 2 times more width than height. EDIT (2018-07-24): Please add 'image-rendering: pixelated;' to your canvas element's CSS style - this is how I will test each game, with canvas being pixelated. EDIT (2018-08-05): Example HTML file with proper canvas settings: gsgc2018.html (ctrl+u for source), screenshot on fullscreen.
• The canvas cannot display more than 32 distinct colors at the same time.
• The text in game, if any, must be in English.

Contest related rules:
• Submission deadline is 2nd of September 2018 at 11:59pm (23:59) CEST (i.e. GMT+2) - please mind the timezone!
• Games must be submitted by sending a link to a downloadable package (hosted e.g. on Google Drive or something similar) and SHA256 of the package (see FAQ on how to get SHA256 of a file, it's at the bottom), to the following e-mail address: gynvael+summer2018@coldwind.pl (please also add a comment under this post to confirm that you've sent an e-mail - otherwise I won't know that I didn't get an e-mail and can't debug it).
• Source code and all the scripts used to build the game MUST be included in the submitted package (alongside the ready-to-test directory with the game). By submitting the game its author(s) agree to the game being re-hosted by me for anyone to download and test once the competition is over. I won't be doing anything weird with the game after the competition, but I want participants to learn from each other after the compo is over.
• If you are using assets/sfx/music/etc created by someone else, please make sure their license allows you to use them for commercial purposes and redistribution. Please note that some licenses require proper attribution - be sure to meet these requirements.
• Games not following the rules/constraints will not be able participate in the competition.
• When in doubt, ask in the comment section below.

Prizes:
All prizes will come in a form of a giftcard for either amazon.com / .co.uk / .jp or .de, or steam (author's choice).
In some cases I might agree to the winners request for a giftcard at a different internet store, but this will be considered at a per-case basis.

Best Game Award:
Top 1: 200 USD (or equivalent in different currency)
Top 2: 150 USD (or equivalent...)
Top 3: 100 USD (or equivalent...)
Honorary awards (if any): 50 USD (or equivalent...)

How will the games be judged:
Best Game Award:
• There are no written-in-stone rules about that, but...
• I'll focus on the overall game quality (gameplay/is it fun to play, aesthetics, graphics, sound, etc).
• I will totally ignore source code quality - please focus on the gameplay/etc. If the game crashes, but is in general playable (i.e. crashes are rare), I'll ignore the crashes too.
• One of my PCs must be able to run the game smoothly (I will test the game on one/both of the following specs: i7 8-core/16-thread 128GB RAM with GTX 980 Ti and/or i7 4-core/8-thread 32GB RAM with GTX 1080 Ti).
• I will generally try my best (including consulting the game author if needed) to make sure that the game is running as intended by the creator, as long as eventual patches / resubmissions are within the deadline mentioned in above sections.
• If I will invite more judges to participate (e.g. if I feel the need for a second opinion or it turns out half of my family is taking part in the competition) they will follow the same guidelines.

Hints, protips, random thoughts:
• Be sure to remember about the game having some sound effects. Music is a nice-to-have, but I don't mind if it's not there.
• Browse through OpenGameArt.org and similar sites - you can find good quality art there.
• Browse through the FAQ section below - there are some additional hints / explanations there.
• Look at older / indie games for inspiration.
• You might also want to take a look at an archived video of this livestream - #46: How to approach competitions.
EDIT (2018-07-24): You might want to add 'image-rendering: pixelated;' to your canvas element's CSS style - this is how I will test each game, with canvas being pixelated.

FAQ:
Q: JavaScript? In Chrome? Seriously?!
A: Yes. Think of it as a challenge! Also, with a little bit more tinkering you can use e.g. C++ or Rust and compile it to WebAssembly (there are tutorials out there on how to do connect WebAssembly with canvas, or how to minimize the size of a WebAssembly binary output file).

Q: But I don't know JS...
A: Isn't this a great opportunity to learn then? Also, see the above note on WebAssembly.

Q: People who know JS have a HUGE!!1 advantage.
A: Please note that I won't be looking at the source code of the game, but at the game itself (the gameplay, the overall feel, the aesthetics). And somewhat (un)surprisingly, you can win a gamedev competition without being an expert in a given programming language.

Q: Can my game download something from the Internet?
A: No. The test machine(s) will not have any network connection.

Q: Can I grab resources which are by default on the disk?
A: This won't work. The game will be hosted on a local HTTP server before testing, and the server will be set in such a way that only the files from the game directory will be served (i.e. the ready-to-test package mentioned above).

Q: So if I create a symlink that resides in the game directory but points to a resource in a different part of the filesystem...
A: No. Assume that symlinks won't work. Don't use them.

Q: What will be MIME types of the served files?
A: Whatever you need them to be - feel free to write down special requirements in a readme file. By default I'll rely on simple extension to MIME mapping, maybe with some help from libmagic.

Q: Can you add this specific HTTP header to be sent with some files?
A: No. No additional headers I'm afraid.

Q: Will your HTTP server send any Content-Encoding headers (gzip/br/deflate/etc)? I.e. can we benefit from HTTP transport encoding (compression) possibilities with regards to the file size limit?
A: The server will not send any Content-Encoding header at all. As far as I have previously tested Chrome DOES NOT attempt any decompression algorithms in such case. So no, this will not work.

Q: What if let's say... I have a trick that actually makes newest Chrome decompress such compressed data stream?
A: Should be fine, but please contact me first so I can double-check this.

Q: Why the file number / file name length limit?
A: The file name (especially of the main .html file) can be used in a clever way to bypass the size limit. Let's not go there this time.

Q: Does "20 files + directories" mean 20 files and 20 directories?
A: No, that would be 40. The number 20 stands for the total number of both files and directories (so e.g. '10 files and 10 directories', but not '11 files and 10 directories').

Q: What fonts do you have installed on the test machines?
A: Assume the default (i.e. fonts present after the operating system is newly installed). If you need to use any more fonts be sure to embed them in the submission (keep in mind the size limit though).

Q: Can I use any minifier / this custom compression trick I know?
A: Sure. As long as it works on the newest stable Chrome on Windows 10 that's fine with me.

Q: Will this one specific feature be enabled in the browser during judging?
A: Please ask in the comments - I'll check. A safe rule of thumb is to assume only the features which are enabled by default in the newest Chrome version (at the moment of judging) are actually enabled, and no other features are.

Q: Will WebGL / Webassembly be enabled in the browser during judging?
A: Yes (these are enabled by default).

Q: Will the Same Origin Policy be disabled?
A: No, it will be enabled.

Q: Can my game be a Chrome Extension / Plugin?
A: No. The game must basically be a standalone website.

Q: Are Flash / Java Applets enabled?
A: No.

Q: Can I use this one specific library/engine/etc in the competition?
A: If the given library's/engine's/etc's license allows using it for commercial purposes and redistribution (without others having to pay any fees), then it's OK to use it. Please remember that its size still counts towards the 31337 byte limit and that the file names / directory names must adhere the rules.

Q: 31337 bytes? That's not a lot...
A: It's enough :) Size optimization is quite fun and there is a multitude of ways to approach this.

Q: When will the results be announced?
A: September or early October. I'll try to be as fast as possible, but it does usually take some time (it also depends on submission count).

Q: I never took part in any gamedev compo like this. Can I still participate?
A: Sure! It's a great learning experience!

Q: Can I blog / tweet / livestream the making of my game?
A: Sure. Keep in mind that you will be revealing your ideas to other participants this way (it's within the rules to do it though).

Q: Can I create a game with my friend(s)/team/etc?
A: Yes!

Q: My friends are graphic/music/etc artists, can they help me?
A: By all means!

Q: Does the game have to explain the basics ingame, or can a simple guide/manual be part of the submission?
A: It doesn't have to be in-game - a readme.txt or a similar guide attached to the submission is fine. This manual won't count towards the limit.

Q: So, can the game load the readme.txt file and use resources/code hidden in it?
A: No, the readme.txt is not part of the submission per se and so the web server will not allow the game to download it.

Q: 32 colors only?
A: 32 colors at once. I.e. on one frame there can be a total of 32 different colors (distinguished by their 24-bit RGB values) at most. However you can change which colors you display between frames.

Q: So... I can have e.g. 32 greens on one frame, and then switch to 32 reds for the next frame?
A: Correct. As long as on a single frame there are no more than 32 distinct colors, we're good.

Q: What about text anti-aliasing? That might add additional colors...
A: Be sure this is properly handled in your code. There must never be more than 32 distinct colors on a frame.

Q: What size will the browser window be when testing?
A: I will test on full screen (F11) on either a 1920x1080 LCD, or a 4K one.

Q: That's a pretty weird resolution btw. 360x400? What's up with that?
A: Surprisingly, there were games in the past that used similar resolutions.

Q: I would like to become a sponsor to make the awards more awesome!
A: Sure, get in touch :) (you can find my e-mail in the About section)

Added 2018-07-25:
Q: Can I add a CSS background-image/background-color/etc to the canvas?
A: No. As the rules say, all the graphics must be displayed on the canvas (therefore it must be fully opaque, i.e. cannot be transparent in any place).

Q: What's SHA256? How to get SHA256 of a package?
A: It's a short SHA256 is a (256-bit) number calculated out of a data set (e.g. file). Basically you give whatever-tool-calculates-it a file as input, and it gives you the number as output. The number is semi-unique for each content of the file, and it's pretty hard to fake the number or have another file (with different content) generate the same number by accident (i.e. it's proof that your package didn't change after submission and I can use it to verify if the file was downloaded correctly).
An example SHA256 looks like this: 559aead08264d5795d3909718cdd05abd49572e84fe55590eef31a88a08fdffd (that's SHA256 of a file containing single letter A).
To calculate SHA256:
- on Linux/OSX run (in a terminal): sha256sum game_package.zip
- on Windows run (in a terminal): certutil -hashfile game_package.zip sha256
(assuming that the game_package.zip file is the game package you want to upload and submit for the competition)
If none of the above work for you, it's quite easy to google out another tool to calculate the SHA256 of a file :)
NOTE: If you're re-submitting a newer version of the game, you need to send me the new SHA256 as well.

See also the comment section for possibly more questions and answers. Feel free to also ask there if you have any questions.

Final words
Have Fun, Good Luck!

Comments:

2018-07-24 02:33:17 = Luke
{
What do you mean by a single-player real-time shooter? Do games like Portal and bubble shooters count?
}
2018-07-24 08:31:16 = Gynvael Coldwind
{
@Luke
As long as the gameplay includes shooting a projectile/laser/whatever by the player, I'm happy to say it's a shooter.
}
2018-07-24 10:43:43 = Kogai
{
Is the upper limitation of game size (31337 bytes) includes a size of source code?
For example, the game running as WASM, could we exclude file size of C source code?
}
2018-07-24 11:03:25 = Gynvael Coldwind
{
@Kogai
The upper limit includes all the files necessary to run the game. If, e.g. in case of WASM, the source is not needed to run the game (only the binary output files are), then the source does not count towards the limit.
Same in case of e.g. JS and minifying the source code - the input files don't count towards the limit (since they are not needed to run the game), but the output files (minified files) do.

Answering this from a different perspective - only file that need to be served by the web server count towards the limit.
In the game package please have a ready-to-test directory with these files (and the sum of their sizes cannot be more than 31337 bytes).
}
2018-07-24 18:38:34 = LuoXiahong
{
360 x 400 into 1920 x 1080 (or 4 times bigger) that means we can treat every 0.1875 (or div 2) of original pixel like 1 pixel horizontally and 0.(370) (or div 2) of original pixel like 1 pixel vertically ?
}
2018-07-24 18:49:16 = Gynvael Coldwind
{
@LuoXiahong
Uhm, 360x400 pixels means exactly 360x400 pixels. This is the size of the canvas a game submission must have. And that canvas must be stretched into full window size using standard HTML/CSS methods (ideally with image-rendering: pixelated;, but I'll make sure that the browser does that).
}
2018-07-25 11:58:03 = Newbie
{
What is SHA256? Just asking.
}
2018-07-25 12:19:15 = Gynvael Coldwind
{
@Newbie
It's a short (256-bit) number calculated out of a data set. Basically you give whatever-calculates-it a file, and it gives you the number. The number is semi-unique for each content of the file, and it's pretty hard to fake the number or have another file (with different content) generate the same number nu accident.
On Linux you can just do sha256sum filename.zip. On Windows you usually need some tool to calculate it for you. I'm pretty sure there are websites that calculate sha256 of an uploaded file too (though be careful not to upload anything sensitive to it).

Example:
File containing letter 'A' has SHA256: 559aead08264d5795d3909718cdd05abd49572e84fe55590eef31a88a08fdffd (the number is commonly expressed in hexadecimal form and commonly called a 'hash', though that's not fully correct, but whatever)
File containing letter 'B' has SHA256: df7e70e5021544f4834bbee64a9e3789febc4be81470df629cad6ddb03320a5c

Trying to come up with a file with different content than 'A' or 'B' that produces one of the above hashes is mathematically hard (i.e. no one has proven to be able to do it for SHA256 yet).

See also: https://www.youtube.com/watch?v=5Vjc4H15ef0 or https://en.wikipedia.org/wiki/SHA-2
}
2018-07-25 13:46:13 = Pa
{
Won't index.html break 8.3 file format rule? Or should one use index.htm extension instead?
}
2018-07-25 13:59:05 = Gynvael Coldwind
{
@Pa
index.htm should work, but I don't mind a single file named index.html in case someone misses this; the naming rule is to prevent using file names as data carriers (as per FAQ), not ban folks who forgot to change 'index.html' to 'index.htm' :)
}
2018-07-25 21:30:42 = Vassildador
{
Hey Gynvael :)

Happy to join your dev challenge again! Unfortunately it overlaps quite a bit with my vacations, but I'll attempt to achieve something nevertheless :D

The "The game renders all displayed graphics into one canvas element" rule confuses me. Does this mean we can't have any CSS other than the image-rendering mode and height/width stretching? I'm thinking a background color, image or something similar "behind" what my canvas renders in its context :)
}
2018-07-25 22:05:51 = Gynvael Coldwind
{
@Vassildador
Welcome back! I guess you're defending the title this time :)

Ad question:
The key word there is "all", i.e. all the graphics must be displayed on the canvas.
So I'm afraid no background colors/images/etc behind the canvas. The canvas should not be partly transparent either (it must be fully opaque).
I'm treating "canvas" and "frame" as the same thing for the sake of this competition.
(I like the way you're thinking though!)
}
2018-07-25 22:09:05 = JayC
{
Hi!

I almost finished my game, but im still wondering:

"and SHA256 of the package"

What is this.. SHA256? some kind of scan or what.

}
2018-07-25 22:10:56 = Gynvael Coldwind
{
@JayC
See my comment about SHA256 above :)
Just type "how to calculate sha256 of a file on <YOUR SYSTEM>" in google / youtube / whatever :)
}
2018-07-25 22:18:41 = Gynvael Coldwind
{
I've added a note on how to calculate SHA256 to the FAQ section at the very bottom.
}
2018-07-26 01:11:14 = JayC
{
One last question - if i want to say something about the game whenever i send it to You @Gynvael, should i write all the stuff in the email or add some text file (readme or smth)?

Thanks!
}
2018-07-26 11:38:07 = gjm
{
Hello, there is a question: @Gynvael, can we write game in libgdx in Java and export this game that it will work at HTML5's canvas? Because there are so many frameworks that are multiplatform for example libgdx: Android, iOS, PC, HTML5 (Web canvas) etc...

Thanks, gjm!
}
2018-07-26 12:48:22 = Gynvael Coldwind
{
@JayC
If it's related to the game and how to play it, please put it in a readme.txt file (this file doesn't count towards the limit as per FAQ).

"""
Q: Does the game have to explain the basics ingame, or can a simple guide/manual be part of the submission?
A: It doesn't have to be in-game - a readme.txt or a similar guide attached to the submission is fine. This manual won't count towards the limit.

Q: So, can the game load the readme.txt file and use resources/code hidden in it?
A: No, the readme.txt is not part of the submission per se and so the web server will not allow the game to download it.
"""

If it's just a message for me, then put it in the e-mail ;)

@gjm
You can use anything to create the game, as long as the output game package meets the constrains mentioned in the blogpost.
E.g. you can write your game in Turbo Pascal, then have a set of Magical Scripts™ that compile it and covert it into HTML+JS/WASM, and as long as the whole output package (i.e. the things that are required to run - not build/compile/etc, just *run* - the game) is below or equal to 31337 bytes, at most 20 files+directories with name formatting 8.3, uses the 360x400 canvas with 32 colors at most at one frame, etc etc, then it's all fine.
The catch here is that some frameworks/engines/etc have huge *runtime* libraries that will not make it easy to fit within the 31337 bytes limit.

Best of luck :)
}
2018-07-26 16:52:08 = Luke
{
Can there be used multiple canvas elements if only one would be visible?
The rules don't state other canvas elements cannot be used, but I just want to be sure.
}
2018-07-26 17:14:22 = Gynvael Coldwind
{
@Luke
Yup, that's fine.
}
2018-07-26 20:48:17 = Deseteral
{
Can we set `body { margin: 0; }` in CSS, so that canvas fills the whole page?
}
2018-07-26 21:13:02 = 42
{
Questions about "real-time shooter" part.

1) Does it require shooting at *enemies* (NPCs/AI in general)? For example, would shooting bullets/rockets/lasers/portals to proceed in some kind of (adventure || arcade || logical) platformer would be okay? (Instead of shooting to kill enemies).

2) How much of the game-play should be _the shooting_ part ;)?
}
2018-07-26 21:43:12 = JayC
{
Sorry but i got confused.. we're limited to smth about 31KB right.

So how in hell are we gonna use.. sound effects? Even a slight sound effect is like 25KB.
}
2018-07-26 22:29:43 = Vassildador
{
@JayC Yeah, I struggled with this in the previous small size challenge myself.

You'll get the most content for the smallest size by utilising the web audio api (https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API). It takes quite some effort and time to learn how to make anything close to decent with this :)

In case anyone wants to save some more bytes on code, this is a tool I wish I knew about before the last game dev challenge started (where I rolled my own custom compression tools, which turned out fine).
http://www.iteral.com/jscrush/

If you embed your sound fragments as base64 it can slightly compress them further too.
}
2018-07-26 22:53:03 = Gynvael Coldwind
{
@Deseteral
Yes, by all means.

@42
1) It doesn't require shooting at enemies. Your proposal would be OK.
2) Shooting must interact with some other stuff in the game and be part of the game play. It shouldn't be limited to being only e.g. graphical candy.

@JayC
Well it is a *challenge* ;)
Look at e.g. https://www.youtube.com/watch?v=PiBfI7wltM8&t=1211s or games from previous challenge http://gwgc2017.gynvael.tv/ - you might get some ideas.
+what Vassildador said :)
}
2018-07-27 15:30:14 = Bobzy
{
Yo!

Gotta question: as we render text in cavas, it gets a lil bit bloored on the edges so the letters look.. like letters.

So does it count as one color?

thanks!
}
2018-07-27 15:34:02 = Gynvael Coldwind
{
@Bobzy
I guess this entry in the FAQ answers your question :)

Q: What about text anti-aliasing? That might add additional colors...
A: Be sure this is properly handled in your code. There must never be more than 32 distinct colors on a frame.
}
2018-07-27 21:28:30 = Bobzy
{
@Gynvael
W8.. 'handled in my code'?

https://stackoverflow.com/questions/4261090/html5-canvas-and-anti-aliasing/4261139

From what i know i can only assign false to 'imageSmoothing' and it's only affecting fillRect and fillImage. The anti-aliasing should be (and from what i see - it is) fully connected to the browser. And so my 'not-straight' lines are bloored & also my text is.

Any hint on this one?
}
2018-07-27 21:52:39 = Bobzy
{
@Gynvael

Still not sure about this anti-aliasing. It fully depends on a browser, when it comes to rendering circles or text..

Any hint mb?
}
2018-07-27 22:14:19 = Luke
{
How will you test if there are only 32 colors at once? Do you have any software or plan to write one? I'm just curious.
}
2018-07-28 00:38:58 = Deseteral
{
If we use some offscreen canvas as second buffer to render - does it have to be exactly 360x400 or could it be any other size as long as the canvas that's visible to the user is 360x400 and has width and height set to 100%?
}
2018-07-28 00:41:42 = Gynvael Coldwind
{
@Bobzy
There are a couple of ways to solve this. One is to just use bitmap fonts. Another is to render the fonts to another canvas, and then flatten the colors to N values (e.g. N=2). And then blit (copy) this to the main canvas.
There may be other ways to do it too.

@Luke
I'll probably write some software for this.
}
2018-07-28 00:45:30 = Gynvael Coldwind
{
@Deseteral
Only the main canvas' settings matter. Any hidden / not shown on the screen canvas can have any settings you like.
}
2018-07-28 02:42:36 = Bobzy
{
Oh well, gonna try to deal with it.

Got a last question tho: if i display 2 screens (entry one, smth like 'press spacebar to start', and ending one 'game over') do i have to 32 colors there? Couse technicly, its not a frame of a game. These are static 'go-in' & 'go-out' infos.

So will it count?

Thanks!
}
2018-07-28 09:43:30 = Gynvael Coldwind
{
@Bobzy
That's still part of the game from where I stand, therefore screens like that fall under the same rules as the rest of the game. Sorry ;)
}
2018-07-31 18:54:27 = lanz
{
@Gynvael
Is it safe to assume you (and other potential judges) aren't colorblind? =P

About the 32 colors, you specifically referenced the 24bit RGB values. Does this mean that if 2 pixels have the same RGB, but a different Alpha (ie transparency), they are still considered the same color?
}
2018-07-31 19:02:48 = Gynvael Coldwind
{
@lanz
For the sake of this competition please assume that the judges are not colorblind.

Not a bad idea with alpha channel, but sadly it cannot be used this time. To quote the FAQ from the post:

"""
Q: Can I add a CSS background-image/background-color/etc to the canvas?
A: No. As the rules say, all the graphics must be displayed on the canvas (therefore it must be fully opaque, i.e. cannot be transparent in any place).
"""

Please assume that my rule checker grabs the on-screen frame while the browser is in full screen mode (F11) and checks if there are at most 32 colors. Given that the alpha channel would have to already be applied at this stage (i.e. canvas would be merged with the background), my checker would complain about there being more colors on screen than 32 if the final frame has more than 32 colors.

So yes, I specifically look at 24bit RGB values *in the final on screen frame*.
}
2018-08-03 22:51:00 = Ehmeth
{
Judging question: is bad music better than no music?
}
2018-08-03 23:16:29 = Gynvael Coldwind
{
@Ehmeth
No music is better than music than really bad music.
Though what "bad music" means is another thing. I don't mind chiptunes / "8-bit music" / etc. I would mind music that totally doesn't match the spirit of the game - e.g. you're making a cyberpunk themed game and use Vivaldi's Four Seasons in classical piano midi samples or sth (though I guess there are ways to get it right...) ;)
}
2018-08-04 16:29:01 = oddwhocanfly
{
Hello,

Can the 8+3 naming scheme be relaxed a bit? In particular, it would be nice if *.html and *.wasm files could stay as such, just for the convinience sake (configuring local nginx, etc).
}
2018-08-04 23:10:20 = Gynvael Coldwind
{
@oddwhocanfly
I don't mind .html and .wasm being two exceptions for the naming scheme. I'll add it to the rules.
}
2018-08-05 05:01:57 = Another Newb
{
I don't fully understand what you mean by "the canvas must be stretched into full window size." Does the following template meet the specifications if the whole game was to fit inside the rectangular box shown below? https://codepen.io/anon/pen/OwwVaZ
}
2018-08-05 11:41:34 = Gynvael Coldwind
{
@Another Newb
It doesn't - the canvas there doesn't stretch into full window size.

I modified your example a little to comply with the rules:
https://gynvael.coldwind.pl/img/gsgc2018.html (ctrl+u to view source)

Here's a screenshot of how it should look like in full screen (F11), or how it will look like when I'm testing the game:
https://gynvael.coldwind.pl/img/gsgc2018_fullscreen.png

All graphics MUST be rendered on that canvas btw. There must be no other HTML element/etc that renders something on the screen. Everything must be drawn on the sole canvas.
}
2018-08-07 14:02:24 = ElectryZEDpl
{
I want to know if the game has to be fully shooter, I want to make game about trading/stealing/mining resources with battle sections where in the gathering phase you plan the actions you make during execution phase and in that phase you fight as ship in real time and try to shoot down enemy's transporter. So mainly it would be a turn-based game but with real time top view shooting battle scenes, Is this considered as Shooting game even if the shooting is not main genre?
}
2018-08-08 21:50:51 = Gynvael Coldwind
{
@ElectryZEDpl
That's fine. As long as there is some sensible real-time shooting in the game it's fine with me.
}
2018-08-08 22:54:49 = Luke
{
I've just sent my submission.
}
2018-08-09 00:19:31 = Gynvael Coldwind
{
@Luke
Yup, got it :)
}
2018-08-11 15:43:16 = PezeT
{
My game should be on your email.
GL to everyone! :)
}

Add a comment:

Nick:
URL (optional):
Math captcha: 6 ∗ 3 + 7 =