I'm finally feeling pretty good again after a week of having a cold, but progress was kind of sporadic this week. Friday was great fun though! While I have been working on other parts of the trailer I have been thinking a lot about why combat isn't as exciting as I want it to be. I had a bunch of ideas and that all started to come together Friday afternoon.
A couple of my biggest, baddest bugs fell this week. There are three different types of bugs programmers face: there are bugs where you can easily reproduce the bug and know right away what the problem is, those are pretty easy to fix. There are bugs where you know what the problem is but fixing it is a huge effort (usually because it is in a system made of dozens of massively complicated components.) Lastly there are the really bad bugs, the ones that aren't obvious and can't easily be reproduced. Those ones can take days.
I once worked on a crash bug in a Need for Speed game that took about an hour to set up, and it took 59 attempts to get the bug to reproduce one time. It turned out that the bug depended on the WiFi dropping a UDP packet. When that happened, two packets arrived in the reverse order they normally arrived in, generating a crash.
The six year anniversary of the start of development on The Imperial Realm::Miranda passed quietly this Monday while I was busily fixing bugs in some new elements for the upcoming trailer. (The people on the mailing list just received the advance scoop on that.)
Miranda's development has taken too long. I'm the first person to admit that. I feel a little awkward now when someone asks me how long I've been working on the game. I've often described Miranda as wildly ambitious but now that it is coming together, I think it is going to be unique and surprising for traditional RTS players.
[Miranda has certainly come a long way since this first multiplayer session back in 2011]
So what can you expect from Year 7?
Something I discovered people are quite floored by when I demo Miranda is when I zoom out from my base, then it switches to map view and then just keeps zooming out. While I don't yet have the full 300x300KM map, even my 20x20KM test map gives a pretty good sense of how big the environment is. So that needs to be in the trailer. The map has been working for a long time, but when I took a close look at it this week, I found a few little things that needed to be addressed.
Every once in a while being a programmer is a useful skill.
For years I fought with Pixela's broken ImageMixer software to try to get it to download videos from my Canon Vixia HF S100 camcorder. The software worked about 30% of the time, which was enormously frustrating. Recently the PC with that software had a hard drive failure. I couldn't find the original software CD. Canon's website now recommends CameraWindow, ZoomBrowser and ImageBrowser for the HF S100, but after finding the camera box with the serial number and entering that, downloading and installing the three packages, not one could see the attached camera. I'd had enough.
While watching TV with the wife last night, it took just four hours to write new Windows software to locate the attached camera (or storage card,) download the videos, thumbnails and photos from the camera and copy them to a PC with a naming scheme consistent with what I used to get from ImageMixer. I should have done this years ago.
Recording game video is not as easy a problem as you might think. You likely want to record at 1920x1080 resolution, 60FPS so that's 1920x1080x3x60=373,248,000 bytes every second (373MB/s.) My disk drive is pretty quick, it can do around 85MB/s, some newer hard drives can break 100MB/s. My first video recording system wrote every frame as a PNG and I liked to call it the crash-the-game-button. It would record about ten seconds of video before it ran out of memory and crashed, however once I had half a video recording system, I kind of wanted to finish it. Actually, that's not true. The reason for all this work is that I'm not satisfied with the quality of video produced by screen capture programs. The trailer for Miranda needs to look as good as I can make it.
I've been working on the first trailer for Miranda pretty much continuously for six days now. Sometimes when you get a good idea, its hard to leave it alone. The first ten seconds took four days, the next five seconds I've got two days in and counting.
The first shot of the trailer is fully CG. I've tried CG work before, but never was really satisfied with what I produced. It was OK, but not good enough to show anyone. I put the new shot together with Blender
which I've grown to appreciate is kind of amazing. Blender used to have a terrible, terrible user interface. It doesn't anymore, a change which really surprised me.
Today The Imperial Realm::Miranda passed 250,000 lines of C++ code!
That doesn't include other types of source (HTML/CSS/XML/JS etc.) libraries I didn't write, or Chrome (which itself is around 4M lines of code.)
That's an average of around 42,250 lines of code per year. I feel pretty good about that. I'm always amazed at claims that the industry average is around 3,300 LOC/year - that's a lot of overhead.
There is nothing like trying to get software running in an environment that is actively screwing with it.
[Rolling Strike Force Alpha]
I borrowed a laptop with a 3K (3200x1800) screen from a friend to do some debugging on high resolution displays. Bugs like Windows reporting the 3K laptop's screen resolution as 1067x603?!?! (I wasn't calling SetProcessDPIAware early enough.) There were an assortment of minor issues I was able to quickly fix, but when I went to test them, things really started to go off the rails.
I needed some special characters for Miranda and after investigating simply inserting bitmaps inline, I realized it would be better to have a custom font. Tonight I built a font for Miranda using Gimp
. It was super-easy. Design characters in Gimp, export to SVG, drag and drop onto Glyphter, name the font, save a ZIP and you're done. Glyphter exports EOT, SVG, TTF and WOFF as well as a CSS file supporting all of them.
My new characters:
You're right, think I've got it now. Thanks for the feedback.
Nice, but just one thing: This makes the next post and previous post links difficult to read on some of the background pictures. I'd suggest making them blue like the rest of the floating text.
Assigning Secret Lair Codes in pairs is a good idea, this way I'll be able to choose my own doom.
Hey Dondergod, since we're the only people posting here I imagine we'll have to pick opposite sides to fight on. I hope you'll be a worthy opponent :D
I did not want to ask it when you released the previous blog :P. Anyway, still looking forward to get my hands on the game!