Twitter  Facebook  Google+  YouTube  E-Mail  RSS
The One Man MMO Project
The story of a lone developer's quest to build an online world :: MMO programming, design, and industry commentary
By Robert Basler on 2015-04-26 23:00:36
Homepage: onemanmmo.com email:one at onemanmmo dot com
I've been using this for a while, but especially this week so I thought I'd share: it's a class-based state machine. State machines are usually big and messy and awful spaghetti code. Making states class-based makes a state machine cleaner and much easier to follow.

Here's the base classes for the state machine.
By Robert Basler on 2015-04-13 10:18:28
Homepage: onemanmmo.com email:one at onemanmmo dot com
When I started developing The Imperial Realm :: Miranda, Content Delivery Networks (CDNs) were big and fancy and expensive and only used by giant multinationals so I never imagined I'd be able to afford to use one.

With me posting more and more big screenshots on my websites like this one:

The%20Imperial%20Realm%20-%20Miranda%20-%20Scorched%20Desert%202.jpg
[Random screenshot of the week.]


Last weekend I decided it was time to research solutions to improve my websites' performance.
By Robert Basler on 2015-04-02 11:57:33
Homepage: onemanmmo.com email:one at onemanmmo dot com
I've been working this week to get combat up and running reliably. It is starting to come together now, at least well enough for a screenshot.

The%20Imperial%20Realm%20-%20Miranda%20-%20Battle%20Loot_Lo.jpg
[Things are going badly for Red. Blue is getting a lot of loot!]

By Robert Basler on 2015-03-26 02:16:40
Homepage: onemanmmo.com email:one at onemanmmo dot com
I showed The Imperial Realm::Miranda at Full Indie again tonight. Just like last time it was great fun.

I got to The Pint at about ten after six to set up, found myself a table (actually the same table as last time) and started up the server. As always happens when you want to show someone what you're working on, something immediately went wrong -- the server wouldn't start. I knew it had to do with setting up the game to run standalone with no internet. Firing the game up under the debugger I was able to figure it out just in time for the 6:30 start. It looked kind of funny having 9 instances of Visual Studio running while I was demoing the game. The good news was that once I worked through that little problem, the game ran flawlessly all night.

Full%20Indie%20Demo%20Night%202.jpg
[During one of my breaks, I took a quick snap of my table.]


Like last time, I talked pretty much continuously from 6:30 until 9:45 (I got just two five minute breaks.) Most people stayed 10 minutes or more and I was often speaking to several people at a time. There are some real serious strategy game fans out there.
By Robert Basler on 2015-03-22 01:26:40
Homepage: onemanmmo.com email:one at onemanmmo dot com

If you aren't a programmer, here's a little sample of what we do to make games for you.

Today, at long last, I fixed a bug that goes back to Christmas 2014. The bug first appeared right after I updated the renderer for better performance. One of the things that that change added was a hard limit to the number of shader programs the Lair engine could support: 4096. I figured that should be lots since I only had a few hundred shaders even with permutations. One afternoon while cruising over Miranda, the game halted because it had hit the limit of shader programs. I was shocked. But when I looked into it the reason became readily apparent: I never released shader programs from materials when they were unloaded. It was a simple oversight, quickly rectified with this little bit of code:

void Pass::ShutdownProgram( void )
{
if ( mProgramId == 0 )
{
return;
}
if ( mGeometryShaderId != 0 )
{
mGlShaders->DetachShader( mProgramId, mGeometryShaderId );
mGlShaders->DestroyShader( mGeometryShaderId );
mGeometryShaderId = 0;
}
if ( mVertexShaderId != 0 )
{
mGlShaders->DetachShader( mProgramId, mVertexShaderId );
mGlShaders->DestroyShader( mVertexShaderId );
mVertexShaderId = 0;
}
if ( mPixelShaderId != 0 )
{
mGlShaders->DetachShader( mProgramId, mPixelShaderId );
mGlShaders->DestroyShader( mPixelShaderId );
mPixelShaderId = 0;
}
mGlShaders->DestroyProgram( mProgramId );
mProgramId = 0;
}



Now I was destroying the shaders and programs when they were no longer needed. Problem solved.

Then the Bad Bug showed up.
By Robert Basler on 2015-03-15 15:03:19
Homepage: onemanmmo.com email:one at onemanmmo dot com
This started as a comment in reply to Tripleskit but then I wanted to add a picture so...

The%20Imperial%20Realm%20-%20Miranda%20-%20142%20Units_Lo.jpg


When will this game be accessible for open/close beta/alpha?

Ahh, when. The ever-present question. With just me to do the work, not a team of 300, or even 10, things happen a little more gradually than they do with bigger projects.
By Robert Basler on 2015-03-08 09:00:00
Homepage: onemanmmo.com email:one at onemanmmo dot com

The%20Imperial%20Realm%20-%20Miranda%20-%20Hiding%20in%20the%20Flowers_Lo.jpg


I posted this on screenshotsaturday.com yesterday. I took it while finishing up unit movement when I noticed that flowers offer a bit of of camoflage which isn't an element in any of the RTS games I've played in the past. If you wanted, you could change your player color to match the flowers to blend even better. I'm not sure if that will become a thing or not, I just thought it was interesting.

Movement is looking pretty good now. Not perfect, but I'm running out of things I can do to improve it. I have one bug left that I started work on last evening and Monday I'm moving on to polishing combat.
By Robert Basler on 2015-03-02 09:44:27
Homepage: onemanmmo.com email:one at onemanmmo dot com

