Mr.Blue
|
|
« Reply #680 on: November 17, 2017, 01:20:42 PM » |
|
Love this game so far.
|
|
|
Logged
|
|
|
|
Ishi
|
|
« Reply #681 on: November 26, 2017, 02:57:35 AM » |
|
The bad guyIt's time to finish up this two month boss extravaganza with - the boss herself! Presenting Kuila and her toolbox. Kuila invades Leilani's island with her robot army, and builds machines to charge all her batteries. She's smart, and taller than Leilani, but she's a cowardly spoiled brat type. When she's not inside a big tank she'd rather just run away. Leilani is a intentionally a bit of a grumpy blank slate for the player to control, but I wanted the antagonist to show much more personality. During boss fights she will celebrate or get mad depending on how the fight is going: And here's a work-in-progress ending sequence for the boss fights: My plan is for this to all be timed to music, similarly to how the is done. My process for doing this is: first, I come up with a sequence of events where I know I can control the timing of certain things. For example, after Leilani rolls into the tank, I can control the timing for all of the following: - Time until Leilani headbutts the tank and it explodes.
- Time until Kuila crashes off the bottom of the screen.
- Time until "Boss Clear" starts to appear.
- Time until "Boss Clear" stops its spinning animation.
- Time until confetti appears.
Next I put the whole sequence into the game, and tweak the timings until I have something I'm pretty happy with. There are still things I want to adjust and extra effects to add, but that will come later. I will request music from Woofle that roughly matches the timings of the sequence. Then once I have the music, I'll hook it up in the game and will re-adjust the sequence to perfectly fit the music. I'm really happy with how the end-of-level sequence feels, timing something with music just adds that extra bit of impact to everything that happens on screen, so I'm looking forward to doing the same for the end-of-boss sequence too. What's NextSpeaking of music, I will soon be requesting new music for the game from Woofle, including music for boss fights, world map, and some other stuff. So part of my work this week will be to put together a proper spec for all the music I want to request. I also want to tidy up some loose ends - I have various small bits of feedback written down from people who've played the game over the last few months that I haven't got around to, so will look through my notepad and see what areas of the game I can polish a little. Then I want to get stuck into some proper level design in December. So this devlog should hopefully become more varied than it has been recently
|
|
|
Logged
|
|
|
|
JobLeonard
|
|
« Reply #682 on: November 26, 2017, 03:54:50 AM » |
|
Leilani is a intentionally a bit of a grumpy blank slate for the player to control, but I wanted the antagonist to show much more personality. Well, rest assured that you succeeded I don't know if you were going for a Team Rocket-style "chewing on the scenery" vibe, but that's what I'm imagining her personality to be (in the best possible way) EDIT: the tropes predict that she'll have a robo-sidekick.
|
|
|
Logged
|
|
|
|
Ishi
|
|
« Reply #683 on: November 27, 2017, 11:57:41 AM » |
|
Leilani is a intentionally a bit of a grumpy blank slate for the player to control, but I wanted the antagonist to show much more personality. Well, rest assured that you succeeded I don't know if you were going for a Team Rocket-style "chewing on the scenery" vibe, but that's what I'm imagining her personality to be (in the best possible way) Thanks!! Team Rocket is a good source of inspiration, I hadn't really considered that! I never watched much of the Pokemon anime in the past but am keeping up with the Sun & Moon series (Alola region ftw) so hopefully I'll get some ideas from that. Having Kuila spying on Leilani from the backdrop now and then could be quite fun. EDIT: the tropes predict that she'll have a robo-sidekick.
Presenting Kuila and her toolbox.
|
|
|
Logged
|
|
|
|
io3 creations
|
|
« Reply #684 on: November 27, 2017, 12:16:53 PM » |
|
The way Kuila flies off-screen after being defeated seems a bit odd. That tends to happen to minions and other less significant enemies. Based on your description, I'd imagine her for a while and then either picked up by one of her robots/minions or running away. Then again, I'm basing that based on my (somewhat limited) experience of 2d side scrolling games so maybe that type of event is being used in games that I haven't played?
|
|
|
Logged
|
|
|
|
qMopey
|
|
« Reply #685 on: November 28, 2017, 02:00:42 PM » |
|
Also happens in Cave Story with cat boss thingy (3 min 16 seconds):
|
|
« Last Edit: November 28, 2017, 02:06:39 PM by qMopey »
|
Logged
|
|
|
|
Al_B
|
|
« Reply #686 on: November 28, 2017, 02:36:42 PM » |
|
I like this a lot. I get a slight Star Tropics, adventure Island kinda thing. Also, were you influenced by Moana by making the main character a gal? Sorry if that was a stupid remark.
|
|
|
Logged
|
|
|
|
io3 creations
|
|
« Reply #687 on: November 28, 2017, 03:40:07 PM » |
|
Also happens in Cave Story with cat boss thingy (3 min 16 seconds):
Sure, I can imagine it happening, especially if there's a cutscene right after. Perhaps my main issue is that the single gif gives me the impression that Kuila is basically dead, that happens to fit perfectly the scene you linked.
|
|
|
Logged
|
|
|
|
qMopey
|
|
« Reply #688 on: November 28, 2017, 08:45:24 PM » |
|
Dr. Robotnik typically flies away in a robot after defeat, and it never seems like he dies
|
|
|
Logged
|
|
|
|
EJlol
|
|
« Reply #689 on: November 29, 2017, 12:22:50 AM » |
|
I agree with io3 creations here. The robot feels heavy during the fight, and when the fight is over it suddenly becomes able to kick it around without any weight? It just feels weird. And yes I also expect Kuila to run away instead of dieing.
|
|
|
Logged
|
|
|
|
JobLeonard
|
|
« Reply #690 on: November 29, 2017, 03:45:45 AM » |
|
Dr. Robotnik typically flies away in a robot after defeat, and it never seems like he dies That's exactly io3's point: he runs away, he doesn't fall off the screen...
|
|
|
Logged
|
|
|
|
Ishi
|
|
« Reply #691 on: November 29, 2017, 10:06:33 AM » |
|
This is really good feedback, thanks all! I definitely don't want to give the impression that she's beaten for good. I don't have any dialogue in the game so everything needs to be presented as clearly as possible. How about, instead of flying off the screen, she crashes into the floor. She can lie there dizzy / crying during Leilani's celebration, and then escape off the screen at the end. Basically the same as Bowser Jr's escape after every fight in NSMB: It's always a bit dumb how the hero just lets the bad guy escape... but it feels fitting. The robot feels heavy during the fight, and when the fight is over it suddenly becomes able to kick it around without any weight? It just feels weird.
Yep I need to make this bit better, the way the tank bounces around isn't very weighty or satisfying. I like this a lot. I get a slight Star Tropics, adventure Island kinda thing. Also, were you influenced by Moana by making the main character a gal? Sorry if that was a stupid remark.
Not a stupid remark at all I checked the dates to make sure I wasn't misremembering, I started this project in Feb 2014, and Moana was announced in Oct 2014. So Leilani came first I do remember being super hyped at the announcement!
|
|
|
Logged
|
|
|
|
JobLeonard
|
|
« Reply #692 on: November 30, 2017, 12:13:52 PM » |
|
The robot feels heavy during the fight, and when the fight is over it suddenly becomes able to kick it around without any weight? It just feels weird.
Yep I need to make this bit better, the way the tank bounces around isn't very weighty or satisfying. Here's an idea: the tank has an "infinite" supply of explosive cannonballs inside. So you could make it end up with one of them stuck in the deformed muzzle when it's damaged enough, let Leinlani trigger that bomb by bumping into it, and then have that explosion trigger "all" the bombs still inside the tank. Then big boom. Also, heavy = lots of momentum, so you could add more screen shake in the direction of impact (representing momentum being transferred to the world's frame of reference) to communicate that.
|
|
|
Logged
|
|
|
|
Ishi
|
|
« Reply #693 on: November 30, 2017, 01:29:43 PM » |
|
Here's an idea: the tank has an "infinite" supply of explosive cannonballs inside. So you could make it end up with one of them stuck in the deformed muzzle when it's damaged enough, let Leinlani trigger that bomb by bumping into it, and then have that explosion trigger "all" the bombs still inside the tank. Then big boom.
That's a fun idea, but I'm trying to avoid anything being too specific to this boss - other versions of the tank may not have turrets / bombs etc. Here's what I've been working on this evening for it: I improved the speed and timing of how the tank bounces to give it more weight, the screenshake when the tank hits the wall now goes in the left/right direction that the tank is travelling. Also did a quick placeholder for Kuila landing on the floor instead of going off screen. I do want to beef up the initial moment when Leilani hits the tank with extra effects and probably have the tank explode to better explain where it gets all its velocity from. I think Leilani could also do with a stronger animation / pose after she has just punched the tank to make it explode. What do you think?
|
|
|
Logged
|
|
|
|
Louard
|
|
« Reply #694 on: December 01, 2017, 08:57:46 AM » |
|
LOVING Kuila's animations! Also, I liked her dropping off the screen, but I get what folks are saying. I would suggest having her fly back onto screen, pause, shake her fist at Leilani then fly off the top of the screen. Perhaps holding onto a propeller gadget like this... Sorry.. came out bigger than expected... As for the weightiness of the boss tank being bounced around, here's a totally non physics based animation trick for adding a sense of weight: longer hang time, stronger gravity. So, if you imagine the arc the tank traces through the air as it rises and falls, you can imagine the whole arc taking the same amount of time, but cramming more of the "drawings" up at the top of the arc. In other words, you'd be changing the spacing, not the timing. The effect should be that the tank will rise fast, hang longer then drop fast making it feel much less floaty and moon-gravity-y. Like it takes a lot of force (momentum) to get it up there then it crashes down with equal force. Lookin' fantastic, as always!
|
|
|
Logged
|
-Louard louardongames.blogspot.com
|
|
|
Louard
|
|
« Reply #695 on: December 01, 2017, 11:58:05 AM » |
|
OOH! Just remembered that I also wanted everyone to notice the detail of the missing spikes when the tank blows up. Ishi, you seem to be displaying a clarity and consistency in your visual language that, frankly, many games lack. I love that the spikes tell the player that Leilani will get hurt if she touches the tank (thus forcing her to kick the bombs back at it) and the spikes being replaced by bandaids when the tank blows up makes it all make sense when she runs up to kick its now harmless husk.
A+
|
|
|
Logged
|
-Louard louardongames.blogspot.com
|
|
|
Snö
|
|
« Reply #696 on: December 01, 2017, 12:44:31 PM » |
|
Amazing work Animations and visuals are super great!
|
|
|
Logged
|
|
|
|
Ishi
|
|
« Reply #697 on: December 01, 2017, 02:28:16 PM » |
|
... The effect should be that the tank will rise fast, hang longer then drop fast making it feel much less floaty and moon-gravity-y. Like it takes a lot of force (momentum) to get it up there then it crashes down with equal force. Ahh this is amazing art! Thank you :D I love the propellor gadget, I'm tempted to put something like that in the game! For the weighty bouncing, I do use that exact animation trick on the jumping curve for the tank, and I had also used it on the tank's death bounce but then scaled the effect down and then forgot about it. I'll turn it up a bit and see how it looks. I had turned it down previously because it didn't do much in the first iteration where the tank just flew through the air, but now the tank bounces on the floor inbetween Leilani hitting it it should have a better effect.
|
|
|
Logged
|
|
|
|
WildGamut
|
|
« Reply #698 on: December 01, 2017, 03:08:50 PM » |
|
This game looks incredible! The level of polish is really impressive and the graphics are refreshingly colourful and whimsical. The gameplay looks like a lot of fun too!
Seriously looking forward to this one, keep it up!
|
|
|
Logged
|
|
|
|
Ishi
|
|
« Reply #699 on: December 03, 2017, 03:30:16 AM » |
|
Scancodes vs KeycodesI implemented a nice feature in my keyboard input system this week. (I don't know this stuff in detail so hopefully the information here is all correct! I believe these are general concepts that apply to all keyboard input, however I will refer to some SDL-specific enums and functions.) I ended up chatting with a friend about keyboard input, and he brought up this really useful distinction between Scancodes and Keycodes. Scancodes and Keycodes are both values that refer to a key on the keyboard. But the difference is: - Scancodes refer to a location on the keyboard - for example SDL_SCANCODE_Z is the key in the bottom left of the keyboard,
regardless of what's written on the key. - Keycodes refer to what's actually on the key - for example SDLK_z or 'z' refers to the Z key, no matter where it is on the keyboard.
I was already aware that keyboards have different layouts around the world, and that games commonly don't handle them properly, but hadn't yet given a lot of thought to how to solve it. As an example I will compare the UK and German keyboards. The main important difference for me is that the Z and Y keys have been swapped around. Luckily, the problem was pretty simple to solve. Before this week my code dealt exclusively with Scancodes. The main advantage of doing this is being able to supply sensible default controls for the game. By default when you first launch the game, the jump action is mapped to SDL_SCANCODE_Z and the roll action is mapped to SDL_SCANCODE_X. This means that on a UK keyboard the inputs will be 'Z' and 'X', and on a German keyboard the inputs will be 'Y' and 'X'. The only problem that arises is that when I display the key on the screen, it's incorrect, as on a German PC is still shows Z. So before displaying the key I convert it from a Scancode to a Keycode. SDL has a function to do just that - SDL_GetKeyFromScancode. So I convert it to a Keycode, and display the appropriate key according to that value instead. Keycodes never need to feed back into any other area of the game so it's a nice self-contained fix. Swapping my PC from UK to German language now changes the keys! UK -> German
|
|
|
Logged
|
|
|
|
|