Milhazes Command Dev Diary #3: 2D or not 2D?

The brief we were given indicated a necessity for 3d assets to be used within the game. However, due to the nature of the motif elements used by Milhazes in her work, in order for me to accurately reproduce those elements,  would need to create a bunch of custom shaders for many many spheres or try to revert them back to a 2d render. Blegh. The point here is that I decided early on that it would be far simpler to create a 2d, flash style game that uses sprite rendering rather than 3d which would require a large amount of working around the 3d aspect, or even having to create extra steps to simulate a 2d environment.

SO I first went ahead and found some of the common artistic flourishes Milhazes uses in some of her work and decided which ones I most liked, after all, this game is for me too. There are the concentric and dot circles which I feel create the focal points throughout her artworks, with the use of parallel lines and overlapping parts leading the viewers eye around her images. The nature of the game should in theory do this kind of story telling but in reverse, as the game is a forward progression of the building layers, the naturally leading lines ought to be able to convey the decisions of the player and how their creation came to be

Here’s the main pieces of Mihazes’s work that i used as influence on the final assets I designed and intend to use in-game.

 

[insert art and assets with lines to their originals]

 

the important part for me to capture the same sorts of feelings as the originals is to isolate the different elements major shapes and have them occur in game under very different events or with different properties to each other.

To kick this off I put together the mock-up used in the pitch video (in this post) where I gave thought ot the regularity of certain elements across Milhazes’s works. I noticed, for instance. that the flower motif was relatively rare and also quite detailed, creating a very immediate focal point for the viewer. It seemed obvious to me that this would be the best element to use in place of the cities in the original game.

The lines will be generated by the moving elements in the scene which are the incoming “missiles” and the defensive projectiles. The missiles will generate the general wavy lines seen in Milhazes’s works while the defensive projectiles will create straight stripes (as seen above). The different styles both serve a purpose and a feeling. The primary and most obvious reason is to create an obvious visual difference between the different forces at work, originally represented as the player and the enemy. The second purpose is to create a more diverse  is because I feel that the textured lines of the missiles give a greater variation in the elements as they are generated over the game’s canvas. The intended feelings that are inferred by the specific styles designated to each is that the rippling lines of the missiles suggest chaos and are slightly more aggressive as opposed to the hard, straight, orderly lines generated by the defensive projectiles. This should create an almost subconscious sense of “Vs” to the player even though it is not the focus of the project. It should still press the player to interact with the game elements in a confrontational way. Literally, to make them try to hit one with the other.

Once the mock-up was complete I felt comfortable to proceed with the more difficult part of putting the pieces together in Unity.

Milhazes Command Dev Diary #2: Alignment

The biggest shift that this new version of the old game makes it that it is now a tool for creation. I want to push that feeling to anyone who spends the effort on it. Players should recognise that this exact composition is yours though the style of someone else.

So a feature that felt very necessary to the payoff of this game was that you are creating a new image that will be unique (if only down to a color) and your own as you build up layers of elements within the game level. Great… but then what? does it disappear into the aether as soon as you close the game? Heck no!

How to go about this? A screenshot when the game ends. Snapped and sent to a folder on your computer for you alone. This is a new feature that I haven’t danced with before, but interestingly I happen to have had contact with a gentleman in a more advances stage of my course who created this very functionality for a game he did when the two of us were in a make-a-thing last year.

You can download and play it Here

The part that placed this into a notable coincidence was that I explained this idea to my teacher, who was one of the facilitators to that make-a-thing event, and he pointed out that the very person who created Remnants of Celestial Giants was, at that moment, sitting at the back of our classroom. A conversation ensued. I now have a series of links to look over and get a handle on but once I do I’ll make an effort of explaining the process to you, dear reader.

Until then though, I need to document all the bits in between.

Continuing.

Milhazes Command Dev Diary #1: On the code again

So it’s been a short but eventful break. Now I’m back, tanned and ready to to make the virtual, reality. Perhaps not in so dramatic a fashion. Moving on…

The first idea presented to (read: forced on) me is to recreate an older arcade game with the artistic styling of a determined artist. First things first, come with me on a journey through time and space to the ancient times of 1980. Our target? The Atari 2600 video game Missile Command, which you can play online, right now, here.

 

Now, if you’re reading this, I imagine you have some interest in video game development so I’m not going to bore you with the minutia of a step by step “this is how a game works” just take int on board in tiny bites. Alright…

