Java-Gaming.org Hi !
Featured games (90)
games approved by the League of Dukes
Games in Showcase (711)
Games in Android Showcase (213)
games submitted by our members
Games in WIP (785)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1] 2
  ignore  |  Print  
  Lala - Now available in on Google Play  (Read 13607 times)
0 Members and 1 Guest are viewing this topic.
Offline bornander
« Posted 2016-04-14 17:56:37 »

For longer than it should have taken me, I have been mucking about with a prototype for a game that is sort of a bridge-building kind of physics puzzle intended for young kids.

I am doing this partly because I wanted to try doing a game where hand-eye coordination isn't the most important thing (like Hovercraft), and partly because I wanted to do a game that my kids can play (unlike Grapple, which got an age-rating of 13 and up because of the blood persecutioncomplex).

So with my daughter's "help" I've been building Lala, a game about helping aliens from planet Lala to reach their space-ships so that the can get back home.

It's available for download on Google Play!
The game is free, has no ads and there are no in-game purchases.

If anyone wants to try the desktop version (which I mainly used for ease of development) it can be downloaded from here; Lala desktop version.

Game trailer;
<a href="http://www.youtube.com/v/mVVZ-IUYYHQ?version=3&amp;hl=en_US&amp;start=" target="_blank">http://www.youtube.com/v/mVVZ-IUYYHQ?version=3&amp;hl=en_US&amp;start=</a>



The game is, as I am guessing most of you can see, based on Kenney's tilesets and it will when (if) finished have five different types of aliens, in five different environments in sixty different levels.



After Hovercraft I promised myself my next game wouldn't be one where I had to do a lot of level design. I broke that promise with Grapple and I am already regretting it Smiley

Game play will be about dragging blocks to make it possible for the alien to go from the left side of the screen to the right, where his space-ship is waiting.

Click to Play


The player does not directly control the alien, it's all about building by placing blocks.

Basic game play is implemented, but it's still a far away from being finished (I am sort of hoping that if I run a devlog here it will push me to finish it).

Main platform will be Android, but since I am using libGDX a desktop version might also come out of it. I am using Box2D for the physics and the levels are made using Tile Map Editor to create the levels.

Any feedback is greatly appreciated.

Try my Android games:
Grapple
Hovercraft
Lala
Offline FabulousFellini
« Reply #1 - Posted 2016-04-15 00:29:14 »

I really like this idea for little kids...a nice idea that's not too difficult.  And I bet kids will get satisfaction out of seeing the alien able to walk across the screen.

-FabulousFellini
Offline bornander
« Reply #2 - Posted 2016-04-16 15:19:55 »

I really like this idea for little kids...a nice idea that's not too difficult.  And I bet kids will get satisfaction out of seeing the alien able to walk across the screen.
Yeah, I think making sure that it is not too difficult and that the chance of getting stuck is low is important when your target age group is 3-6.

The game will have the normal sort of "unlock" mechanism where you get access to the level 2 only when you've completed level 1, but after the first sort of tutorial levels completing a level will unlock more than just one other level.

I am hoping that doing it that way will make it feel like there's more choice will there still is an incentive to try to complete all levels.

Try my Android games:
Grapple
Hovercraft
Lala
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline bornander
« Reply #3 - Posted 2016-04-22 06:13:41 »

For building the UI for the menu and on-screen controls I am using  Scene2d, which is libGDX's way of composing screens using Actors and Actions.

While I am not the biggest fan of the way layouts are handled, the way you can add animations to your UI elements is really cool.
By adding Actions to Actors most transforms (and other manipulations) becomes easy to add and fine-tune.
Click to Play

To make the level selection buttons fall in like the example above I simply need to add an action for it;
1  
2  
float timing = MathUtils.random(0.8f, 1.0f);
button.addAction(moveTo(xPos, yPos[row], timing, Interpolation.sine));

The timing variable is the amount of time the entire animation will take and it's set to a random value so that all the buttons fall in at slightly different speeds.

As the "old" level selection buttons needs to be removed from the scene when they've fallen off the screen I utilize the sequence Action which conveniently allows me to stack a series of Actions to be executed in order;
1  
2  
3  
4  
float d = MathUtils.random(0.8f, 1.0f);
button.addAction(sequence(
    moveTo(button.getX(), -button.getWidth(), d, Interpolation.pow4),
    Actions.removeActor()));

