I've been integrating Variance Shadow Mapping shadows into my full game engine. As expected, that took longer than expected. I have the feeling that I'm going to be tweaking the shadows until the game comes out. There are a lot of adjustments. Shadows are not an exact science by any means.
My first question was "where do I put the sun?" I looked at a bunch of screenshots of other games. It turns out, most games put the sun in the same place - where the shadows are most visible. So behind and to one side of the shadowcasters.
Once the sun was to one side of the camera, I found an issue - looking at the shadow map in GDebugger, the entire visible portion of the scene was rendering at one end of the shadow map with "up" towards the center of the texture - wasting about 3/4 of my shadow map memory. There was however, a surpisingly simple solution!
I needed to have a way to take a color and change its brightness but to be sure that the color would remain true as I adjusted the brightness. I've used RGB a lot over the years so I was familiar with scaling the color components by a value, but I wasn't sure that technique would retain the color properly or that it would let me use the full brightness range available.
Researching the problem, I quickly found this Wikipedia
article with a description of the HSL (Hue, Saturation and Lightness) representation of color and an algorithm for how to convert to and from RGB. The HSL color space looks like this:
You'll note that one of the axes is lightness -- just what I wanted. And it works like a charm.
One of the things I've always liked about computer programming is that if something works, you really don't need to know how it works. Libraries work like this, quite often code samples do as well. I've been working on getting soft shadows to work, and when I started, armed with a great code example of soft shadows using Variance Shadow Mapping
I was totally optimistic I wouldn't need to really understand how shadow mapping works.
Well that's out the window. I understand.
Wow, been a while. I've been on vacation, playing with my daughter, going out with the wife. First time since my daughter was born that I can say I've seen 5 of the top 8 movies on Metacritic (or any of them actually.) Dark Knight was fun, Prometheus was fantastic, The Amazing Spiderman I saw in 2002 - it was called "Spider-Man".
There has been some small amount of progress on the game, but I tried to take my own advice
I was looking into consumer internet offerings this week and I was shocked to find there are still internet services with as little as 15GB/month and with punitive $1.50/GB overage fees. 15GB/month is about enough for email and web browsing, not much more. For someone with this type of account to give some of the popular MMO's a try, check out the cost:
|Star Wars: The Old Republic||25GB||$37.50|
|World of Warcraft||22GB||$33.00|
|Age of Conan||19GB||$28.50|
|Lord of the Rings Online||14GB||$21.00|
There's your business case for building a streaming MMO client right there. If you can get players started with a couple hundred megabyte client they'll save money, be able to get playing way sooner, and you'll save the cost of having them download Gigs of files they may never need.
I struggle a lot with wanting to share my excitement over how things are going with all the cool things I'm building, and with my internal quality bar which says which parts of the game aren't ready to have people judge them.
Indie games don't get any sort of pass on presentation just because they're put together by small teams. Like it or not, you're competing with AAA. If your product isn't immediately visually appealing you are putting yourself at a huge disadvantage. People won't even give it a chance. Sure you can put out an ugly game and slowly build a following with amazing gameplay, but you're putting up a significant barrier to casual interest. Look at all the big indie game successes of the last few years - can you think of any that weren't pretty in their own way?
I've been meaning to talk about some of the software I'm using to develop my game, so first up: Klok Desktop
time tracking software.
Working full time on my game I wanted to be sure that I was getting the hours in, and to know how much time I was wasting on things that I maybe didn't need to. I've used a few different tools over the years, none of them were particularly easy to use or provided me with the kind of simple reporting I wanted (how much have I worked on X this week/month/year?)
I've been using the demo for a little over 2 years and I continue to be impressed by it. There's no huge pressure to buy but I finally purchased my copy today. For $15.99, I think I got my money's worth. The program has some little buglets, but they continue to disappear as the author updates the software regularly. The program does charts, and exports to Excel and has some other tricks. Go check out their website to learn about all that.
You may have noticed the little Facebook Like button above. There is now a One Man MMO Project page
on Facebook. I'll be posting links to new blog posts there, so if you're using RSS or Twitter and prefer Facebook for updates, now you have that option.If you have a Facebook account, I'd appreciate it if you'd Like the blog as I need 25 likes to get the vanity URL I want.
(Their SMS verification can't send text messages to my phone even though everybody else can, so I don't know what their problem could be.)
Another big step ahead today, the circle of life for my game is finally complete. Birth, life, death, rebirth.
The game simulation (Life) has been working for a long time. Next up was entity creation (Birth) since if you're going to be killin', you really need an easy way to make things to kill. Back in April I added lasers and fiery Death. The final element I was missing was rebirth. Or as we in the games business like to call it - Loot.
I've been playing quite a few new games lately. Some of them are research, but a few I am really enjoying. Playing all these new games has made me consider the new-user experience for my game. I'm not sure what that will be yet, but here are some of the lessons I've taken from my newbie experiences.
// For AMD Enduro this should do it on 13.35 and later drivers.
__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
Berkelium isn't maintained anymore, might want to consider Chromium Embedded Framework
instead. I'll probably switch at some point since drag and drop is broken in Berkelium.
Signed up for the email list, still very interested in this project
Hey Tripleskit, your answer is here
When will this game be accessable for open/close beta/alpha