Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411504 Posts in 69373 Topics- by 58429 Members - Latest Member: Alternalo

April 25, 2024, 05:08:58 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsLeilani's Island
Pages: 1 ... 46 47 [48] 49 50 ... 67
Print
Author Topic: Leilani's Island  (Read 411773 times)
Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #940 on: April 06, 2019, 07:03:53 AM »

Hi all!

A quick post to keep the devlog feeling lively.

I'm currently entering a busy-with-stuff-other-than-Leilani period, so for the next couple of months I may not post much on here. I'll still be working on the game when I can, but it's easier for me to be upfront about not updating the devlog, as it takes off some pressure!

For now here are the gifs from the previous couple of Screenshot Saturday posts I made on twitter. I've pre-prepared gifs for the next 5 saturdays so I can keep up my current streak even while I'm busy!





Thanks to this tweet I realised why I've never had any luck making gifs that run at 60fps. But gif does reliably support 50fps - so I've started using that for my gifs. They seem to come out looking pretty smooth.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #941 on: April 06, 2019, 05:07:19 PM »

Oh wow... that is sooooo much better looking - and the gifs looked great before to begin with!
Logged
Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #942 on: April 14, 2019, 12:02:35 PM »

A quick update with the latest Screenshot Saturday gif! As I mentioned previously I'm too busy at the moment to do a lot of game dev, so just have a set of gifs premade for posting on saturdays.



I was excited last week to get a shoutout in Rock Paper Shotgun's screenshot saturday highlights! I only found out about this because it popped up on the Steam Community page for the game, presumably automatically thanks to the article linking to the Steam page. I didn't realise that was a feature but it was useful for me here.

The game was also featured in a nice article from myPotatoGames, which is based in Hawaii so that gave me a warm fuzzy feeling. Smiley
Logged

Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #943 on: April 26, 2019, 11:16:46 PM »

Hiya,

Here are the last couple of Screenshot Saturday posts!



Logged

JobLeonard
Level 10
*****



View Profile
« Reply #944 on: April 27, 2019, 06:21:39 AM »

The screen-freeze as she rolls into those blocks in the first gif feels soooo good
Logged
Superb Joe
Level 10
*****



View Profile
« Reply #945 on: April 27, 2019, 07:16:51 AM »

Not too much to report this week - I've been steadily fleshing out the waterfall entities and thinking about ways to use them in levels.

Some examples of new behaviours in a gif:


extremely good
Logged
Dr. Büni
Level 0
***



View Profile
« Reply #946 on: May 16, 2019, 07:44:34 AM »

Hi, Ishi. Fantastic job on the game. It is on my wishlist since you first posted the link to the game on the Steam store here. You seem to have a lot of passion for it.

That said, can I ask you a few questions? If so, do you have sales estimate for your game? If so, do you believe it will sell well (although "well" is relatively relative). I ask because people say a lot about indie platformers selling poorly, but I can't imagine Leilani's Island not selling well (if it does sell poorly it would be for lack of marketing - I never see anything about it anywhere outside of tigsource).

Thanks. Best of luck!
Logged
alaNintendo
Guest
« Reply #947 on: June 03, 2019, 08:18:06 AM »

Sonic meets Lilo & Stitch! Love it!  Kiss
Logged
arborist
Level 0
**


broken mirrors and useless prayer


View Profile
« Reply #948 on: June 03, 2019, 10:08:59 AM »

This is an absolutely beautiful platformer. Everything about it is charming and fun and full of effort, so please focus on your non-Leilani's-Island stuff, and I'll hope that when you return, it's rested and with a bunch of ideas and resolve for the next tasks at hand! Smiley
Logged
Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #949 on: June 13, 2019, 05:37:17 PM »

Aloha! It's time to get back to working on Leilani and this devlog Coffee

New country!

The reason for my being busy over the last few months is that I've moved to a new country - I said goodbye to England and am now living in Hawaii, USA with my wife's family. It's very appropriate scenery (and heat) for continuing to work on Leilani.

I intend on Leilani becoming a part-time project (rather than only in my free time) while I do contract work for part of the week. I'm not sure how this will affect my development speed for the game - I won't suddenly be doing way more hours on it! The hope instead is to have a better work/life balance where I can make steady progress on Leilani without it taking up as much evening and weekend time as it used to. I'll see how things go as I get more settled into my new life.