I direct you now to the busy, color-ific collages and patterns of Beatriz Milhazes [Below]

Summer Night_2006-thumb-800x383-51154.jpg
And even more Here.

Our first order of business was to figure out how to do the thing followed by getting everyone in the immediate vicinity to agree that it would work. This requires some finesse and style through the ancient art form of “The Pitch!”
Take a look at mine and we can keep talking.

And now I move on to phase 2… Documentation. Super fun, this is where I get to stop a great many problems before they even get to exist. Figuring out what needs to go where, when and do what.

The time frame of 3 weeks seems a little steep at first but it’s all about the learning, so prepare to follow along in these blogs and see me learn the s*** out of this thing.

Wrapped Up in a neat lit- is that gum?

I hate this. I hate myself. I hate video games. I feel no joy. Cake is the flavor of ashes. Rainbows are grey. Smiles are upside down frowns. Another dark thing… One sec, let me just check out “LastLimmerick” on twitter…

Okay, that’s a bit better. Fun Fact: Blogging is like saving, blog early, blog often. It appears I was supposed to actually be publishing these as I went and have not been. Sigh. I am tired from this term, I have managed to contract 3 colds this trimester which is a record for me. If I make it through to the next term I will probably still be hitting these levels of stress and I’m not yet sure how that sits with me.

One would have thought that after the numerous other blog assessments that I’ve had to struggle through, last-minute, I would have better prepared myself for this set, but alas, it was not to be. Why? Because I didn’t learn. Well I’ve learned now. I underestimated the amount of work 500 words a week really is when there are so many other things going on at the same time and thank goodness for taking time off work. The sheer size of the required end result of this blog task has never been quite so spectacular until I threw it all into this word file and checked the word counts (hint: Don’t try to gauge a 500 word count by eye).

In the coming few weeks I intend to join in on some more learning exercises at the university campus and test my coding muscles a little further. If i manage to make my way into next term without this programming fiasco holding me up too much, look forward to more of these sunny updates.

Happy holidays and good game.
Yours truly,

Flustered Artist.

Scatterbrain Scott Vs The Devious Dev.

Last Saturday I realised this was not going to work. I could either continue screaming internally trying to make the thing I’d worked out fit into something I didn’t yet understand OR I could go from the ground up and make something simple that’s missing a bunch of stuff but could work and responded to the brief.

Time for an overhaul!

I started with the creatures which are, by now, familiar territory.

By the next day I had planned out a very basic version of the game brief and had most of it working but hacked together. I have no idea how well it could rate in terms of efficiency or creativity… probably not well.

The point on what I did next is important and only highlights my continual conundrum.

Each ability button that functions is connected to the sprite change, sound effect, particle effect player, attack script, etc. But I knew wholeheartedly that all of this should be able to be implemented in the scripts. The nature of scripting screams “modular design”.

Working from the ground up, I had to start linearly by trying to only program one thing to do one thing at a time. I still cannot wrap my head around the weird and horrible way scripting means one has to think laterally across multiple scripts at once. I understand WHY but I cannot for the life of me actually do it. It’s the most infuriating thing I’ve ever encountered except for that boss fight in Darksiders, you know the one I mean.

I know and have known, at every stage of this assessment, exactly what each thing needs to do and what the basic intent is behind each interaction and how it should generally go about it, But I can’t get it down in code and less so in working code. The answers feel like they’re right on the tips of my fingers but they evaporate the moment I think too hard about them.

I respect code, I think it’s a truly cool thing that humans have done and I am consistently amazed at how clever it can be. But it is so un-intuitive to me. It’s where you’re writing another culture’s language but you make up the words as you go and it just have to make sense to their alien ears. I have all of the intent and implication I need for any given point I’m trying to make but don’t know what the listener is listening for so that it makes sense to them.

I was, again, sitting within the realm of “Just maximize your grade” which I get but still, I could have done so much more if only I could do more. As it stands the “game” is a couple of buttons that do things but doesn’t tell you about what it does yet.

Dungeonators and Dungeonisers has been a failure of human achievement and I feel bad about it, but it has room to grow and, as always, I learned a lot more than I would have if I hadn’t tried.

All I Want Is Everything.

