Code a game competition - Aug - Oct 2017 - £500 worth of prizes

Started by Qube, August 09, 2017, 01:29:39

Previous topic - Next topic

BasicBoy

Derron, thanks for the feedback on my game. Yes, I felt I wanted to give the player's 'ship' at least some inertia in order to make the physics a little bit more realistic. It's been so long since I played any R-Type-style games that I forgot what the handling was like back then. Instead, I watched some YouTube videos as a poor substitute. Luckily the inertia thing is something that can easily be adjusted and I'll consider doing so in a subsequent release. As for making the sprites a bit more polished - if you were mostly referring to them being non-anti-aliased (jaggies on the edges) then yes, fair enough, I could have given them an anti-aliasing mask (especially as I wrote my own tool to do just that!). You might have noticed that the flowers/grass on the ground are anti-aliased with respect to the background imagery, but not the enemy sprites. I think the main consideration is that since all my graphics are software-rendered (no DirectX or OpenGL GPU acceleration!) using my own sprite library (GFXLIB), too much software-based alpha blending (to achieve anti-aliasing) is rather expensive in terms of CPU clock cycles, and could really hamper performance on slower PCs. I should have at least tried, but time was short.

Tonight I will start work to make my game full-screen, because I think it will make for a more immersive experience.

I downloaded v0.1.1 of your game and it runs without any problems on my Windows 10/Core i7 machine. I know you didn't request it, but I'll include the log file it generated below. I must say your game appears visually very polished (your game graphics certainly are anti-aliased!), and the music is light and unobtrusive.  I will give your game a proper play at work tonight. Incidentally, you have inspired me to learn Blender, probably starting sometime this week.  :)


Regards,
BasicBoy.
--


App Log v1.0
[15:31:01] DBG      | GRAPHICSMANAGER.INITGRAPHICS(): Initializing graphics.
[15:31:01] DBG      |                               : SetGraphicsDriver "OpenGL".
[15:31:02] DBG      |                               : Initialized graphics with "OpenGL".
[15:31:02] DBG      |                               : Initialized virtual graphics (for optional letterboxes).
[15:31:03] DBG      | SOUNDMANAGER.SETAUDIOENGINE(): initialized with engine "AUTOMATIC".
[15:31:03] LOAD     | TASSETS.INITIALIZE: Loaded assets
[15:31:03] LOAD     | TEVENTMANAGER.INIT(): OK
[15:31:03] DBG      | PLAYMUSICORPLAYLIST: GetDigAudioStream from Playlist "default". Also set current playlist to it.
[15:31:03] DBG      |                    : start activeMusicChannel
[15:31:37] DBG      |                    : GetDigAudioStream from Playlist "default". Also set current playlist to it.
[15:31:39] SAVE     | TPLAYERPROFILE.SAVETOFILE(): profile path contains missing directories. Creating "config".
[15:31:40] SAVE     |                            : profile path contains missing directories. Creating "config/profiles".
[15:31:53] SAVE     |                            : profile path contains missing directories. Creating "config".
[15:31:53] SAVE     |                            : profile path contains missing directories. Creating "config/profiles".
[15:31:54] DBG      | PLAYMUSICORPLAYLIST: GetDigAudioStream from Playlist "default". Also set current playlist to it.
[15:32:22] SAVE     | TPLAYERPROFILE.SAVETOFILE(): profile path contains missing directories. Creating "config".
[15:32:22] SAVE     |                            : profile path contains missing directories. Creating "config/profiles".
[15:32:25] DBG      | PLAYMUSICORPLAYLIST: GetDigAudioStream from Playlist "default". Also set current playlist to it.
[15:32:52] SAVE     | TPLAYERPROFILE.SAVETOFILE(): profile path contains missing directories. Creating "config".
[15:32:52] SAVE     |                            : profile path contains missing directories. Creating "config/profiles".
[15:33:00] DBG      | PLAYMUSICORPLAYLIST: GetDigAudioStream from Playlist "default". Also set current playlist to it.
[15:33:46] DBG      |                    : GetDigAudioStream from Playlist "default". Also set current playlist to it.
[15:34:23] SAVE     | TGAMECONFIG.SAVETOFILE(): config path contains missing directories. Creating "config".





     

Steve Elliott

Quote
Tonight I will start work to make my game full-screen, because I think it will make for a more immersive experience.

Games should always have a full screen option imo.