Game progress!

I haven't been totally idle on the game over the last couple of months - I've been chipping away at making a few additions and tweaks to the gameplay that I wanted to try out. I'm not quite done with them yet, I plan on spending time on a good devlog post about it when I have time to do so.

Rumble bug

I do have one thing I can talk about for this devlog. My Windows PC moved with me to the US, but I didn't have space to ship my monitors too. Once I'd got it all set up and hooked up to a shiny new monitor, I was playing some Leilani, and noticed that the rumble was behaving weirdly.

I covered the controller rumble code in a previous devlog post. As mentioned there I have an Xbox One controller which has nice responsive rumble motors which allows for some really nice effects (e.g. short, light but distinct rumbles). However when I was playing the rumble didn't seem very responsive any more. I used the rumble test mode (also shown in the aforementioned devlog post) and sure enough, the low frequency rumble wasn't working properly. If I set to rumble at medium strength for a second, it would maybe do nothing for a while, and then suddenly rumble way too strong.

I thought maybe the controller was damaged in transit, but then had a hunch - my new monitor supports 120Hz so Leilani was running at a higher framerate than it used to. I tried setting the monitor to 60Hz and suddenly the rumble was working correctly again Grin

It seems that calling SDL_HapticUpdateEffect at very high frequencies can have some strange effects on the Xbox One controller. The controller seems to get confused about the strength of rumble it should be doing, or something. I came up with two solutions:
  • 1. Don't call SDL_HapticUpdateEffect if the rumble strength hasn't changed. e.g. if the last rumble I sent to the controller was 50% low frequency rumble, and I still want the same thing, there's no point sending more data to the controller.
  • 2. If the rumble has changed (for example if the strength of the rumble effect is decreasing over time, it'll be different every frame) then limit the calls to SDL_HapticUpdateEffect so there's 1/60th of a second delay in between each one. This stabilises the effect so it behaves the same at 120fps as it does at 60fps.

One of those small bugs that could have easily slipped through the net, I'm glad I caught it!
Logged

Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #950 on: June 13, 2019, 05:54:34 PM »

Hi, Ishi. Fantastic job on the game. It is on my wishlist since you first posted the link to the game on the Steam store here. You seem to have a lot of passion for it.

That said, can I ask you a few questions? If so, do you have sales estimate for your game? If so, do you believe it will sell well (although "well" is relatively relative). I ask because people say a lot about indie platformers selling poorly, but I can't imagine Leilani's Island not selling well (if it does sell poorly it would be for lack of marketing - I never see anything about it anywhere outside of tigsource).

Thanks. Best of luck!

Thanks!

I never looked into anything like potential sales figures - at the moment I'm just naively making the game that I want to make. I'm slowly building up a decent twitter following, and I'm happy with the number of steam wishlists (though I'm aware that I should expect a low conversion rate of those). Better marketing (whether doing it myself or eventually teaming up with a publisher) is one of the things that I will need to look more into as development continues, especially now the game is officially no longer a hobby project.
Logged

Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #951 on: June 18, 2019, 08:14:03 PM »

I'm back to discuss some of the gameplay changes I've been working on. I've been feeling for a while that some areas of the gameplay were lacking, so I committed to doing some experiments with new features.

Back-spin

Let's begin with the one that I'm on the fence about keeping in the game - the mid-air backspin.



