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.


Freitag, 14. September 2012

Pasting tilemaps together

Yesterday, I managed to put 4 tilemaps in a 2d array to hold them though I wasn't really that successful at all.

See this neaty screenshot of my paramount achievement:

 A concept of tilemap that didn't work.

This is were I started off today, and having only a bit experience with arrays and that stuff (lists of enemies etc. are quite easy but I never played around that much with arrays of coordinates) it took me quite a while to get the system working. But, finally, I think I got it. At least there haven't been any new bugs around for several minutes ^^

So this is what the same map & seed look like now (zoomed out a bit further):

Finally, a continuous map!

I don't know if it's a great idea but I use one 2d array to hold 4 tilemaps – the primary tilemap the player is in and 3 other tilemaps where he can go – and one bigger array with these 4 tilemaps to render the scene.
An Example: I have a tilemap consisting of 7x7 tiles: 1-1, 1-2, 2-3 etc.
The tile where my (atm non-existing) avatar will be held in array[0,0], the rest around it:

[0,0] = 4-4  ||   [1,0] = 5-4
[0,1] = 4,5  ||   [1,1] = 5-5

When I go from 4-4 to 5-4, after some tiles the tilemaps will get shifted within the arrays, so that [0,0] will hold the new array I'm in:

[0,0] = 5-4  ||  [1,0] = 6-4
[0,1] = 5-5  ||  [1,1] = 6-5

If I now decide to go upwards, the tilemaps will be shifted again, this time a bit earlier, depending on how near I am to the border. I 'm still in 5-4, but the arrays now are:

[0,0] = 5-3  ||  [1,0] = 6-3
[0,1] = 5-4  ||  [1,1] = 6-4

It took me quite some time to get this working, espacially the transfer was quite buggy, but I think now I got it working.

I also played around a bit with tilemap size and world size (i.e. how many tilemaps will be there) and found out the tilemaps shouldn't be larger than 80-85 tiles or else the performance will break down dramatically when scrolling diagonally. I think this has something to do with the way I check if I'm switching to a different tilemap.
On the other hand, having a lot of tilemaps doesn't seem to be a problem. Even with 50x50 tilemaps I had default 60 fps, though constructing the map takes a lot of time. But this will probably be because I create the whole map, not just a part of it and the rest on the go. Maybe I'll check that out tomorrow.

And because I'm so happy, here another screenshot of a map with a different seed:

From far away, this actually doesn't look that bad.


And that's it for today. Next I'll either try world creation on the fly, or I'll look how I can implement 3 to 5 levels of height.

But now a little killy killy antes de sleepy sleepy.

Good night,
Sleeptaker...

Mittwoch, 12. September 2012

About Foreign Worlds

In Foreign Worlds, you are a crew member of a spaceship that happens to crash in the orbit of a planet. You escape in a single-person escape pod like your other crew members do and then find yourself in a procedurally created world where you have to find your way to survive somehow.
Let's take a look at those italic words.

Survive
You land with only some equipment/tools and food in the escape pod and then you're on your own out there.   You'll have to find your way on the Foreign World you're on, building a shelter to sleep at night, finding food to fill your stomach, and find ways to keep you safe from the perils of the Foreign World: Diseases, animals, foreign tribes...

World
Your Foreign World is generated randomly in various aspects. This is the core of the game itself. Whenever you start a new game, a complete new 2d-world will be created: animals, plants, stones, tribes, colors, diseases, even the language the tribesmen speak will be randomized, making each Foreign World a unique experience for you to discover.

Sounds great, so how far are you with developing?
You know that expression pre-alpha? Add a ³ to it, that should be about where I actually am - pre³-alpha. At the moment, I'm agglutinating (yes!) the tile engine. It already has basic map generation, i.e. distribution of tile types (water, grass etc.) and basic heightmap generation. With basic I mean basic, there is still a lot of work to do. Next task is to realize the height map both graphically and passabally (look at my mighty brainz for I have neologismed one, no, two words for one of your puny languages, earthlings!). So, this will surely take a while to be in any condition to be shown to anyone. Take a cup of tea in the meantime.

- el wakemaker

Getting started... some days later

Hi there!

This is my little development blog of a game I'm creating, called Foreign Worlds. 

Its (the blog's) purpose is to be a nice little documentation of the work in progress and it's (the game) about some guy (you) stranded on a foreign world after your spaceship crashed on it.

It's my first real game project and the first time I'm programming anything in C#/XNA. Actually, I'm not a programmer at all, I started only 1.5 years ago with ActionScript and switched to XNA a few months ago, so this is big learning experience for me and probably will be full of all those flaws everyone has to learn. But at least it'll be fun, learning by creating something I'd always wanted to make.

Also, you can try to not mind my imperfect English skills. As a non-native speaker, I'm sure there'll be some (girls would say 'cute') grammar and spelling mistakes or strange idiomatic expressions like 'i think my pig whistles'. If you get it, you can keep it :D

All in all, I'm curious what this project will turn out and where I'll be in a year from now.

Cheers
Wakemaker