This way the animate (with interpolation of my choice), to a position that is below the bottom of the screen (-button.getWidth() in this case) and then the next action of removing it is automatically executed for me.

Sometimes Actions needs to run in parallel, when a level is completed a star is added to the level that fades in and pulses, and the padlock of the next level is dropped whilst spinning;
Click to Play

Creating this effects are as simple as;
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
// Fade in and pulse the star
image.addAction(
    parallel(
        alpha(1, 1, Interpolation.sine),
        sequence(
            scaleTo(2, 2, 1, Interpolation.sine),
            scaleTo(1, 1, 1, Interpolation.sine)))
);

// Drop and rotate the padlock
image.addAction(
    parallel(
        moveTo(actor.getX(), -image.getHeight()*2, duration, Interpolation.swingIn),
        rotateTo(180.0f * (RND.nextFloat() - 0.5f), duration, Interpolation.sineIn)));

Try my Android games:
Grapple
Hovercraft
Lala
Offline PlainBug
« Reply #4 - Posted 2016-04-28 14:55:05 »

Hi,

happy to see your newest project after Grapple.
I like the idea, also the effects when you complete a level look really cool. But I think the background in the menu is moving a little bit too fast to the left, maybe you can play with the velocity there.

I can't wait to see more game-play and how you handle it easy enough for little kids Wink

Offline bornander
« Reply #5 - Posted 2016-05-06 12:29:42 »

I like the idea, also the effects when you complete a level look really cool. But I think the background in the menu is moving a little bit too fast to the left, maybe you can play with the velocity there.
Point taken, I've adjusted this down a bit to make the menu look less hectic.

I can't wait to see more game-play and how you handle it easy enough for little kids Wink
Hopefully I'll be able to show off more of the UI and, I am struggling a bit with the conflict between allowing many different actions whilst at the same time being intuitive enough for kids so I'm interested in any feedback I can get in this area.

Try my Android games:
Grapple
Hovercraft
Lala
Offline bornander
« Reply #6 - Posted 2016-05-08 18:34:50 »

I am working on the HUD and I want to use big, easy to hit buttons that will suit kids.
Click to Play

The buttons are arranged so that the most frequently used ones are at the bottom. On the left are controls for controlling the alien (i.e making him go or stop/restart) and also a button for clearing any blocks placed.
On the right are controls for rotating and mirroring the blocks.

Currently I have no touch-gestures for rotating and/or mirroring, only to move the blocks around but this might change if it looks like that's a more natural way of manipulating the blocks.

The blue tray thingie at the bottom center is where the available blocks are, it auto-hides when a block is being moved or the alien is walking.

Try my Android games:
Grapple
Hovercraft
Lala
Offline bornander
« Reply #7 - Posted 2016-05-16 18:53:57 »

As I said in my initial post I am using Box2D for this. The reason for this is partly getting collision detection for free but also because I want a badly built bridge to topple and fall over in a manner dictated by physics.

Since I want the alien to interact with the blocks I needed a way to represent him as rigid body and a way to make him move.

For Grapple when solving a simular problem I used a capsule (circle for feet and head with a box in between) that I pushed in the direction the player wanted to walk, but for this game that didn't work out as well.

It caused the alien to push some blocks around and it was messy constructing the levels.

Instead I decided to represent the alien as a sphere, and instead of pushing it I add torque to it.

So when the game looks like this;
Click to Play

It is actually doing this;
Click to Play


I am hoping the fact that the circle's shape doesn't correlate perfectly to the shape of the alien won't get in the way of this approach  persecutioncomplex.

Try my Android games:
Grapple
Hovercraft
Lala
Offline bornander
« Reply #8 - Posted 2016-06-12 08:47:08 »

To make the screens more visually appealing I have been adding more things that move, clouds now drift across the sky and leaves blow off of bushes. And on some levels there are flies or bees that fly away when the player gets too close to them.

I am using the libGDX particle editor almost exclusively to create these effects, it's somewhat limited but it allows me to quickly tweak and adjust the various effects.

Click to Play


The "smoke" from the UFO and the stars falling are also particle systems.

Try my Android games:
Grapple
Hovercraft
Lala
Offline Hydroque

JGO Coder


Medals: 25
Exp: 5 years


I'm always inspiring a good time.