And don't forget that tweening/delta time/frame limiting.  My monitor refresh is 75 hz, so runs faster than your default 60 FPS - too fast!   :)

Interesting that you use software rendering in this day and age  ;D
Win11 64Gb 12th Gen Intel i9 12900K 3.2Ghz Nvidia RTX 3070Ti 8Gb
Win11 16Gb 12th Gen Intel i5 12450H 2Ghz Nvidia RTX 2050 8Gb
Win11  Pro 8Gb Celeron Intel UHD Graphics 600
Win10/Linux Mint 16Gb 4th Gen Intel i5 4570 3.2GHz, Nvidia GeForce GTX 1050 2Gb
macOS 32Gb Apple M2Max
pi5 8Gb
Spectrum Next 2Mb

Rooster

Quote from: Derron on November 01, 2017, 10:07:53
@ therevills (spooky bugs)
Hmm, that reminds me of the plan to add some checks to my bigger game project: if you run it during holidays (christmas and the likes) you get a penalty of 75% ("care of your family"-malus). HawwHaww.
I like your thinking. ;)

Now I'm going to try and sort through all this mess, and find the right downloads! :P

Rooster

@Derron
I tried the v0.1.1 download on Linux, but the window is to big, and trick or treater's are on the off screen part. :(

BasicBoy

Quote from: Steve Elliott on November 01, 2017, 16:46:20
Games should always have a full screen option imo.

Hopefully mine will very soon.


Quote from: Steve Elliott on November 01, 2017, 16:46:20And don't forget that tweening/delta time/frame limiting.  My monitor refresh is 75 hz, so runs faster than your default 60 FPS - too fast!   :)

I considered right at the beginning of the project making the game framerate-independent (so, yes, delta time etc.), but I figured that since the game was purely a horizontal scroller, such scrolling if not perfectly synchronised with the monitor's refresh (VSync) can look quite bad and hard on the eyes. Vertical scrolling is more forgiving, I think. So, for better or for worse (I guess the latter in your case!) I opted to 'lock' the scrolling & sprite motion speeds to the monitor/screen's refresh rate on the basis/assumption that most (?) users will have 60Hz displays, and further hoping that at higher refresh rates (75Hz isn't uncommon) the game would still be playable. Although it's probably too late for the current game, a future game project will probably be framerate-independent.


Quote from: Steve Elliott on November 01, 2017, 16:46:20
Interesting that you use software rendering in this day and age  ;D

I'm certainly of a dying breed  :)


BasicBoy.
--

Derron

Quote from: BasicBoyI will give your game a proper play at work tonight.

Thought I am the only one who does private coding fun (and similar) while at work ;-)

And yes, my GFX are using antialias very very often (in my other game, TVTower, I only use it for Font-Rendering and datasheet/GUI-Stuff ... other things are "pixel style" and do not need antialiasing).


Quote from: RoosterI tried the v0.1.1 download on Linux, but the window is to big, and trick or treater's are on the off screen part. :(

When exiting the app you will find a file "GameDirectory/config/settings.xml" - just edit the variables there ("screen_width" and "screen_height"). Was the first time I did a "full hd"-thingy. TVTower runs on 800x600 so did not receive complaints yet. Seems for "ToS" (nope, not Star Trek) I need to start with a decent windowed resolution of eg. 0.5 * HD (960x540).

What's your native screen resolution? Right-clicking on the application's window in the "task bar" might open up an context menu (of your OS) with "Move" as option. Click that and move the window.


@ My game on its own
If you (all of you) see some potential in it I would create a new thread to discuss possible game ideas (power ups, boss fights, tech trees). But for this I will wait what your thoughts on this are, _after_ playing it a bit.


bye
Ron

Rooster

Thanks Derron. :D
As for my screen resolution, running
Code (blitzmax) Select

Print DesktopWidth()
Print DesktopHeight()

outputted a width of 1600, and a height of 900.

Quote from: Derron on November 01, 2017, 17:40:14
@ My game on its own
If you (all of you) see some potential in it I would create a new thread to discuss possible game ideas (power ups, boss fights, tech trees). But for this I will wait what your thoughts on this are, _after_ playing it a bit.
I'd like to see some more. :)

Rooster

@Derron
On level five the new purple candy does not show. I don't know if this is a bug, or one of the things that didn't get added in.

Yue

