[WIP] TankMania - Syntax Bomb Game Competition Sept to Oct 2018

Started by Qube, September 15, 2018, 02:12:50

Previous topic - Next topic

Steve Elliott

Quote
Finally happy with the look and feel :)

Looks great, the DOF effect does give the look of me without contact lenses though - ie not much is in focus at all  ;D

Quote
- Now onto pickups ( both good and bad ), different levels, slowly increasing difficulty and general gameplay additions and tweaks.

Yeah the fun part, so many possibilities here!  :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

Qube

QuoteYeah the fun part, so many possibilities here!  :D
This is true and I have too many ideas flowing around. I need to be realistic in what I can learn / do in the time scale left  :o - My minimum aim is pickups, different weapons and boss enemies.

I spent today cleaning up a lot of code and rearranging it to reuse code across multiple levels. It's also been redone to allow for different settings per level. Each level is now in it's own container. I don't know if this is the right way of doing things or if they should be in there own scene. I guess I'll find out as I go along but it seems to make sense to continue on my centralised game controller object.

I've also tweaked the visuals a little and reduced the depth of field and added a touch of ambient occlusion. This has worked well and increased the colour dynamics. When I started out I didn't wan't it to be or feel like a "Unity" game. Unity gets a bad rep because of all the asset flips and users creating games with all the defaults and cut / paste scripts. Every parameter has been tuned to the best of my current ability and none of the scripts are cut and paste. I've spent a long time on the coding side and Unity is definitely not just a drag and drop game maker. C# is pretty easy to pick up but the Unity API is pretty vast and not super easy to learn quickly.

It's also crossed my mind that some may think it's been super easy creating this game ( drag, drop, yiippeee ). Nah, it's been a long hard road learning all this new stuff. For those that think Unity doesn't require coding, forget it, it definitely does. I've learned a lot and my next outing in Unity will be a little easier ( and less messy ), but believe me, it's not a magic bullet.

On an different note I've dived in and bought a license for the year  :D - I'm now the proud owner of the "dark theme" + I can set my own splash screen. After this comp I'll be leaping into an Oculus Go game ;D

( screen shot doesn't show much as moat is hidden in prefabs until the game is run )

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.

Steve Elliott

Quote
It's also crossed my mind that some may think it's been super easy creating this game ( drag, drop, yiippeee ). Nah, it's been a long hard road learning all this new stuff. For those that think Unity doesn't require coding, forget it, it definitely does. I've learned a lot and my next outing in Unity will be a little easier ( and less messy ), but believe me, it's not a magic bullet.

On an different note I've dived in and bought a license for the year  :D - I'm now the proud owner of the "dark theme" + I can set my own splash screen. After this comp I'll be leaping into an Oculus Go game ;D

Interesting, yes Unity does get a bad rap because people can easily buy graphics from the Unity guys, download some code and try and sell it as 'their' game.  Where as people like yourself are digging into the code and working on a game they (and me) would enjoy playing.

Ooo took the plunge then, well it's good to have a variety of tools.

The game is looking lovely, and certainly looks super smooth in your videos, plus you said you have many ideas for gameplay.  Sounds like a recipe for success.   :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

Qube

QuoteInteresting, yes Unity does get a bad rap because people can easily buy graphics from the Unity guys, download some code and try and sell it as 'their' game.
Yup, you can buy ( or get free ) complete game templates, change the graphics ( or not ) and a couple of bits here and there then shovel it out the door as your own. That is why I ban pre-made game templates as part of the comp. Of course, if said pre-made game template is your own work then that's fine.

At least I can say that even though this is my first game in Unity, there is no "default" setting on anything and no downloaded code.
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.

Qube

Waffle update :P :

I pretty much have a working level structure \o/ - tanks auto spawn at various spawn points. Variable damage to tanks and the player is sorted. The code is structured to allow for different weapons and the player movement code has been redone to allow for power ups.

Audio is in but I want some sound effects to continue after a game object has died. I think this side is going to require an audio based game object, similar to my game management object. Attaching a sound effect to an event is super easy but controlling sounds via script requires a few more hoops to jump through. Once again this is something to dive in and learn but will be super useful for other projects.

Much much more to learn and do yet, keep plodding on Mr Qube :D
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

I think you could add your "non moving"-sounds to the level-object (if you do not want to have a sound manager thingy).
Assume you want to play some "echoed" explosion thingy. The debris of the tank is already deleted and nothing of the tank will be moving (so sound stays at the same spot in the level -  or at least "sound origin"). So just add a "sound source" entity thing to the level object until the sound finished playing.

A "SoundManager" is some kind of "global"/"singleton" and suited well for this situation.
In TVTower each playing sound is using "SoundSource" objects. They could be complex ones (referencing world objects and their position in the building/on the screen) or simple ones (checking an coordinate or so). Each SoundSource could setup volumes, panning, ... so you could play some "positional sound effects".
The SoundManager is there to maintain everything and update audio streams (think Unity handles that already ;-)).