« Reply #9 - Posted 2016-06-12 08:56:29 »

Oooh neat.

Nice job on this, but I want to add that 3-6 year olds don't care about unlocking things

They just want to feel accomplished in what they have so when they say, "hey daddy look" daddy could be proud of the youngin.

I am a reliable source of information. I have experience being that young  Pointing

You think I haven't been monitoring the chat? http://pastebin.java-gaming.org/c47d35366491fHere is a compilation <3
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline bornander
« Reply #10 - Posted 2016-06-14 06:49:06 »

Oooh neat.
Thank you!

Nice job on this, but I want to add that 3-6 year olds don't care about unlocking things

They just want to feel accomplished in what they have so when they say, "hey daddy look" daddy could be proud of the youngin.

I am a reliable source of information. I have experience being that young  Pointing
I sort of disagree with you point about kids not caring about unlocking things, at least the older part of my target age group does, I think.

Either way, I take your point and the unlocking mechanism won't be the traditional "finish level N unlocks level N+1" approach. To make sure players don't get stuck on one level most levels will unlock several others, so the should always be an ample supply of unlocked levels and chapters for them to try.

Possibly with the exception of the first 6 levels, where I want to make sure they go through all parts of the game play.

Thanks for the feedback!

Try my Android games:
Grapple
Hovercraft
Lala
Offline Hydroque

JGO Coder


Medals: 25
Exp: 5 years


I'm always inspiring a good time.


« Reply #11 - Posted 2016-06-15 07:43:14 »

"finish level N unlocks level N+1"

Ooh I like the quip. You have programmers wits about you Cheesy. I like communities like this.

You think I haven't been monitoring the chat? http://pastebin.java-gaming.org/c47d35366491fHere is a compilation <3
Offline bornander
« Reply #12 - Posted 2016-06-24 16:45:58 »

In this game I use dialog-boxes for simple messages, for example instructions show at the beginning of a tutorial level;

With libGDX and it's GlyphLayout it's easy to construct these.

I construct the fonts as bitmap fonts, but I generate them at run-time using the FreeTypeFontGenerator as it means I can easily modify the fonts without having to re-process my assets;

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
public class FontAssets implements Disposable {
   public final BitmapFont dialog;
   public final BitmapFont menu_title;
   
   public FontAssets() {
      dialog = buildFont("fonts/Chewy.ttf", 48, 4, Color.BLACK, "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890\"!`?'.,;:()[]{}<>|/@\\^$-%+=#_&~*");
      menu_title = buildFont("fonts/Chewy.ttf", 128, 12, Color.BLACK, "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890\"!`?'
.,;:()[]{}<>|/@\\^$-%+=#_&~*");
   }
   
   private static BitmapFont buildFont(String filename, int size, float borderWidth, Color borderColor, String characters) {
      FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal(filename));
      FreeTypeFontParameter parameter = new FreeTypeFontParameter();
      parameter.size = size;
      parameter.borderColor = borderColor;
      parameter.borderWidth = borderWidth;
      parameter.characters = characters;
      parameter.kerning = true;
      parameter.magFilter = TextureFilter.Linear;
      parameter.minFilter = TextureFilter.Linear;
      BitmapFont font = generator.generateFont(parameter);
      font.getData().markupEnabled = true;
      generator.dispose();
      return font;
   }

   @Override
   public void dispose() {
      dialog.dispose();
   }
}


When using the font I first set the GlyphLayout to the text I want;

1  
2  
3  
4  
5  
   public void openDialog(String text) {
      dialogEnabled = true;
      float dw = vWidth * 0.8f;
      dialogGlyphLayout.setText(Assets.instance.fonts.dialog, text, Color.WHITE, dw, Align.topLeft, true);      
   }


Here vWidth is the virtual or logical width of the screen, and I am telling the GlyphLayout to render at 80% of the width of the screen and wrap if longer.

Then, when rendering the Stage the text and it's background is rendered like this;
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
      if (dialogEnabled) {
         spriteBatch.setProjectionMatrix(stage.getCamera().combined);
         spriteBatch.begin();
         
         float tw = dialogGlyphLayout.width;
         float th = dialogGlyphLayout.height;
               
         float dw = tw + 0.05f * vWidth;
         float dh = th + 0.05f * vWidth;
         
         float bx = (vWidth - dw) / 2.0f;
         float by = vHeight - dh * 1.2f;
         
         Assets.instance.hud.panel_metal.draw(spriteBatch, bx, by, dw, dh);
         Assets.instance.fonts.dialog.draw(spriteBatch, dialogGlyphLayout, bx + (dw-tw) / 2.0f, by + dh - (dh-th) / 2.0f);
         
         spriteBatch.end();
      }