All very nice until he says:"You have to have a paypal account" :(

Derron


@ Yue
I think people would be able to help you (if you trust them to "receive the money first before redirecting it to you - subtracted by the fees").
So that is no excuse to not take part in such a financially rewardful competition.



@ Rooster
Yeah, I have a "random level + random wave" generator which is not that tightly fitting as it should. So for the levels I define what sweets are allowed and what slots/lanes are "open", how many items per bag are allowed and so on. But I do not have a "this sweet NEEDS to be used at least once" - yet. So you seem to be out of luck when starting that level. Starting it again _should_ show the pink ones ;-)

Hey, just checking if it was a bug revealed that I left in a manual override to always "continue" with level 1 ...


I also saw that I did not get the pink pomelo in the bag ;-) - and of course this is another bug leading to this. The original bug is that the bag was not aware of "holes" in the chain of sweets, so passing 4 sweetIDs just used them as "1,2,3,4" instead of the actual IDs. Leading to eg. only the first 3 or 4 or 5 sweets being put in granny's bag ;)



Here is a v0.1.2 for Win32, Linux32, Mac32: https://www.gamezworld.de/files/TrickOrSweets_v0.1.2.7z


Changes:
- without a settings.xml the half-hd-resolution is used (960x590)
- start screen contains two buttons to set windowed screen size to 960x590 or full hd
- on windows the app window _should_ center itself after creation (not pretty but might help for people not being able to move the window)
- bags contain the items they should, not the items "in order" (1,3,4,7 -instead-of- 1,2,3,4)
- "continue game" starts at profile-stored level, not level 1 (bad developer-tests-override ;-))



(Pomelos are now available ;-)).


Will create a new Thread for the game - copying my initial posting in this thread, please consider replying in the new thread then to not further derail it.


bye
Ron

Qube

Quote@ col
Yeah, I assume too that Qube will post his game too - so people could see what's "possible". I think his game has surely advanced a bit since last video-gameplay.

I thought it best that for comps I set that I should not enter. It was suggested that it may be construed that I could start my game early and then announce the comp having an unfair advantage of starting my game early in secret. To stress, this was not an accusation but a possible thought from members. To that end I agreed fully and thought it best to hang back from this current comp. Once again, it was not an accusation but pointed out as a possibility which in reflection I agree with. If I set the comp and win the comp then that may come across as a tad dodgy, even though I never gave that scenario a seconds thought. It was always aimed at having fun.

So, from this day forth members are in charge of the comps. Ideally members should now decide who is to be in charge / pick a theme / time scale for the next comp. When the theme / time scale is chosen I will allocate the winners prize fund.

I will get a poll up today for this comp ( sorry, ran out of time yesterday ) and see it through to the winners and payouts.

There have been some great entries this time around and I was very pleased at the creativity going into the games considering the time constraints. I say those that have entered should be very proud that you've pushed through and made a game.
Mac Studio M1 Max ( 10 core CPU - 24 core GPU ), 32GB LPDDR5, 512GB SSD,
Beelink SER7 Mini Gaming PC, Ryzen 7 7840HS 8-Core 16-Thread 5.1GHz Processor, 32G DDR5 RAM 1T PCIe 4.0 SSD
MSI MEG 342C 34" QD-OLED Monitor

Until the next time.

Derron

If compos take place semi-regulary it might be a good idea to "promote" the winners (or 1st,2nd,3rd + "link to other entries") on the portal page. Past competitions should get added to some archives (or a overview page).


@ taking part
You could always add your game fitting to the game and write that you do not take part in the competition. It would be similar to header graphics in a graphics contest. They (authors/competition-HQ) show a bit, what they thought of when creating the theme. It also gives "proof" that the choosen theme is "solveable".

Reminder to myself: one should consider making screenshots / videos of the progress so others could see how the game gets created (eg. asset creation first, then gameplay around "what has been done" or vice versa).



My procedure (if one is interested in reading - if not then this post ends here for you):
I had a simple idea of the game but first wanted to see if I was able to 3d-model them in "good enough visual quality" first. This is why I created the hand+bag items first (always have trouble creating good looking "organic" stuff). After that I "evolved" the gameplay idea. Created the background image (took the most time with the interieur and lighting setups). Then I started the game code itself - but instead of using the game sprites already I used placeholder rectangles this time .... this was done to avoid getting distracted by doing GFX only and then not finishing the logic in time (better a working game with cheap gfx then gfx with no game at all).

