Freitag, 30. November 2012

Animation And Trees


Wow, last post is 3 weeks ago. I was a bit lazy for 2 weeks, but this week was very productive. In fact, I managed to do everything I wanted to do before I'm off on vacation for 2 weeks.

Well, what's new? Yeah, you guessed right: Animations and trees. More exactly: The player avatar now moves itself and I added some treeeeees. The graphics for those are placeholders, I hope I'll find some time soon (well, after the vacation) to make some better (or at least worse) tree sprites.

And, for the fun of it, here's a quick video of the new world:


You may see the character walking over the trees. Yes, they're not quite finished yet. After making that video, I implemented collision detection, so you won't be able to go through the trees anymore. Only thing that's missing: The character doesn't yet walk behind the tree. Maybe I find the time to fix this tomorrow.

However, this week was very good. Having added the animation engine, trees (with distribution) and basic collision, I'm both satisfied and motivated for the next bunch of things to do. Actually I'm not sure what will be next. Saving and loading maps would be a fine thing, though I still don't have a good idea on how to manage this. I also have to make something about the water, walking over it Jesus style isn't soooo good.

Spontaneous idea: I could add an option for how many different tiles there should be, automatically creating the textures and so on... mhhh... will think about that.

Well, that's all for today. See you in about 3-4 weeks, hopefully with a new update :D

Greenthings
The Wachmacher



Donnerstag, 8. November 2012

Introducing: The Player (graphics)

Hello there!

Today I'm (again) proud to share a new advancement for Foreign Worlds: The first five tiles of the player charakter!

*Cheers*
*Applaud*
*Happiness*

Yeah, I'm pretty dang proud, because of all the things I didn't understand up until now are graphics. Drawing is just one of those things I didn't really get, and seeing what I managed to paste together today, I'm (again) very satisfied.

Well, here he is:

Original size


Zoomed in a bit


And in the world



He's not that handsome and could use some improvement, no doubt, but still, I'm happy with Mr.... erm... Mr.... Mh, what should I call him?

Cheerio
Wakemaker

Donnerstag, 1. November 2012

Transition this!

I'm happy :)

First, something that I'm not very happy with, I stopped trying to implement the height map for the time being. Adjusting the graphics is so very complicated that I thought it would be better to go on without any height differences. I hope that at some later point in development I'll succeed in getting this graphic stuff together. But for now it's ... bla.

But now for the happy part: I added tile transitioning! Yaaay!
Nothing more to write about this now (me = very very tired), only thing left to do is put some pictures below for the whole world (^^) cheer with me for this great accomplishment.

Happy greetings
MakeWaker



Without transition
With transition
With transition

Without transition



Donnerstag, 11. Oktober 2012

Finalizing the height map

It's almost done. Just a few more switch-cases and it's good to go.

Today I finally understood this blog post (the one I mentioned in the last post)  or at least found a way to use it in my own game.

Let's resume how I managed the heightmap graphix so far.
For each of the edges and corners, I added 2^n to a byte value to find out which tile there has to be. Then I put that value in a switch statement to apply the appropriate graphic. In the end, that looked something like this:

case 11:
case 15:
case 43:
case 47:

Now that's not very efficient... But now I got how it can be down easier. Yay :D So I changed some function here, some other thingy there and it worked w/o any bug. Hooray for me! Now I first check the edges: if there's a different height, I'll have to apply some graphics, so I don't need to check the corners. If the height is the same, I check the corners. The calculation for the cases is pretty much the same, but now I only need 32 cases, not up to 256. All that's left to do is to clean up the code and get rid of all those unnecessary cases now.

The next thing to do after that will be the transition between the tile types.

Oh, and I need better graphics. Definitely...

Cheerio,
Wachmacher

PS: here are some screenshots of the finished height map:

A map with a lower zoom for the nosie generato -
zoomed out for better view

A map with a lower zoom for the noise generator -
zoomed out for a better view

A normal view of a map. Height map's done, yay!
Though it isn't very pretty yet. And water doesn't need it.




Mittwoch, 3. Oktober 2012

(Very) Small steps

So I had this problem with adding the height graphics to the borders of the maps.
For each tile, I check all the adjacent tiles to see which heights they are and add the corresponding graphic. Of course this doesn't work for the borders, since no map knows about the heights of the other maps. So I had to add a Dictionary (an array doesn't work here, since I need the coordinates 55/1 etc and nothing in between - please comment if there I miss something) for the border tiles, calculating the noise value for the adjacent tile check.

How many stupid errors one can do is simply amazing. I not only copied the parameters, having the octave value divided by 2.5 two times instead of just one (I do this for variation, so the height map is different from the tile distribution), I also interchanged various variables, esp. x and y values, subtracted 1 where it really shouldn't be subtracted, and so on. But, finally I got it working and learned a lot about stupid mistakes you can do.

Now I'm adding the rest of the graphics. I do this via a switch statement. Each of the 8 adjacent tiles get one value (1, 2, 4...) and adding the values for a single tile will tell me which graphic I have to use. I found the idea in some post I can't find atm and tried to adopt it. They managed to reduce the number of possible cases from 255 to 16 by using bits for each state of each adjacent field, while I actually have about 25, number still rising. But my system is a bit more complicated *sigh*.

Well, I'm just happy that I found all bugs (hopefully) and can continue to add all the cases/graphics for the height map.

So long
Se Wachmacher

Donnerstag, 20. September 2012

Adding some height to the soup

One of my biggest problems so far was the implementation of the height map in the renderer. Creating the height map wasn't the problem but to add the corresponding graphics to the screen...
Well, I'm far from having it finished but I took the first steps and am quite proud that I managed to get this far. I know it may seem a bit strange to be proud of something as unaesthetic as this:




But still, I got the idea and succeeded to add at least the impression of height, so that's a jump of joy for me ^^

Other problem I encountered is the map creation on the fly. It takes some time to create a new map, about 0.2s, and thus the picture stutters a bit. Can't wait to get to know Mr. Multithreading.
Oh, if anyone has some tips for me, feel free to post a comment!
Yes, I mean you, that one guy who happens to read my blog.

And I've got to admit, being a noob can be quite some fun because you've got so many new things to learn. And succeeding in these (rather easy, because basic) tasks gives a good pint of satisfaction.

Or to use the Doctor's words: Fantastic!

Cheerio
The Wakemaker


Samstag, 15. September 2012

The enemy of an infinite tile engine: negative coordinates

So, another step forward in my program: I turned my tile engine to be infinite!
At least I think so. It'll probably crash or shift to negative at tilemap MaxFloat.

And 'negative' is just the word I don't like in that. Like this guy, I ran into the problem with Perlin Noise and negative values. But unlike this guy I didn't find a way to solve this problem. Yeah, it would have been cool to start at 0/0 and then go for ever to the left or to the right. But alas, my unimaginable brainz aren't lack the capacity to solve this myste riddle. At least for now. And now may be a pretty long time.

But what the heck, then the game will start at something like 1.073.281 instead of 0/0. That's still plenty of tilemaps to explore.