I’ve realised that at this stage I am about as proficient with C# as I should have been in week 3 of trimester 1. You can probably imagine this is a disheartening revelation and has certainly put my attitude towards coding into a pit. I like code. I respect it. I think I have a grasp on the nature of how it plays with others and have decided it’s very impressive and it’s totally not something I ever intend to make a full time career.

Throughout this trimester when I have reached a point of stress to do with my misunderstanding of how to program, I have been asked by several people “So why are you doing a game design course?” Well, Mike, let me say it on here to have it answered fully… ahem…

Because I want to learn how to design video games. Just because I’m not good at it, and know that I will never be a savant at it, I want to be understand what the capabilities are and I want more than anything to learn the processes and capabilities of people and departments when creating the sorts of interactive experiences that games are.

The issues with the turn based game as it is are:

I think I’ve managed to script out a pretty sick “initiative” roll system (borrowed out of D&D 5E) but I can’t yet test it because I haven’t fixed the red errors that would allow the scene to run. My notebook has become a feature specs doc which is handy but I am still getting stuck on how the heck the parts I’ve done will integrate with each other. I mean, they SHOULD be able to stick together, I just have no idea where in the scenes they are supposed to go.

The other glaring issue is that i know that the basic idea for an attack round is “Ally-X does ABILITY1 to Enemy-Y” which i feel should be an interchangeable list. I know that X should be defined immediately depending on the turn order, the button that gets selected is queued and then applied to the enemy chosen. All of this is supposed to be loaded into another list with a space for each character in the round to be queued with their full turn. I don’t know how to do that but it really doesn’t seem like it should be hard. It’s so logical, and you KNOW how code love being logical. I can’t figure out how to do this and I feel like I’m being crunched down on by other assessments too. Other assessments that are, unfortunately, more fun for me to focus on.

TLDR: I can design a good game but that means nothing unless I can get it done and C# dislikes me.

Update

So I’ve put together the base of the creatures and gone and listed out all of their abilities along with pseudo code with all of the math I think they will require. I’m not sure how to implement it yet because I haven’t made the game manager and so I don’t actually have a way to test them in scene thanks to the many red errors Unity is reminding me of.

Here’s a handy hint: Any work you do needs to be saved to something you can take with you. I would suggest a repo such as BitBucket. This is because SOME university computers get wiped and cleaned up from time to time, and if you happen to have created a wonderful array of simple art sprites for use in your game, you will find that when you try to look for them, they are not there. Save early, save often, save separate, save yourself the hassle.

Turn It Up!

And we’re off on the next one. We walk into class and BAM! new assessment to do. What is he talking about? “Messages”? “Events”? “state machines”? This is… This… This I can work with.

So the project is to be a turn based fighting game like pokemon or hearthstone. we’ve gone through the gist of how these are set up and executed and to be honest, this is how I thought most games were supposed to go. “Something” happens and the game says “Okay! I need THIS animation and THAT sound effect and THAT attack code…” etc. I feel like I can wrap my head around this. I feel like I was having a lot of trouble with the previous assessment due to the fluid, constant, and reliant variables that all had to be bubbling together in the code whereas the way that this kind of game can actually sit still until the trigger occurs makes much more sense to me. It looks to me that I can script out individual things like attacks and other actions separately and employ a “drag and drop” kind of allocation to which objects have which functions.
I’m going to go for a “darkest dungeon” kind of approach because I think I can cheat out a lot of the animation work (if I get to that point) by having all of the creature’s actions animated in a scene that’s layered on top of each other and just have some hit boxes that are out in front. If makes sense to me.I kind of want to do something with goblins, I’m working on another side project (though it’s on hold during the trimester) which involves a tonne of the little green fools, so I figure they’re easy and silly.

I know how I want to do it all and it should be straightforward. I am going to get onto it early and do a good chunk of work on it each week (this time) because I don’t want a repeat of the last mess. Either way, this stuff all seems to click with me, so I’m going to start by just putting all of the things into words in scripts. they will probably be the wrong scripts in the end but whatever.

I’m blathering…

Once the functions, objects, interactions etc etc have been filled out and I think I’ve covered it all it will just be a matter of putting in the function for each one and then I should be able to piece it all together in the Unity scene if I’m going about this the right way.

Gather No Moss.

Oh dear, I was lazy this week and last. I have been put into a team in another module to work on a game as a team and we came up with a really cool idea.