I haven't had anything new and exciting to blog about lately because mainly I've been fixing and finishing things since the middle of January. Some people like to be fancy and call it "technical debt," I just call it "finishing stuff."

The%20Imperial%20Realm%20-%20Miranda%20-%20Long%20Distance%20Debugging_Lo.jpg


By Robert Basler on 2015-02-20 11:02:27
Homepage: onemanmmo.com email:one at onemanmmo dot com
I read that awful interview with Peter Molyneux last week at Rock, Paper, Shotgun and one thing he said really made me empathize with the situation he finds himself in. It's something I think many people really don't appreciate and it went by pretty fast in that unbelievably long article. I'm not here to defend 22Cans. They've messed up on a grand scale. But I think that one thing he said is worth taking a further moment to consider:

"Anything that involves creativity, you may think it should be a defined process, but it's not. And the reason that it's not a defined process is that the people who work on it aren't robots, and you can't predict whether someone is going to be brilliant and you give them a piece of code to do and they do it in a day, or whether they're going to take a month to do it, and that's the problem with creativity. Being creative is a very, very unpredictable force, and you try your best. You try your best to predict these things but very often you can be wrong." - Peter Molyneux.

I've done a lot of software development. It mostly goes like this: analyze the problem, work out a solution, estimate the tasks, run through them one at a time, do a QA pass, and you have a finished software "something". I'm actually pretty good at estimating that sort of work and ran on or slightly-under budget on whatever I did. If you're making business software or an annual sports title, or a tetris clone, you can predict with reasonable certainty when things will be done.

Now try to do something that nobody has ever done before. Make a God game with extensive interactivity of every object in the world and emergent systems. Make an RTS that lets not four or 8 players play together, but thousands, operating not one, but hundreds of in-game avatars in real-time on a map not a few hundred metres on a side, but hundreds of kilometres on a side. You have 16 milliseconds and 1KB/second bandwidth in each direction. Go!
By Robert Basler on 2015-02-13 14:50:11
Homepage: onemanmmo.com email:one at onemanmmo dot com
To take a break from moving the deck chairs about with unit movement, I took a couple of afternoons off to develop a second biome.

The%20Imperial%20Realm%20-%20Miranda%20-%20Scorched%20Desert%203_Lo.jpg


This next screenshot is from about half-way through development of the new biome. It includes the new terrain textures as well as one of the giant crystal formations. It wasn't complete yet, but there was something I liked about this shot.

The%20Imperial%20Realm%20-%20Miranda%20-%20Desktop_small.jpg


A lot of my textures come from cgtextures.com but in this case, I was looking for black gravel textures and I completely struck out there. I got an idea to go to the pet store for fish tank gravel in different sizes and materials to photograph. $27 later I had five different samples. I shot those outside in a cookie sheet lined with black paper. I made a cliff-face texture from some photos I took of burnt driftwood last summer and I was done.

supplies.jpg


The new biome also needed new terrain props. My wife showed me some cool rock candy crystals which gave me the idea to check out the Unity Asset store where I found these nice crystals and rocks. The rocks are from the same company that did the rocks in the Ash Flats biome.

Once I had all that in, I decided I didn't want to re-use the purple and yellow flowers, so I spent 3 hours with GIMP carefully cutting red flowers and stems out of a couple photos I took last summer. After tweaking crystal sizes and fixing all the floating props I think it turned out pretty well.
Read more... (0 comments)

More Posts

Project Line Counter in Visual Studio 2010 - 2011-06-04 00:01:45 (5 comments)
A Chrome UI - 2011-04-07 10:28:46 (6 comments)
Looking for a Fast Square Root - 2012-03-29 11:19:56 (4 comments)
Enabling NVidia GPUs on Optimus Laptops - 2014-12-03 02:31:40 (3 comments)
Pick a Fight Friday - 2017-06-06 14:45:53 (0 comments)
Trailer Update - 2017-04-03 00:05:02 (0 comments)
Setback - 2017-05-24 23:14:05 (0 comments)
Stuck!! - 2016-10-12 15:47:27 (0 comments)

Recent Comments

Bug Workaround: If you are attempting to get a Nemesis match and it is not matching, try placing your base in an exact horizontal line from your opponent's base (look for the red flag on the base layout map and select a square in the same row.)
Here are some better images showing the Foundation Extension in action.

The Imperial Realm - Miranda - Steep Cliff_Lo.jpg
[Too steep a cliff for a building]


The Imperial Realm - Miranda - Steep Cliff Consumable_Lo.jpg
[Used one of the Foundation Extensions]


The Imperial Realm - Miranda - Steep Cliff Positioned_Lo.jpg
[Tadaa!]
So How's it Going? - 2017-08-04 13:27:26 (1 comments)
Any news on updates ? been a while ?
The 5% Problem - 2017-07-27 18:22:17 (4 comments)
That all sounds like a pretty reasonable summary of the state of RTS multiplayer. Mostly I played co-op multiplayer with friends because in 1v1 I would slaughter them. While you can play 1v1 in Miranda's Nemesis mode if that's what you want to do, ...
The 5% Problem - 2017-07-26 13:35:05 (4 comments)
One of the major reasons there is so little competitive multiplayer in RTS (the scene is almost exclusively made up of starcraft, along with some other extremely tight communities) is that in most cases the competitive MP is designed for 1v1 ...
|<      <<      6      7      8      9      10      (11)      12      13      14      15      >>      >|

  Admin Log In



[The Imperial Realm :: Miranda] [Blog] [Gallery] [About]
Terms Of Use & Privacy Policy