Page 1 of 2

How to make a game with LOVE?

Posted: Wed Oct 22, 2014 5:01 pm
by ffive
Hi!

I'm not an experienced game-developer, but I have some 'more-than-just-a-basic' skills in programming. And I've always dreamt to make my own game(s).

So, A game is a cycle. Data is updated with every iteration.
In LOVE we have three modules: .load(), .update() and .draw().

To get started with love, I have used headchant's tutorials instead of reading a wiki. Well, I've tried to read it first, but it looks like just a huge reference book. Here's the link of a tutorial I used: http://www.headchant.com/2010/11/27/lov ... -must-die/

Ok,
.load() preloads all game's stuff.
Here objects (classes?) declared as a massives (tables) of data, but indexes are not called by their number(eg. 1,2,3..) but by they name.

Example:

Code: Select all

love.load()
Player = {} --creating a player table
Player.x = 300 --assigning 300 to a cell named 'x' of a table 'Player'
Player.y = 600 --assigning 600 to a cell named 'y' of a table 'Player'
end
.update(dt) is a program itself. All game logic and math stuff is done here with every frame.

and finally .draw() is a graphics module. It is called every frame too.

So, I have some questions to answer.
Did I understood (I mean, written) it right?
Tables and classes. Are they same?
How to set a scene with walls and other stuff?

Kind regards.

Re: How to make a game with LOVE?

Posted: Wed Oct 22, 2014 6:39 pm
by CrackedP0t
Yeah, that's about right.
I would recommend learning more about lua, the language that LOVE uses.
Tables are fairly similar to C++/Java classes, but they're far closer to JavaScript objects.
They can have both string and number keys (their index is 1), and can have numbers, strings and functions as properties.
This is valid: (Try it!)

Code: Select all

table = {a = 12, ["b"] = "hi", c = function(n) return n+1 end, 8, 34}
print(table["a"])
print(table.b)
print(table["c"](2))
print(table[1])
print(table[2])

Re: How to make a game with LOVE?

Posted: Wed Oct 22, 2014 8:00 pm
by ffive
CrackedP0t wrote: Tables are fairly similar to C++/Java classes, but they're far closer to JavaScript objects.
They can have both string and number keys (their index is 1), and can have numbers, strings and functions as properties.
This is valid: (Try it!)

Code: Select all

table = {a = 12, ["b"] = "hi", c = function(n) return n+1 end, 8, 34}
print(table["a"])
print(table.b)
print(table["c"](2))
print(table[1])
print(table[2])
OH MY GOD.
Awesome.
So, tables can store different data of diffirent types labeled differently and you don't need to specify a type of each unit (of data).
Well, I knew that all variables in Lua have dynamic type, but it even works with massives.. Wow.
Huge thanks. :ultraglee:

Ok, tables are similar to classes, but I have seen some libraries for classes (e.g. middleclass by kikito) what they can be used for?

And, how to set a scene? How to make a level? I've heard something about OGMO editor.
Any tutorials/reccomendations of other level-making approach?

Re: How to make a game with LOVE?

Posted: Wed Oct 22, 2014 8:52 pm
by nice
ffive wrote: OH MY GOD.
Awesome.
So, tables can store different data of diffirent types labeled differently and you don't need to specify a type of each unit (of data).
Well, I knew that all variables in Lua have dynamic type, but it even works with massives.. Wow.
Huge thanks. :ultraglee:

Ok, tables are similar to classes, but I have seen some libraries for classes (e.g. middleclass by kikito) what they can be used for?

And, how to set a scene? How to make a level? I've heard something about OGMO editor.
Any tutorials/reccomendations of other level-making approach?
Hey welcome to Löve! :D
I'm not highly adept when it comes to Löve and I have been working with it for close to a year now (on and off) and I guess that I'm decent with it (and I consider myself a graphic designer compared to a programmer).

But here's some advice that I have learnt from my journey:

1. Making levels? scenes? libraries? First off: take it easy.
I know myself that I wanted to floor it, to make stuff now and I advice you that you start learn how different functions work first in Löve before you start making anything more advanced, build experience upon experience.
A good start would be making a "Hello world" thing like they talk about in the wiki: http://www.love2d.org/wiki/Getting_Started, make something like that and see what else you can add.

2. When you're starting to feel more confident in your own abilities, start looking at old games and for an example: Tetris!
What makes Tetris so special and popular? it's functions and the feeling of the game, see if you can replicate Tetris and add your own flavour to it.

3. Take your time, when you get your work flow going, it's hard to stop and if you get stuck and get frustrated, step away from the project until you have calmed down and get back to it.
If you still haven't managed to figure the problem out, ask the community for help and if you be sure to add your code to the post so we can take a look at it.

That's what I can dig out from top of my head, I'll add a game that I call "SpaceVoider" which is a Asteroids clone with a twist that I made!


Here's a link with books about lua (the language that Löve uses), I recommend either the Second edition or Third edition, the First edition is free but isn't as updated as the Second and Third edition.
http://www.lua.org/pil/

I also recommend "Designing Games", it's probably the best book I know about game design.
http://www.amazon.com/Designing-Games-G ... ning+Games

Good Luck! :awesome:

Re: How to make a game with LOVE?

Posted: Wed Oct 22, 2014 9:56 pm
by DaedalusYoung
A good way to learn programming with LÖVE is also to make Code Doodles. Just write a simple program, experiment with functions and see what you can come up with, no need to be advanced (it's supposed to be simple anyway). Take a specific function and write a program around that, you'll learn exactly how it works and what you can do with it.

Re: How to make a game with LOVE?

Posted: Thu Oct 23, 2014 5:38 am
by micha
ffive wrote: Did I understood (I mean, written) it right?
Almost. LÖVE as a built-in game loop. First, on start up, the love.load-function is called, then the love.update(dt) and love.draw() are called in turns (and user input is processed, too). All you do in programming with LÖVE is defining these functions. This is the structure that LÖVE gives you (you could even change it, if you have different requirements. But for beginners, the default game-loop is sufficient).

Then LÖVE provides you with a number of functions that you need for games. These are in all the LÖVE modules, such as love.graphics, love.audio etc.
ffive wrote: How to set a scene with walls and other stuff?
LÖVE does not have a pre-build scene management. You have to implement this yourself. All you get in LÖVE is the functionality to easily draw things on screen, process user input, play sound etc...
LÖVE does not organize the game for you in detail. If you have multiple objects in your game, you have to manage them yourself. And you also have to come up with a way of storing your scene/levels yourself.
If you are used to Unity or Gamemaker than this will be more work for you. On the other hand you have much more control over the game you make.

Re: How to make a game with LOVE?

Posted: Thu Oct 23, 2014 1:57 pm
by ffive
Thanks guys!

It's really nice over here.
Thanks for your support. ;)

Re: How to make a game with LOVE?

Posted: Sat Oct 25, 2014 5:45 pm
by Karai17
Tables can also have functions and tables as keys. But don't do that.

Re: How to make a game with LOVE?

Posted: Sat Oct 25, 2014 8:35 pm
by kikito
Karai17 wrote:Tables can also have functions and tables as keys. But don't do that.
Yet.

Re: How to make a game with LOVE?

Posted: Wed Oct 29, 2014 7:38 pm
by ffive
Karai17 wrote:Tables can also have functions and tables as keys.
I've found it out already, but why shouldn't i do that?