Day n: noise
I'm back again. Yesterday, I continued game development for a change by taking advantage of some Pyglet 1.1 features in my game, and doing small improvements to controls. Then I noticed how awful the current terrain generation method is, and decided to start researching noise. Perlin noise at first, then I found about Simplex noise, Fractional Brownian motion... and I'm still on that path. Natalya Tatarchuk's Game Developers Conference talk was especially helpful. I hope to get something concrete done with noise next week. The good news is, that means finally more screenshots! And hopefully a longer entry for a change...
Camera, lights, action!
As promised, I actually did some game development this week for a change. First I upgraded to Pyglet 1.1 (beta 1) and pymunk 0.7.1. After that, I finally implemented a better camera for the artillery game. It's really nice now, smooth scrolling and zooming with constraints so you can't move or zoom "beyond" the playing area. Unfortunately, none of the improvements can be seen in static screenshots. Next thing I'll probably add is some kind of a background so it's not so easy to get lost while moving around. After that, I need better controls. I should also try and take advantage of Pyglet 1.1's new features.
But unfortunately, now I have to concentrate on Prolog programming to get rid of a university course. I have the exam for Logic programming next week, and I have to do a couple of bigger excercises before that. But after that, probably more game programming, so stay tuned!
Programmer’s block
I know, I know, I haven't written an entry for a while, and I haven't actually got anything done either. I've been struck with programmer's block: for many days now I've fired up Eclipse and just stared at code but getting nothing actually done. I just can't seem to get myself to write anything. It all started with my problems with how to implement materials and stuff, which isn't really something I can just pass by and work on something else since it's critical to rendering...
Maybe I should try to code something completely different to get my programming motivation back, a 2D game using Pyglet for example. It might help me get back to my main project too.
During tomorrow, barring any unexpected obstacles, I promise to write at least a minimally playable 2D game prototype and write about it. With screenshots! I promise this more to myself than readers of this blog, since I've been away from game dev for too long.
Red Nebula
Christmas was nice. I finally got a new monitor (Samsung 2232BW) to replace my old CRT with a horrible picture, so that was good. Actually I didn't get it yet because I'm still at my parents', so I'll have to wait until next week when I get back to my place. This is relevant for game development because until then, I'm stuck with writing code on my laptop, which tends to go much slower than on my desktop computer. On the other hand, I've been reading a lot on various subjects, so that counts as progress too even if there aren't much concrete results.
I also bought Fundamentals of Game Design by Ernest Adams and Andrew Rollings for myself, and so far it looks good. Inspired by the book, I finally wrote a very rough concept for Red Nebula and its first milestone:
Red Nebula is a sci-fi strategy game of the 4X (eXplore, eXpand, eXploit and eXterminate) genre.
Notable features include:
- A procedurally generated, dynamic world
- Emphasis on exploration, as I feel it's an aspect of the genre that's been seriously neglected
- Try to avoid some ugly cliches of the genre, such as "Star Trek" aliens and implausible combat
Milestone 1 implements the procedurally generated world in some degree. Main gameplay content are various scenarios, such as "eight colonization fleets were sent from Earth to an unexplored star cluster, let each player control one fleet". These scenarios can vary in scale, and contain static elements in addition to the procedurally generated world. The milestone concentrates on playing as humans; no sentient alien species will be included. The exact scale and scope of this milestone haven't been decided yet, though most likely it will be on fleet level rather than individual ship level.
Now, Milestone 1 is really a full game in itself, so there will definitely be sub-milestones. After Milestone 1 is complete (or abandoned
), I will review the situation and decide if I want to continue with expanding the concept or doing something else altogether.
For now, I'm still working on getting rendering working again. I fully switched from Pygame to Pyglet as my main "platform" library, and I'm glad I did, since it's much easier to work with. Basic resource management also works again, and now I'm working on scene management and the OpenGL rendering plugin simultaneously. As soon as I get some really basic rendering working, I'm going to start working on the game, and let that fully drive development on the engine side.
Still another path…
I know, I know. I was going to continue working on resource management or the renderer plugin, but then I got seduced by Pyglet. I wrote a Pyglet window manager plugin for the engine, and I'll have to say that I love it! Compared to Pygame:
- No dependencies
- No building needed to install (it was a nightmare to get Pygame installed on OS X)
- Better documentation
- Cleaner interface
- More features, such as multi-window and multi-screen support
- Opens a window on OS X in a fraction of a second vs. the couple of seconds with Pygame
- Maybe more...
I blame this thread on Gamedev.net for making me do it. Of course Pyglet is still in beta and isn't nearly as widely used as Pygame, but still, feels much better at least at this point. Next I hope to finally get to resource management or rendering.
