Lacking information

Questions about the LÖVE API, installing LÖVE and other support related questions go here.
Forum rules
Before you make a thread asking for help, read this.
Post Reply
AWizardDidIt
Prole
Posts: 14
Joined: Wed Sep 16, 2009 9:55 am

Lacking information

Post by AWizardDidIt »

Heya again... Just a few more (increasingly-stupid) questions! I'm sure at least one of these is covered elsewhere, but searching never brings anything seemingly-useful up for me...

1. If I were to make, for example, a list of items or spells or something for an RPG, would I be right in assuming this is best done via a Table? I'm familiar with Javascript, but that kind of data in JS was easiest to maintain in rather nice-looking arrays.

2. How would I go about /creating/ the entity data and tile data for a map (not image files, but the other stuff that goes with it)? I couldn't find anything more than "tile-based movement' and things like that when I would search for information on the wiki, so I had to ask...

Sorry, though, for the annoyance! :?
User avatar
nevon
Commander of the Circuloids
Posts: 938
Joined: Thu Feb 14, 2008 8:25 pm
Location: Stockholm, Sweden
Contact:

Re: Lacking information

Post by nevon »

AWizardDidIt wrote:1. If I were to make, for example, a list of items or spells or something for an RPG, would I be right in assuming this is best done via a Table? I'm familiar with Javascript, but that kind of data in JS was easiest to maintain in rather nice-looking arrays.
Yes. Tables are similar to arrays.
AWizardDidIt wrote:2. How would I go about /creating/ the entity data and tile data for a map (not image files, but the other stuff that goes with it)? I couldn't find anything more than "tile-based movement' and things like that when I would search for information on the wiki, so I had to ask...
I think you'll have to elaborate a bit here. What do you mean? Are you talking about creating a tilemap? If so, I suppose a 2-dimensional table would be what you were looking for, like Kikito explained in this thread: http://love2d.org/forums/viewtopic.php?f=4&t=1894
AWizardDidIt
Prole
Posts: 14
Joined: Wed Sep 16, 2009 9:55 am

Re: Lacking information

Post by AWizardDidIt »

Thanks, for question 1's answer, anyway. As for question 2... You linked to a topic I started, and his answer about tile maps was more than satisfactory.

What I'm actually asking in Question 2 is more like... "I made a 2-dimensional table for a map, complete with three file-types and three entity placements just for practice. I have no data for the entities to correspond to, however, so there's no 'dialogue' or 'graphic'... or even an obstruction where the entities are placed. Basically, the entities don't exist yet. How do I go about creating those?" I figured I asked it well enough, but I suppose I worded it awkwardly?

Such information as I would imagine would go into an 'entity' would be things like "which graphic to load" (though I'm not even sure how would be best to format said graphic, I'm pretty sure I saw a tutorial about that which I'll check later, and I'll just use still-figure images for them for now) and other factors specific to certain entity types (like "damage on contact" or "Entity's HP" and the like).

I hope this helps, seriously... I'm awful at explaining these things.
User avatar
Jasoco
Inner party member
Posts: 3727
Joined: Mon Jun 22, 2009 9:35 am
Location: Pennsylvania, USA
Contact:

Re: Lacking information

Post by Jasoco »

Tables are amazing.

Tables > Arrays

You can put anything in a table, including another table, functions, values, data like images and sounds, everything.

Code: Select all

table = {}

table = { something = whatever, more = function() doThis() end }

table.something = { more = stuff, yet = more }

table[3] = word

table["name"] = awesome

table["super"] = function(parameter) doThat() andThat(value) end

--Multidimensional Array
mda = {}
for x=1,100 do
  mda[x] = {}
  for y=1,100 do
    mda[x][y] = {}
    for z=1,100 do
      mda[x][y][z] = value
    end
  end
end
--And so on...
They're amazing.
User avatar
Taehl
Dreaming in associative arrays
Posts: 1025
Joined: Mon Jan 11, 2010 5:07 am
Location: CA, USA
Contact:

Re: Lacking information

Post by Taehl »

My favorite way to do tiles is like this:

Code: Select all

tileimages = {
    love.graphics.newImage("grass.png"),
    love.graphics.newImage("sand.png"),
    love.graphics.newImage("water.png"),
}
tilesize = 32
map = {
	{1,2,1,1,2,2,2,3},
	{1,1,1,2,2,2,3,3},
	{1,1,1,2,2,3,3,3},
	{1,1,2,2,2,2,3,3},
	{1,1,2,2,2,2,3,3},
	{1,1,1,1,2,2,2,3},
	{1,1,2,1,2,2,3,3},
	{1,1,1,1,2,2,3,3},
}
What you're looking at is a table of tables. The table "map" contains rows, which contain the ID number of tiles (instead of an ID number, you could use an image, a table of data, etc.). This is an 8x8 map, but tables in Lua can be any size, so you could make it as big or small as you want.

Why do it like this? Because then you can use one of Lua's most useful features to its full advantage: For pairs in table. For example, to draw all of those tiles, this is all the code we'd need:

Code: Select all

function love.draw()
	for x, row in pairs(map) do
		for y, tile in pairs (row) do
			love.graphics.draw(tileimages[tile], x*tilesize, y*tilesize)
		end
	end
end
This works: For pairs in table is a kind of loop which operates once on every key/value pair in a given table. As you can see, we do this to the "map" table, and assign the variables "x" and "row" to the key and value it's iterating over. "x" is going to be a number, and "row" is going to be a table. The first pair will be, for example, 1 and {1,2,1,1,2,2,2,3}. So what do we do with this? We iterate over /that/ table, too, assigning numbers to "y" and "tile". The first pair will be 1 and 1.

Then drawing it is pretty simple. We set the position according to "x" and "y", and the image to use a graphic from the "tileimages" table (tileimages[1] is a grass tile, tileimages[2] is a sand tile, etc.).

That should get you started in the right direction. If you need more explanation, feel free to ask.
Earliest Love2D supporter who can't Love anymore. Let me disable pixel shaders if I don't use them, dammit!
Lenovo Thinkpad X60 Tablet, built like a tank. But not fancy enough for Love2D 0.10.0+.
AWizardDidIt
Prole
Posts: 14
Joined: Wed Sep 16, 2009 9:55 am

Re: Lacking information [essentially resolved]

Post by AWizardDidIt »

Well, Taehl, as I said... Kikito answered my "how to make a tilemap" question in my other thread. As for my previous question about entities and tables/etc, that's resolved now, I think... thanks, though! :)
Post Reply

Who is online

Users browsing this forum: Amazon [Bot], Bing [Bot], Google [Bot] and 7 guests