While creating the game I already changed gameplay ideas as a continuous play (new children knocking on the door without breaks - faster and faster getting impatient and reducing "health" or time until it reaches 0 and you are "game over"). I also planned around techtrees, customizable levels/waves (everything is "dynamic" now, no predefined level behaviour consisting of "if...else").
The game needed some animation effects which got implemented on the placeholders too.
After the game was "basically working" I created the sweet assets in Blender ... fiddling how to create proper "plastic foil/wrapper" for candies. Learning how to do "chocolate" included modelling with high-resolution, baking the normals then ("bump mapping") so I could use them on a low-res model to keep rendering time low enough when used for high-res-"100 chocolate bars in a bowl"-shots I have never done then ;) . I modelled the bumps with my new graphic tablet to get used to it... still prefering my mouse. Had to fiddle at least an evenings spare time until I got soft shadows right (too wide shadows around the model lead to way too big images/sprites). Creating "realistic" renderings are cpu/gpu heavy so render times for the sweets (in 512x512) were about 20-800 seconds each time. Adjusting the materials to fit my needs (there is some kind of "bright corner" on the items) also needed time.
After sweets and background were done I needed to think about hud and co.
These were done in photoshop. Logo was done as a simple experiment on how a "move duplicated text layer down a bit"-3d-effect will look. It did not look decent enough, but adding some clouds and "overlaying/multiplying/..." later it looked pretty enough. I again recognized that the basic font choosen decides on how a logo looks. One cannot apply the style to all fonts with the same "final look". Title screen was done first in "layers" so I could animate the fog easily. But sprites went rather big (4mb pngs ...each.) so I skipped that then and made a "single image" background.
Adding Buttons guiding through the game was done right before the semi-last step - adding text descriptions for the new items (I know, they are "cheap jokes" so excuse that ;-)). Last was to replace the "random generated levels" with some predefined ones (defining what sweets might appear, how many sweets a children could require, which slots might be used, how many waves a level has, how many "flexible children" are allowed to join the group of a wave...). 


While coding the game I found bugs in my framework (copying TImageFont-based-"BitmapFonts" when adding special effects to them, ...) and also added new functionality. So at the end other users of my open source framework benefit from the compo too.

Comparing the development to my last compo entry ("Apes Banana Conquest") in the monkey forums: different gameplay but still "arcade/casual"-like. More flexible gameplay (most is just planned - no techtree yet). No online highscore but profiles - online highscore is way easier as the server-side thing is already existing. HD graphics with a potentially higher level of quality (a personal opinion). Lower resolution allows for cheating - a 4x4 pixel button does not need a label on it. A little ape does not need fur - and so on. Would I say I improved? I think regarding "managing/organizing development" yes. Regarding a to create a "casual game experience" yes. Regarding game quality ... so la la.




bye
Ron

iWasAdam

Wouldn't start on mac os - looks like it is a blitzmax game which is 32 bit. 32bit no longer supported on mac os. so I would either use monkey2 or not have the mac os app at all - as it cant be run. ;(

close, but no candy for you...

Derron

I cannot compile the 64 bit variant now ... not owning a Mac, just running it emulated now (10.6 is the one working here... AMD, no Intel-Hackintosh), also I wait for Col's commit to make his render2texture code compatible to NG (for android - else I would need to do 2 functions in software rendering...which is possible but not desired).
Shouldn't you be able to execute the windows-exe using wine (for mac) ? Providing a mac binary was just a service and not needed for the competition.


@ monkey 2
Nope, not my language of choice.


Edit: I do not care mind giving out the code or keeping it secret - so if you want I could publish the current game code here (or the local git repo ;-)) so you could compile the 64 bit variant using BMX NG...

bye
Ron

iWasAdam

10.6 thats snow leopard! circa 2011!!!!

sorta like saying it works on windows 3.1 - definitely no candy and no dinner for you Derron!

I'm on monkey2 here (NG just wouldn't work, and is really out of date compared with monkey2)


OK. Been through the resources - nice graphics
Heres some thoughts on the sound files for you:
- use mono and not stereo you'll half the resources and be able to pan properly - you can split the stereo tracks and use either left or right as the new mono track
- check normalising of the sounds. the (non music) ones could all do with it. Means you have 'good' audio to play with.

If any of the above seems like hard work - download my audio tool and you can do it all in about 2 minutes ;)