“Lazy” probably isn’t the right word as I was crazy-busy trying to do a bunch of concept art for our collective pitch, but the point is I have done sweet FA on my programming assessment which is really bad when the module you’re going to struggle in is the same one that contains the programming assessments. On the  other side of this, I am starting to come around to the importance of using a repo for my own work as much as group work. I’m not solid on how to use one yet and kind of feel like learning that right now when I’m under the crunch of assessment week is probably a bit time expensive for the moment.

It’s done. It’s a mess and it’s late, but it’s done. This would probably be an appropriate place to put a  post mortem but I’m a little burned out from having to overdrive myself to hopefully scrape in with a pass.

I ended up making a set of levels and remembered I only needed to have specific features in the levels that were to be used to show them off. They consisted of Round world, Square world, and Credits world. Round world was the platform making, ball on ball that had the central attractor. I had to review the idea of the platform creation as I didn’t manage to find out how to effectively implement that feature. Instead I decided to simply place a large number of platforms around the planet at the beginning and allow the player to destroy them as they please. This was only meant for the accessible version of the game, If it was to be made into something that I would feel comfortable publishing on itch or something (basically where I would market myself) I would take a look at it again and implement the intended features for the reasons I explained in previous posts. This was where I noticed the part where rapid prototyping become an extremely good idea. I quickly noticed that the camera was often being obscured by platforms between the ball and camera. This is the sort of visual interaction that would normally call for a fade-in renderer (in tripleA games). This level also had a destruction system where the ball could double jump and destroy the platform it makes contact with next, complete with a crappy sound effect and a burst of colour appropriate particle systems. Though I didn’t end up implementing the collectibles system in that level, I did have a counter/score for the number of platforms broken.

Square world was a super simple attempt (some might say “last-ditch effort”) in order for me to implement some of the features I had forgotten about or abandoned in the other level. I’m not sure where I went wrong but the version I handed in had some collision issues in that the ball didn’t collide with the things it was meant to. There was a box that was meant to kill the player and some collectibles that you could get a speed boost from. None of that contact trigger works,

The last was my credits scene which was printed all over a micro planet. It was a last minute decision to try and make the credits a little more interactive and whimsical, which I think it achieved rather well.

I feel like I learned a lot even through the painful crunch I feel at this stage of any assessment, not the least of which is the power of having friends and peers that can and will help and you in turn help back. Those little area that I got just stuck on, those parts where I only needed that one line or that missing capital letter, having people around me who could just point and make everything suddenly doable reminded me of why I am here, trying to learn in the first place.

The Thing about Falling.

So it turns out that Unity doesn’t have a magic “Gravity point” drag and drop reference point built into it. In order for me to fake this gravity I need to designate the planet as the “attractor” and the ball as the thing that responds to it by, in this case, moving towards it at a certain magnitude. Luckily, this sort of crazy idea has been tried by many other people before me who have seen fit to pass along their knowledge. Here’s the one that I started with: https://www.youtube.com/watch?v=gHeQ8Hr92P4
the gravity seems to work. *thumbs up*

I have noticed that there are some issues now that the camera is trying to stay in the same place and makes movement really strange. Next week I’ll be checking with a classmate who’s project I noticed had a similar movement style.

It looks like I’m going to need to have a jump function put and then I need to figure a way for the camera to follow it and actually change its tilt at the same time. Now, I’m an animator. Gimme 3dsMax and few minutes and I could rig a camera to a spline and wrap it around the boulder like a boss. But this isn’t 3dsMax and Unity doesn’t like using cameras with splines. This is a bit of a log in the road for me.

I’ve also found that writing a page a week about this stuff and only this kinda sucks at my time. I prefer to draw pictures and am actually considering making next week’s blog a comic page instead. Here’s the thing, the fact that I can’t bang this out in under half an hour only really shows that I’m not trying to do enough in coding. and that’s true. In another subject I have relinquished all of the programming to my teammates leaving me to focus on all of the art assets which I am a. better at and b. already know how to do. The upside is that it means we’re more likely to have an end product that will look finished and maybe even really cool, we’ll be able to say it’s completely original, it will be more engaging for any future potential employers, and, it will better simulate the overall professional game development process (which is what the module is supposed to be doing). The downside is that I’m not doing any coding which means I’m not improving any more than the work I put in for this module which, let’s face it, isn’t enough.