This sets up a nine-patch which is the background to have a 5% padding, and then draws the message.

To get the different words highlighted requires no special code as the input string can be marked-up to change color;
1  
[WHITE]DRAG THE WOODEN BOX TO THE [BLUE]GAP[WHITE] TO LET THE [GREEN]ALIEN[WHITE] CROSS.


Super simple.

Try my Android games:
Grapple
Hovercraft
Lala
Offline bornander
« Reply #13 - Posted 2016-08-17 19:04:49 »

The game has three types of materials for the blocks:
  • Wood
  • Metal
  • Stone
Initially these were just used to provide visual variation (and to a certain extend audio variation as well as the sound of the alien's footsteps changes depending on what he's walking on), but I've now started experimenting with having different densities associated with these materials.

So for example wood Wood being lighter than Stone leading to the right block tipping over if the following puzzle is attempted with the Stone on the left side and Wood on the right side:
Click to Play


But, if the right block is the heavier Stone block, it provides enough counter-weight to the Alien and does not tip over:
Click to Play


I am not sure if I'll just this sort of mechanic in the final version of the game though, it might be too complicated considering the age group I am targeting.

Try my Android games:
Grapple
Hovercraft
Lala
Offline J0
« Reply #14 - Posted 2016-08-19 15:19:02 »

To be fair, I think in that first gif the alien could have finished the level without minding about the tipping wood block. Wink
Offline bornander
« Reply #15 - Posted 2016-08-19 15:47:33 »

To be fair, I think in that first gif the alien could have finished the level without minding about the tipping wood block. Wink
These aliens have very sensitive feet, upon the slightest injury inflicted they rather teleport back and start again.

They are clearly not the smartest creatures in the universe,  but that also explains why you have to help them traversing the rather simple levels Smiley

Try my Android games:
Grapple
Hovercraft
Lala
Offline bornander
« Reply #16 - Posted 2016-08-31 14:12:07 »

Added winter levels, with snow.
Well, I say snow, it looks more like blurry rotating plus-signs.

Click to Play


Also half-buried candy canes.

Try my Android games:
Grapple
Hovercraft
Lala
Offline J0
« Reply #17 - Posted 2016-08-31 20:51:19 »

Love the visual atmosphere you've got running Shocked
Offline bornander
« Reply #18 - Posted 2016-09-07 11:17:26 »

Love the visual atmosphere you've got running Shocked
Thank you!
I wish I could take credit but almost all the graphics is produced by Kenney.

Try my Android games:
Grapple
Hovercraft
Lala
Offline bornander
« Reply #19 - Posted 2016-11-07 18:35:49 »

I am close to done with the levels, I only have two more to do and then some tidy up. Starting to see the end of this.

I made a gameplay video, any comments on the game play mechanics are greatly appreciated:
<a href="http://www.youtube.com/v/FlM943xaxyw?version=3&amp;hl=en_US&amp;start=" target="_blank">http://www.youtube.com/v/FlM943xaxyw?version=3&amp;hl=en_US&amp;start=</a>

Try my Android games:
Grapple
Hovercraft
Lala
Offline J0
« Reply #20 - Posted 2016-11-07 21:43:09 »

One tiny issue I'd have — no worries though, nothing terrible, you can safely ignore this as I'm mostly commenting to comment — is that in some of your levels you show it's hard to distinguish between the background and the foreground, as the colours are very similar. The easy fix is to turn down the saturation, maybe play with the lightness/contrast a bit too Smiley

EDIT: that was the easy fix, your other solution being to shift a bit the background towards blue, and the foreground to red; at least that's what I usually do heheh

J0 Smiley
Offline bornander
« Reply #21 - Posted 2016-11-10 09:18:34 »

One tiny issue I'd have — no worries though, nothing terrible, you can safely ignore this as I'm mostly commenting to comment — is that in some of your levels you show it's hard to distinguish between the background and the foreground, as the colours are very similar. The easy fix is to turn down the saturation, maybe play with the lightness/contrast a bit too Smiley