Tapping the Roll button in the air does a quick backwards spin. It's similar to the mid-air twirl in the New Super Mario Bros games - it gives Leilani a little more airtime. But unlike Mario's move, it cancels out some of Leilani's sideways velocity, so it's not just a free way to gain more distance on a jump. If Leilani is moving quickly it can be a useful way to precisely land on an enemy (similar to how cancelling Wario's Shoulder Charge in Wario Land 4 immediately drops him downwards).



One reason I'm hesitant to keep this move is that the roll button is used a lot and adding more functionality to it could get in the way. However I haven't actually playtested this at all so will keep it in for now. I do find it quite fun to use personally Smiley

Variable falling speed

This is an almost invisible feature I'm stealing from Super Mario World (and I believe Super Mario Maker also does this). Holding the jump button while in the air subtly reduces Leilani's falling speed.

I set up the two falling speeds so they are either slightly faster, or slightly slower, than the falling speed of other objects in the game. So by holding or releasing the jump button, you can catch up with objects in the air.



This is a silly situation that's pretty unlikely to feature in the game :D but I like the feature nontheless. I think holding the jump button to stretch a jump by a few more pixels is a kind of natural input to do, even if it's not totally obvious that it has made a difference to Leilani's movement.

Leilani Tougher Against Enemies

This one is actually reverting a previous change I'd made. Originally, Leilani could bump into non-spiky enemies without taking any damage, stunning the enemy in the process. At some point I changed this so Leilani would take damage from any enemy she walked into, in an effort to add some 'challenge' to the game.

I grew unhappy with this because it works against the form-fits-function principle that I try to use throughout the game. If something isn't visibly spiky then it shouldn't hurt Leilani. So now I've changed it back so she can bump into enemies again.



Even if there are fewer ways for Leilani to get damaged, it'll feel more justified when she does take damage! And it suits her tough character better.

Grabbing objects

The biggest gameplay change that I'm trying out - grabbing objects. I avoided this for a long time just because it seemed like potentially a lot of work. But when playing the game without it, it really feels like a missing part of Leilani's moveset.

To use a real example from the game, trying to get this enemy into the desired position is just awkward - having to move it around by bouncing on top of it, or kicking it which usually sends it further than you'd like.



Put if you can hold a button to pick up the enemy - it's so much easier.



It's instantly fun and useful in most of the game's levels so I think it's a keeper.



Fire Leilani Improvements

A common theme since the start of the devlog has been "I'm not happy with the usefulness of the fire powerup yet." I focused on three main areas to make the powerup better and hopefully finally solve this problem.

The only real ability of Fire Leilani previously was to build up heat (by rolling while pressing forward) eventually turning her into a fireball. In this state she moves faster and can instantly destroy blocks.

Fire Leilani - Better Heat Building Mechanics

The mechanics for building up Leilani's heat level were previously a bit limiting. You had to roll while pressing forwards, while on the ground, for a fixed amount of time in order to trigger the fireball. Stopping rolling, jumping or even just falling off a ledge would instantly remove all of the built-up charge.

It's now more analogue. Charge is lost gradually over time. It's lost faster if Leilani stands still...


I'm using debug here to display the charge level of the fire powerup; in normal gameplay it's represented through Leilani's sprite glowing orange.

... and it's lost more slowly if she keeps moving...



... so it's possible to build up the charge in more situations if you don't spend too long off the ground.



Fire Leilani - More Powerful Fireball

In the fireball state Leilani can now instantly kill small enemies. Previously she would just roll into them as normal.


I might add the hit-pause effect when destroying enemies this way, the same as when destroying the blocks.

This gives the fireball a definite and obvious use and highlights the fire powerup as being the "offensive" powerup (where the floaty-bubble water powerup is the agility/defensive powerup).

One reason I originally avoided implementing the fireball power this way was that the interaction of instantly killing an enemy is a little abrupt compared to how most other interactions between Leilani and enemies works. Often enemies can be quite useful tools within a level (to kick into other enemies, for example) and instantly killing them can suddenly deprive you of that tool. However the next change is designed to remedy that issue somewhat.

Fire Leilani - Throwable Fire Projectile

Fire Leilani can now press Up+Grab to generate a handheld fire projectile (I'm avoiding calling it a fireball since I also refer to Leilani's flame state as a fireball).



This is inspired by using Up+B to pull out a coin in Wario Land which can then be thrown at enemies. The projectile takes a little while to charge, so it's not instant-use anywhere you like - it's best to find a safe spot to charge it up. Letting go of the grab button before it's ready (before it turns red) will cause it to disappear.


This still needs some particle effects and whatnot to indicate the projectile failed to charge.

However there is one shortcut to charging the projectile - when Leilani has built up her fireball charge, she can instantly generate the projectile in return for losing the charge.



It's possible to do this instant-projectile even in mid air, and immediately kick the projectile at something, so it adds flexibility if you plan ahead.

Summary

I'm pretty happy overall with these changes, I certainly think the gameplay will feel a little more fleshed out because of them. There are so many situations in the game that the player can now approach in multiple different ways, which I love - the player can feel empowered by all the options they have available.
Logged

zengsadi
Level 0
**


zengsadi


View Profile WWW
« Reply #952 on: June 18, 2019, 10:02:37 PM »

Very cute! Game feel looks very good Gomez
Logged

making a retro style puzzle platformer!
Twitter |Steam
JobLeonard
Level 10
*****



View Profile
« Reply #953 on: June 19, 2019, 06:32:46 AM »

From the gifs alone I can tell that I would love both the back-spin and the variable falling speed. It gives that subtle feeling of more control and ability to really master movement in the air that can make a platformer truly satisfying, especialy if both are in. Plus it looks like the control scheme for it is pretty intuitive!

All other changes look great as well!
Quote
(I'm avoiding calling it a fireball since I also refer to Leilani's flame state as a fireball).
It's a fire RASENGAN! Tongue
Logged
Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #954 on: June 24, 2019, 01:21:02 AM »

Aloha!

I haven't begun my contract work yet and was able to spend quite a bit of time on Leilani as a result. I started using toggl.com to track the amount of time I'm working on the game - if I stick with using the tool I'll write a post about how I'm finding it in the future. For now:

Poison Pipeway: Part 3

This is part 3 of detailing the process of creating this level. (Part 1, Part 2)

Last time, the level was pretty much just a disparate collection of experiments, with a beginning and end. It's now in a more fully-formed state.

I'll go through the level and describe what's new or changed. The major platforming sections that I've shown before are largely unchanged - I've added interstitial sections to pad out the level and vary the gameplay a bit.

Post-intro

The intro area itself is unchanged.

After entering the pipe, the drillbot (name not final) enemy is reintroduced. The enemy destroys blocks which highlights its dangerous feature.



The spinning-circle-of-platforms idea is introduced in a pretty easy configuration. Then a block formation which shows a poison waterfall having its flow blocked. Destroying the blocks shows the waterfall cascade downwards.



At the moment it's a bit too easy to set off the chain reaction of blocks, then rush forwards before you realise the waterfall will come through the gap. So this will need some tweaking. One thing I do like is that after dying, it's easy to rush through this section if you don't want to interact with it.

Enemy section

After a series of tight platforming comes this enemy-heavy section. It still features waterfalls to dodge but is mainly focused around avoiding or destroying the enemies.



You can approach it in various ways - try to rush through, destroy enemies one by one, throw enemies at other enemies, or set off crazy rolling chain reactions.

After this follows another spinning platform section, and then the player goes through a tube to the second main area of the level.

After checkpoint

Similar to the start of the level, there's another drillbot enemy and a block formation containing a powerup. This time the enemy provides a little danger for players that choose to get the powerup. The powerup is also likely to float into the water so it's not just freely given to the player. If the player dies multiple times they can learn a safe way to get the powerup from this section.



Rainbow drops

After some more spinning platforms there is this section, which I showed in Part 2 and talked about adding the Rainbow Drop challenge to it. I've now done that:



It's not too tough but you do have to keep your eye on the platforms and the rainbow drops at the same time. Collecting all the drops without any of them landing on a platform grants a bonus powerup.

Final enemy section and tension raising

After another spinning platform section is another brief enemy encounter - not as long as the enemy section in the first half of the level. Just an opportunity to beat something up.

This is followed by some waterfall-dodging which is designed to raise tension without actually being that difficult. As the platforms get higher, the window for jumping through the gap in the waterfall gets tighter.



If the player gets the right timing on the first waterfall it's possible to roll all the way through without stopping.

Ending

I've reworked the ending to be just two sets of spinning platforms. The little curveball for the player here is that the two circles have different numbers of platforms, and different speeds - which isn't done elsewhere in the level. Hopefully it offers just the right amount of challenge without being overly threatening to players who scraped through as small Leilani and just want to finish the level.



The bottom path for this ending section is no longer totally safe - but the dangerous spots are indicated by pipes leading into the floor underneath the waterfalls. I may go back and add this indicator throughout the whole level where appropriate, so it becomes a common thing throughout the level.

Oh - and I also did a first pass on adding some background detail after beating the level, showing the factory which is the next level on the map.

What's next

The main thing left is to do is visual polish throughout the level - a lot of the platforms are just placeholder blocks that I put down without much thought. I'll probably do a few other gameplay tweaks along the way, then it'll get playtested at some point in the future and I'll make further changes based on that.
Logged

greenhat
Level 0
*


View Profile
« Reply #955 on: June 26, 2019, 11:13:48 AM »

Just wanted to say that I've followed the development of this game for a couple of years now (if my memory is correct). Seeing your progress and reading your posts has left me inspired. I've also been awed by how smooth and beautiful the gameplay, physics, and everything else looks.

I hope you find success with this game. With how much effort and documentation you've put into it, I'd argue it's well deserved
Logged

FALCON PUNCH!
Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #956 on: June 28, 2019, 01:05:48 PM »

Thanks greenhat Smiley

I've worked on a new mechanic this week:

Seeds & Vines



I added these seed objects and a place for them to be planted. After planting, they grow into vines which can take pretty much any shape. The aim for this mechanic is to make use of Leilani's new object carrying ability.

Vine tiles

I implemented the vine using the same system I use for moving platforms - the vine object has its own grid of collidable scenery tiles which is separate from the level's scenery. The vine is constructed from a tileset which looks like this in the Tiled editor:



For moving platforms, I manually draw the tiles that form the platform. Similarly I could use this vine tileset to place a pre-grown vine in the level. However for the vines that grow dynamically, I decided to automate the process of placing the tiles.


Click image for full size

On a separate "Vines" layer (see the layers panel on the right) I draw out lines that represent where the vines will grow. The object type (circled in red on the left) determines whether the vine has collision ("VineFront") or not ("VineBack"), and these two object types show up as different colours in Tiled.

When the vine entity is created, it uses the lines to automatically generate the scenery tiles for the vine. Since the vines don't have any junctions - it's just a continuous single vine until the end - the logic for choosing tiles is pretty simple.

The lines are also then used to determine in which order the tiles will appear when the vine starts to grow. Once the seed has been planted, a vine object that's positioned in that spot will be triggered to grow. One by one it reveals each tile of the vine, along with the particle effect which helps to distract from the harsh flat edge that the vine has while it's growing.



It looks better in motion than in a still image.

Vine collision

The solid parts of vines has collision just like the ground or walls in a level do.

The tricky part was getting the collision to work nicely while the vine was still growing:



The collision box for each individual tile doesn't actually move, but expands upwards along with the visual reveal of the vine. So entities that are colliding with the vine aren't really aware that it's moving - which is fine.

I ran into an issue where after one tile had been fully revealed, and the next tile above it started to appear, Leilani would be suddenly pushed sideways off the vine. Due to the way the collision checks work, in vertical terms she was only detecting the fully revealed tile and remained standing on that, without noticing that a new tile had appeared above it. But then the horizontal collision would notice the new tile and push her sideways out of the collision.

I did two things to fix this:

  • The collision box for the newly appearing tile now extends downwards into the previous tile. This ensures that the vertical collision for the entity standing on the vine picks up on the fact that a new tile has appeared, when it checks for floor collision at the bottom of the entity.
  • The newly appearing tile briefly has a different collision type - instead of being entirely solid, it has a "top only" collision which does not register any horizontal collision. This prevents the entity from being pushed sideways out of the new tile.

Objects on vines

The vine can sprout objects such as the leaf platforms shown in the first gif.

These are placed like normal entities, and they exist separate from the vine itself. This seemed the easiest way to implement it, rather than building any complex system where the vine itself is responsible for spawning entities as it grows.

For example the leaf platform entity exists and is active even before the vine is grown - but it's invisible and has no collision. The leaf entity is responsible for performing a query each frame to check if a vine has grown next to it. If so, the platform appears with an animation and is instantly collidable.

Vines can also have spikes! These work the same way.

Logged

omnilith
Level 2
**



View Profile
« Reply #957 on: June 28, 2019, 03:37:45 PM »

This game is looking very delightful. Good luck to you!
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #958 on: July 02, 2019, 08:14:51 AM »



I added these seed objects and a place for them to be planted. After planting, they grow into vines which can take pretty much any shape. The aim for this mechanic is to make use of Leilani's new object carrying ability.
Kiss

I absolutely love this! One question though: how will you teach the player that a seed can be planted in the first place?
Logged
Aw0
Level 0
***


ㅇㅅㅇ


View Profile WWW
« Reply #959 on: July 02, 2019, 11:39:00 AM »

I am consistently blown away at how good this looks. And it keeps getting better every time I see it! :D amazing work, dude!
Logged

Pages: 1 ... 46 47 [48] 49 50 ... 67
Print
Jump to:  

Theme orange-lt created by panic