Progress on 0.9.1
- Implode
- Site Admin
- Posts: 433
- Joined: Fri Feb 24, 2006 3:35 am
- Location: Newfoundland, Canada
- Contact:
Progress on 0.9.1
I've not posted anything for a while, but not because I haven't been busy so thought I'd post a quick update. I've got 4 big changes to do to accomodate the Fog of War changes:
1) Split the map class into the bits that are permanent and the bits that need to be remembered (e.g. that you remember there was a lair there, you remember who owned a city there and what size it was last time you saw it). This is what I've been doing up until now, and its now finished.
2) While working on (1), I've noticed that a lot of the locking complexity of the entire game all comes down to one routine, the one that checks if a spell applies to a unit, because this gets very complicated for combat area effect spells (like Prayer) for checking the location of the unit (if the unit is attacking, it isn't actually in the same map location as the Prayer spell!) I've devised a clever way around this that will simplify a lot of things and should reduce the amount of locking the game has to do... which should speed it up.
3) Move where the permanent parts of the map are stored.
4) On the server, have one copy of the map per player, so it remembers what each player has seen.
...and that's just to get the data structures how they need to be - I still need to actually WRITE the Fog of War code :) But I feel like I have a plan now, and know how all the changes will fit together, so I'm happy. From the start I didn't attempt to get everything right first time, because my experience from working on other games is that its unrealistic to think that you can look far enough ahead to know what "right" is. Its only once you've got a fair portion of the game written that you really gain an appreciation for how all the data structures should have been designed in the first place. So instead I just took into account that I knew this was going to happen sooner or later, and tried to keep things as flexible as I could, so when I did realise I needed to change some real fundamental core parts of the code, I'd have no trouble doing so. So that's where I am now... going back right to the start of MoM IME (literally - I'm redesigning how map coordinates are stored... it doesn't get more low level than that) and now going back and doing everything "right" :)
Its just a lot to work through, and is going to take a while. Just wanted to do a quick post so nobody starts thinking "no posts = MoM IME is dead"
Implode.
1) Split the map class into the bits that are permanent and the bits that need to be remembered (e.g. that you remember there was a lair there, you remember who owned a city there and what size it was last time you saw it). This is what I've been doing up until now, and its now finished.
2) While working on (1), I've noticed that a lot of the locking complexity of the entire game all comes down to one routine, the one that checks if a spell applies to a unit, because this gets very complicated for combat area effect spells (like Prayer) for checking the location of the unit (if the unit is attacking, it isn't actually in the same map location as the Prayer spell!) I've devised a clever way around this that will simplify a lot of things and should reduce the amount of locking the game has to do... which should speed it up.
3) Move where the permanent parts of the map are stored.
4) On the server, have one copy of the map per player, so it remembers what each player has seen.
...and that's just to get the data structures how they need to be - I still need to actually WRITE the Fog of War code :) But I feel like I have a plan now, and know how all the changes will fit together, so I'm happy. From the start I didn't attempt to get everything right first time, because my experience from working on other games is that its unrealistic to think that you can look far enough ahead to know what "right" is. Its only once you've got a fair portion of the game written that you really gain an appreciation for how all the data structures should have been designed in the first place. So instead I just took into account that I knew this was going to happen sooner or later, and tried to keep things as flexible as I could, so when I did realise I needed to change some real fundamental core parts of the code, I'd have no trouble doing so. So that's where I am now... going back right to the start of MoM IME (literally - I'm redesigning how map coordinates are stored... it doesn't get more low level than that) and now going back and doing everything "right" :)
Its just a lot to work through, and is going to take a while. Just wanted to do a quick post so nobody starts thinking "no posts = MoM IME is dead"
Implode.
-
- Posts: 1
- Joined: Sat Feb 17, 2007 4:20 pm
wishing success
I hope you have great success. MOM was one of the best games I ever bought. I even keep an old pentium 125 alive so I can play this game. My son loves it too. I have been getting friends of mine who play Counter strike and Call of Duty2, Halo to look at MOM. It is additive for them too. They can't get over just how re-playable and advanced it is. We all want to play multiplayer against each other with the magic working. Hope you continue and get all those great magic spells working.
-
- Posts: 83
- Joined: Tue Jul 25, 2006 6:40 pm
I will be completely honest and say I look forward to Implode's magnum opus here than more than any big commercial game releases in the forseeable future. If it was released as a retail game with a small price tag I'd snatch it up without a second thought; I know implode does this as a pet project, but I'd bet it wouldn't be too terribly difficult to get a decent publisher interested in a full scale production of this with up to date technology (by which I mean a team of artists and animators and a new music staff, what have you), though that would involve purchasing the rights to the title and whatnot....
Hey, I can dream. Yeah, it's not going to happen, but the thought warms my heart.
As it is, MoMIME looks to be one of my favorite games of all time despite being way behind the tech curve in flashiness, the pure brilliance of it's gameplay and replayability and just sheer FUN really shine through!
Hey, I can dream. Yeah, it's not going to happen, but the thought warms my heart.
As it is, MoMIME looks to be one of my favorite games of all time despite being way behind the tech curve in flashiness, the pure brilliance of it's gameplay and replayability and just sheer FUN really shine through!
- Implode
- Site Admin
- Posts: 433
- Joined: Fri Feb 24, 2006 3:35 am
- Location: Newfoundland, Canada
- Contact:
Well I'm kind of hoping that's what Stardock are eventually going to do, but I think any major revamp of the graphics or music unless done VERY carefully is going to make the remake just not "feel" like MoM anymore... and that's one of the things I'm trying desperately to preserve. I actually like the original graphics and music, they're nostalgic :) All I've thought about doing is resampling the music through a decent tone generator (i.e. my Roland keyboard) and sampling it... it sounds wicked like that but when I tried to plug the output from the keyboard into the 'line in' on my PC and sample it, the sound comes all distorted and I never spent enough time on it then to try to figure out why.Lupinedreams wrote:by which I mean a team of artists and animators and a new music staff
But to everyone: thanks VERY much for the words of encouragement.
Implode.
I'm more than happy with MOM graphics, the game's greatness has nothing to do with its graphics. People who wish for better graphics are *totally* missing the point.
I must admit, I don't just tolerate MOM graphics but I still find them charming...
i predict that if this project is actually completed, you will suddenly get tons of people helping with graphics and sound.. It won't be super snazzy 3d whathave you graphics, but better than nothing.
I must admit, I don't just tolerate MOM graphics but I still find them charming...
i predict that if this project is actually completed, you will suddenly get tons of people helping with graphics and sound.. It won't be super snazzy 3d whathave you graphics, but better than nothing.
-
- Posts: 83
- Joined: Tue Jul 25, 2006 6:40 pm
Sorry if I've been misunderstood - I wasn't complaining that MoMIME used the original graphics - I am overjoyed that Implode takes his free time to work on this. I was just thinking out loud in a what if scenario. To be honest though, even if he had the oportunity to get his work picked up by a sizable developer, I don't know if Implode would even be interested in it - I think he does this partly as a hobby, no? Not something he wants other people telling him how to do. But what do I know *shrugs*
Anyway, yes, I'm excited about it. I know a lot of people have asked if they could support the project (myself included) but I'm happy to let it proceed at it's own pace, with no deadlines or pressure on Implode. When it's done, regardless of how long that takes, I'll still want to play it!
Anyway, yes, I'm excited about it. I know a lot of people have asked if they could support the project (myself included) but I'm happy to let it proceed at it's own pace, with no deadlines or pressure on Implode. When it's done, regardless of how long that takes, I'll still want to play it!
- Implode
- Site Admin
- Posts: 433
- Joined: Fri Feb 24, 2006 3:35 am
- Location: Newfoundland, Canada
- Contact:
Re: Progress on 0.9.1
Finished (2) last night. This was a LOT of work on the server, and the fact that I was away for 2 weeks and both me + my 21 month old son have both been sick ever since we got back hasn't helped. But I managed to pick back up where I left off, finish off the server changes, and thankfully the client changes were much smaller and only took me a couple of days. Did a few quick tests and I don't see to have broken anything too major but will play with it a bit more tonight.Implode wrote:1) Split the map class into the bits that are permanent and the bits that need to be remembered (e.g. that you remember there was a lair there, you remember who owned a city there and what size it was last time you saw it). This is what I've been doing up until now, and its now finished.
2) While working on (1), I've noticed that a lot of the locking complexity of the entire game all comes down to one routine, the one that checks if a spell applies to a unit, because this gets very complicated for combat area effect spells (like Prayer) for checking the location of the unit (if the unit is attacking, it isn't actually in the same map location as the Prayer spell!) I've devised a clever way around this that will simplify a lot of things and should reduce the amount of locking the game has to do... which should speed it up.
3) Move where the permanent parts of the map are stored.
4) On the server, have one copy of the map per player, so it remembers what each player has seen.
No doubt now that I've done the right thing by making those changes in (2) - a lot of the code as been enormously simplified by it, and runs with fewer thread locks, so should be a little faster too.
Then (3) should not take long at all. I suspect (4) is going to be a lot of work but hard to tell until I get started on it. Then I still need to get things like attacking cities to work. So obviously at this stage its not going to be ready anytime in March :( Hard to tell when it will be. I'll post updates as I'm progressing with it.
Implode.
- Implode
- Site Admin
- Posts: 433
- Joined: Fri Feb 24, 2006 3:35 am
- Location: Newfoundland, Canada
- Contact:
>> On the server, have one copy of the map per player, so it remembers what each player has seen.
Oh that sounded so simple when I wrote that ;) It turns out every player needs their own copy of the:
area of the map they can see (of course)
map (including the race/population/owner of all cities, so they can't see cities grow or be captured/razed if they don't have a scout there anymore)
builings (so they can't see new buildings constructed in a city that they scouted but can no longer see)
spells that have been cast (so they can't see new spells being cast in a city that they have scouted but can no longer see)
combat area effects (like prayer or heavenly light... wasn't technically necessary but it simplified a lot of the unit code to include it).
But I've got the data structures changed to work like this now, and it generally seems to hang together how I want it. All the unit and city calculations now return what each player *thinks* are the correct values based on what you know about the map, rather than the correct values. e.g. if you only scout some of the terrain surrounding a city and look on their city screen, you won't see their full ration/production/gold because you don't know what they're getting from the map squares that you've not seen.
What I'm probably most excited about is that you will be able to tell units to move into the "blackness". Of course they don't know whether they'll be able to get there (maybe you told your spearmen to move into the ocean!) or the shortest route (they don't know about any roads in the area until they've seen them), so the movement algorithm will move them towards the destination along the most direct path, and alter their route as appropriate as they learn more about the terrain. In theory... :)
The point I'm trying to make is... writing Fog of War to work properly, how I want it to work, is bloomin' complicated and I think I grossly underestimated how big of a change it was :) But I'm far enough through that I'm pretty confident now that it is going to work, its just a question of how long it takes me to go through adjusting all the code. And I do mean *all* the code... I have to change practically everything I wrote right from the start... but I knew that was inevitable, I couldn't have designed it properly from the start because I didn't understand then how everything needed to work and hang together so sooner or later I knew I would have to pull it all to pieces and do some major restructuring!
Implode.
Oh that sounded so simple when I wrote that ;) It turns out every player needs their own copy of the:
area of the map they can see (of course)
map (including the race/population/owner of all cities, so they can't see cities grow or be captured/razed if they don't have a scout there anymore)
builings (so they can't see new buildings constructed in a city that they scouted but can no longer see)
spells that have been cast (so they can't see new spells being cast in a city that they have scouted but can no longer see)
combat area effects (like prayer or heavenly light... wasn't technically necessary but it simplified a lot of the unit code to include it).
But I've got the data structures changed to work like this now, and it generally seems to hang together how I want it. All the unit and city calculations now return what each player *thinks* are the correct values based on what you know about the map, rather than the correct values. e.g. if you only scout some of the terrain surrounding a city and look on their city screen, you won't see their full ration/production/gold because you don't know what they're getting from the map squares that you've not seen.
What I'm probably most excited about is that you will be able to tell units to move into the "blackness". Of course they don't know whether they'll be able to get there (maybe you told your spearmen to move into the ocean!) or the shortest route (they don't know about any roads in the area until they've seen them), so the movement algorithm will move them towards the destination along the most direct path, and alter their route as appropriate as they learn more about the terrain. In theory... :)
The point I'm trying to make is... writing Fog of War to work properly, how I want it to work, is bloomin' complicated and I think I grossly underestimated how big of a change it was :) But I'm far enough through that I'm pretty confident now that it is going to work, its just a question of how long it takes me to go through adjusting all the code. And I do mean *all* the code... I have to change practically everything I wrote right from the start... but I knew that was inevitable, I couldn't have designed it properly from the start because I didn't understand then how everything needed to work and hang together so sooner or later I knew I would have to pull it all to pieces and do some major restructuring!
Implode.