EDIT: that was the easy fix, your other solution being to shift a bit the background towards blue, and the foreground to red; at least that's what I usually do heheh

J0 Smiley

I'll have a stab at dropping the saturation on the background, I'll post before and after pictures for the various environments.
Thanks for the comment.

Try my Android games:
Grapple
Hovercraft
Lala
Offline bornander
« Reply #22 - Posted 2016-11-13 19:37:09 »

Trying out some different saturation levels as suggested by J0 and I am finding it difficult to decide what I like best.
I agree that the too colorful background sometimes blends in a bad way with the foreground, but I also don't like how washed out the colours look when I turn the saturation down;

Original

Saturation at 50%

Saturation at 25%


I think the problem lies in the fact that if I drop the saturation of the sky, the it looks to drab, but without a lower saturation other background elements blend with the foreground.

Any comments appreciated.

Try my Android games:
Grapple
Hovercraft
Lala
Offline J0
« Reply #23 - Posted 2016-11-13 22:57:00 »

I love the 3rd one. Pointing

To be less biased... have you tried lowering the saturation of all background elements except the sky?
Offline bornander
« Reply #24 - Posted 2016-11-20 08:52:55 »

I have a alpha release ready on Google Play now, if anyone wants to give it a go I would be interested in hearing any comments you might have.

Lala on Google Play

Note that the game is intended for young children, so the puzzles are intended to be very simple.

Try my Android games:
Grapple
Hovercraft
Lala
Offline J0
« Reply #25 - Posted 2016-11-20 15:14:10 »

How I deal with problems Cool
Offline bornander
« Reply #26 - Posted 2016-11-21 07:49:45 »

How I deal with problems Cool

Creatively, it seems  Cheesy

Try my Android games:
Grapple
Hovercraft
Lala
Offline Apo
« Reply #27 - Posted 2016-11-21 09:10:21 »

Very nice game.
Works fine on my oneplus 2.

Of course it is very easy but I like systems when you can skip a hard level because you have always 5 level to play and not only one.

But overall I like  the game mechanics and found no bug in the first 20 levels.
Offline bornander
« Reply #28 - Posted 2016-11-22 16:27:41 »

Very nice game.
Works fine on my oneplus 2.
Thank you!

Of course it is very easy but I like systems when you can skip a hard level because you have always 5 level to play and not only one.
Yes I thought kids might get frustrated if I forced them to complete one level before being allowed to try the next, so the unlocking (at least after the first chapter) will be fairly aggressive with one completed level unlocking 2 or 3 new levels.

But overall I like  the game mechanics and found no bug in the first 20 levels.
Cool, I appreciate you taking the time to test something that's in alpha and that you're also not the target audience for (I am assuming you don't fall into the age range 3-7  persecutioncomplex ).

Try my Android games:
Grapple
Hovercraft
Lala
Offline bornander
« Reply #29 - Posted 2016-11-27 13:04:02 »

Finally finished designing the last of the 60 levels.



This is the last time I make a game that requires level design.

Try my Android games:
Grapple
Hovercraft
Lala
Pages: [1] 2
  ignore  |  Print  
 
 

 
numerical (303 views)
2017-02-21 07:32:16

numerical (303 views)
2017-02-21 07:31:46

theagentd (413 views)
2017-02-18 13:42:33

theagentd (411 views)
2017-02-18 13:35:16

h.pernpeintner (1579 views)
2017-01-24 22:39:11

h.pernpeintner (1566 views)
2017-01-24 22:38:32

Galdo (2130 views)
2017-01-12 13:44:09

Archive (2114 views)
2017-01-02 05:31:41

0AndrewShepherd0 (2649 views)
2016-12-16 03:58:39

0AndrewShepherd0 (2351 views)
2016-12-15 21:50:57
List of Learning Resources
by elect
2016-09-09 09:47:55

List of Learning Resources
by elect
2016-09-08 09:47:20

List of Learning Resources
by elect
2016-09-08 09:46:51

List of Learning Resources
by elect
2016-09-08 09:46:27

List of Learning Resources
by elect
2016-09-08 09:45:41

List of Learning Resources
by elect
2016-09-08 08:39:20

List of Learning Resources
by elect
2016-09-08 08:38:19

Rendering resources
by Roquen
2016-08-08 05:55:21
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!