A SoundManager might also be needed if you plan to have audio playing during scene changes. In Godot an scene-attached-audio would stop if you move on to another scene. Just think of a "game over screen" which oddly stops an explosion sound right after "you're a loser baby"-animation finished.


bye
Ron

Qube

QuoteI think you could add your "non moving"-sounds to the level-object (if you do not want to have a sound manager thingy).
That wouldn't work as the only effective non moving object is the players tank ( camera always looking at it ). Everything else is moving or spawned at different locations.

I only need to use the sound manager script for multiple sound effects on a object ( or random ones ). A lot of sounds are just played once with the object is awake, for example a missile gets launched or an explosion is triggered. It's also a super small script so I can just drop it on the objects that need it.

I have sounds and level music in now and tonight sorted out how to pause and resume the game. Pausing the games action was super easy but pausing / resuming sound & music resulted in a tiny script dropped on the sound effect. I would of thought Unity, being a game engine would actually have a proper pause / resume command which handles all this for you, but no. Ah well, that's another bit of script I can reuse in other games :D
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.

Qube

Yay it's the weekend \o/ - couple of appointments today and then I've a weekend free of pure game making indulgence ;D
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.

Qube

Slow progress today  ::) - Todays work was finishing off the end of levels and moving on to new levels. Unity is very OO in it's approach and so I was stuck for a while on how to pass variables from scene to scene. Turns out its pretty straight forward ( when you know ) and all you need to do is set a script to not destroy itself when loading new scenes. Luckily my idea of a game manager / sound manager script was a good idea \o/ - now that those are both set to not destroy themselves on scene changes we're good to go.

I've made many mistakes with this game but also learned a lot for future games on how to structure things. Some parts of Unity are genius and some parts are just mind boggling. It's weird that some super advanced things are easy yet basic core game features require you to jump through hoops. I guess every game engine has it's plus and minus points.

I think I can whack and smash this into a game. Underneath it's not going to be pretty but unless you dive in and go for it you'll never get anywhere  ^-^
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

Hah, seems we need to switch engines (you godot and me fighting Unity) next compo :-)

I also came to the conclusion that for simple games there is no need to do some "advanced coding" - make it dirty and "at least it works". And let's hope that you won't come back to improve (or even extend!) your game later on.


@ keep alive
in Godot every object can be a scene (also the weapon can be a scene) so until I reload "game scene" things can kept in memory. So if I reload a level I just reload the level scene (and it re-initiates everything not parented "above" - or global). First I had a "reset()" function but reloading the entire scene wasn't that slower. That "scene approach" (instead of Unity's prefabs) is kind of cool but you also have to wrap your head around it.


Keep up progressing - my weekend is dedicated to friends and family - and to finish some board game (designed this week, printed yesterday and now needs to get glued on some wooden board ... 6 lane monopoly with 3d printed houses).


bye
Ron

Qube

QuoteHah, seems we need to switch engines (you godot and me fighting Unity) next compo :-)
lol, no thanks, I've my handful with learning this and there's a tonne of stuff I've not even looked at yet :o

QuoteI also came to the conclusion that for simple games there is no need to do some "advanced coding" - make it dirty and "at least it works". And let's hope that you won't come back to improve (or even extend!) your game later on.
I'm trying to do things properly as the routines I've done during this learning experience will be invaluable on my next game.

QuoteKeep up progressing - my weekend is dedicated to friends and family
Kick em out and get on with it ;D
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.


Qube

Nice little technique there for a faux CSG effect. I'm not going that far in this game but will be useful for future usage, thanks :)
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.

Matty

Unity looks powerful...in the right hands.  I'm on a 2d web browser thing this year though but it does look good as does your game.

Qube

Last few days in my free time have been spent rearranging code :(

My initial ideas of a game manager and sound manger were correct but what I really needed were a global variable manager ( for vars that are needed to be accessed from anywhere ), a general game manager to handle the basic game play structure and finally a sound manager to handle effects and music changes.

It's all very well to be able to assign a sound when something "wakes up / starts" but what if you need to play multiple sounds per trigger? - There's possibly an easier way but for now I'm sticking with my sound manager class.

At least I now have a complete start to finish level with health boost and time boost power ups, death by damage and also running out if time. I've also done a preliminary title menu with GUI bits to take you into the game. Not sure how far I'll get with that side but the basics are in.

I've also added in explosions when a missile hits the tank and also when it hits a wall. The explosions are based on the impact point. Not a big game thing but something I wanted to get sorted for future use. Also the tanks now go on fire when they hit a certain damage point ( a useful thing to know how to parent an effect to an object and keep it going ).

Today I finally get to start on different levels. Every thing else is variable based so I can tweak the level difficulty. I would like to create some levels which go up and up but I'm not sure if I'll get the time to do that. I think I'll see if a more 3D level is possible to do time wise but as with everything else, I've no idea until I look into it.

Overall the structure of this game is a complete mess. Things are all over the place and it's becoming a nightmare to work with ( oo, the honesty :P ). Luckily I have a much better idea on how to structure my next game. I didn't expect my first Unity game to be pretty or structured but its been a great basics learning experience.
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.