tag:blogger.com,1999:blog-64481532024-03-13T16:20:45.641+01:00Master of Orion II Onlinesironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.comBlogger90125tag:blogger.com,1999:blog-6448153.post-81905336316270061982020-06-05T19:35:00.000+02:002020-06-05T19:35:13.497+02:00The Best 4X Game of All Time<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-C2AMAwbLJSg/XtqCH711E1I/AAAAAAAAAP4/A6WiHE723KETsvOzzOViw9-ORgXA7W3uACK4BGAsYHg/s1314/MOO24Xwinner.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1314" data-original-width="1053" height="457" src="https://1.bp.blogspot.com/-C2AMAwbLJSg/XtqCH711E1I/AAAAAAAAAP4/A6WiHE723KETsvOzzOViw9-ORgXA7W3uACK4BGAsYHg/s320/MOO24Xwinner.png" width="366" /></a></div>sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com1tag:blogger.com,1999:blog-6448153.post-22253076910738242032020-05-30T11:14:00.004+02:002020-05-30T21:47:18.628+02:00eXplorminate Best 4X Final: MOO2 vs. MOM<div>MOO2 beat Stellaris 134-76 in the eXplormiate Best 4X tourney Semi Final and reached the dream final <br /></div><div><br /></div><div><b>Master of Orion 2 vs Master of Magic</b>!</div><br /><div>Lead Dev Steven Barcia completely rules this 4X tourney with his 3 games. One of his games will win and the other both games were only be eliminated by one of his own games.</div><div><u><br /></u></div><div><u>Barcia vs Other games 7-0</u>!!!</div><br />Please vote!<br /><br /><a href="https://www.polltab.com/bracket-poll/fP7Q1Vqgit">https://www.polltab.com/bracket-poll/fP7Q1Vqgit</a><br />sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com0tag:blogger.com,1999:blog-6448153.post-74117050807279827082020-05-25T12:30:00.000+02:002020-05-30T21:47:27.290+02:00MOO2 vs CIV5 169-109 - next matchup: Stellaris<div>Wow, the two Barcia Games reached the semi finals:</div><div><br /></div>MOO2 vs Stellaris<br />Distant Worlds vs Master of Magic<br /><a href=" https://www.polltab.com/bracket-poll/fP7Q1Vqgit"><br />https://www.polltab.com/bracket-poll/fP7Q1Vqgit</a><br /><br />Please support and vote!<br />sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com0tag:blogger.com,1999:blog-6448153.post-47653667620518163612020-05-18T12:21:00.002+02:002020-05-30T21:47:31.907+02:00MOO2 vs CIV2 209-77 - next matchup: CIV5MOO2 was able to reach the next round, where it faces CIV5 now.<br />Please support MOO2 and vote!<br /><br /><a href="https://www.polltab.com/bracket-poll/fP7Q1Vqgit">https://www.polltab.com/bracket-poll/fP7Q1Vqgit</a><br /><br />PS: Also Barcia's Master of Magic (which heavily influenced MOO2) reached the quarter-final:<br /><br />MOO2 vs CIV5<br />Stellaris vs Endless Legend<br />Distant Worlds: Universe vs Age of Wonders 3<br />Star Ruler 2 vs Master of Magic<br />sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com0tag:blogger.com,1999:blog-6448153.post-47727384503184717522020-05-17T19:37:00.010+02:002020-05-18T01:02:38.067+02:00MOO2 1.50.18 and the nebula fix<div>The latest 1.5 version does now include nebula related bug fixes. Let me try to explain the bug fixes after a short introduction how nebulae work.</div><div><br /></div><div>In MOO2, the nebula related calculations are always based on the nebula pics which are used in the huge galaxy size. There are 12 different kinds of nebulae in use and they are stored in STARBG.LBX. Between the MOO2 coordinates and the Nebula picture pixel size is a conversion factor of 3 in use, i.e. that a nebula picture with 80px*80px will cover a 240*240 area in the Galaxy map. A star is considered “in nebula” if the respective pixel value of the nebula picture is greater than 5.</div><div><br /></div>a) In a first step, it is checked if a galaxy coordinate is within the area covered by the nebula picture.<br />b) In a 2nd step, the pixel value is checked.<br /><div><br /></div><div>In both steps we observed bugs. In the following example - where Sutul is considered in nebula – actually both bugs occur:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-FgSmcCzqdeU/XsF4FzUlFyI/AAAAAAAAANs/00TflLw3xSsvuh7CuNM3osW3qRz2uF2_QCK4BGAsYHg/Sutul2.bmp" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="120" data-original-width="151" src="https://1.bp.blogspot.com/-FgSmcCzqdeU/XsF4FzUlFyI/AAAAAAAAANs/00TflLw3xSsvuh7CuNM3osW3qRz2uF2_QCK4BGAsYHg/Sutul2.bmp" /></a></div><div><br /></div><div>a) So far, the first check, if a coordinate is within nebula picture was done after a division with the conversion factor 3. Since results of divisions are truncated in MOO2, it could happen that coordinates slightly outside the nebula picture area (on left or upper edge of the nebula picture) were not excluded from step b. This is fixed now in 1.50.18 - the respective check is done without division (and truncation issue).<br /></div><div><br /></div>b) After the first check the respective pixel value is determined. Here Alexey pointed out that MOO2 assumes a picture header size of 16 bytes whereas Grig de Griz help files pointed out that it is actually 20 bytes. So the “in nebula” area was actually shifted 4 pixels to the right and this shift could also result in new “in nebula” areas on the left edge of the nebula picture as highlighted here in the 3rd pic "2neb09_bug.bmp":<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-gZeocYRYubk/XsF1AMOLnrI/AAAAAAAAAMo/-65ghel3kxguAv5LBxEsJDyxZaO5egsgQCK4BGAsYHg/Example09b.bmp" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="164" data-original-width="627" height="155" src="https://1.bp.blogspot.com/-gZeocYRYubk/XsF1AMOLnrI/AAAAAAAAAMo/-65ghel3kxguAv5LBxEsJDyxZaO5egsgQCK4BGAsYHg/s320/Example09b.bmp" width="595" /></a></div><div style="text-align: center;"><br /></div><b>2nebula09.bmp:</b> nebula picture of nebula09 in the STARBG.LBX<br /><b>2neb09_18.bmp:</b> the correct 'in nebula area' since 1.50.18<br /><b>2neb09_bug.bmp:</b> the buggy 'in nebula area' in all previous versions<br /><div><b>2neb09_diff.bmp</b> illustrate the differences of this bug fix:<br /><b><span style="color: #b51200;">Brown red</span></b> areas were 'in nebula' in previous versions but are no longer 'in nebula' in 1.50.18.<br />The <b><span style="color: #ba67c8;">light purple</span></b> areas were 'not in nebula' in previous versions but are now since 1.50.18.<br />This illustrates that the ‘in nebula area’ is now slightly shifted to the left by the before mentioned 4 pixels. Additionally, the artefacts on the left disappear.</div><div><br /></div><div>Here is an overview of all the other nebulae:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/--H9rTs1TKrk/XsF3yiS84xI/AAAAAAAAANY/kgh05aW4MncSddr4LQAHhyjKWn9UymdrwCK4BGAsYHg/NebulaOverview.bmp" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1382" data-original-width="444" height="320" src="https://1.bp.blogspot.com/--H9rTs1TKrk/XsF3yiS84xI/AAAAAAAAANY/kgh05aW4MncSddr4LQAHhyjKWn9UymdrwCK4BGAsYHg/s320/NebulaOverview.bmp" /></a></div><div>For a detailed view, check it here: <a href="https://photos.app.goo.gl/v98gwapPFinDoY1f8">https://photos.app.goo.gl/v98gwapPFinDoY1f8</a><br /></div><div><br /></div><div>Maybe, the buggy in nebula calculations of the previous versions were one of the reasons why they disappeared from the standard multiplayer settings. Especially, when one of the players was surprised by the in-nebula result directly in the battle screen - it is pretty unfair. Now they work as intended and I would recommend them for mirror maps. (So far, the nebulae are not exactly mirrored - but this can be modded soon.)<br /></div><div><br /></div><div>Please note, even in the deepest nebula there are sometimes a few dark pixels (see the detailed overview for examples) - so in rare cases a star which appears deep in the nebula is actually not in nebula. But this was intended by the Devs and is not considered a bug.<br /></div>sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com0tag:blogger.com,1999:blog-6448153.post-15947423133126547652020-05-11T10:02:00.003+02:002020-05-30T21:47:41.047+02:00MOO2 vs MOO1 455-181This clear victory surprizes me. 2nd round bracket MOO2 vs CIV2<br /><div><br /></div><div>Support MOO2!!!</div><br /><a href="https://www.polltab.com/bracket-poll/fP7Q1Vqgit" target="_blank">https://www.polltab.com/bracket-poll/fP7Q1Vqgit</a><br />sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com0tag:blogger.com,1999:blog-6448153.post-31596862553173206062020-05-05T13:11:00.000+02:002020-05-05T13:42:13.298+02:00The best 4X game of all timeseXplorminate initiated this sequence of polls in a knockout system to determine the best 4X game of all times.<br />
<br />
Unfortunately, our beloved Moo2 encounters the classic Moo1 already in the first round. <br />
Difficult, if not hopeless since the moo1 community prospers again (thanks to the moo1 remake <a href="https://www.reddit.com/r/rotp/">https://www.reddit.com/r/rotp/</a> ) <br />
<br />
So, if you want help Moo2 not to be crushed, please vote: <br />
<br />
<a href="https://www.polltab.com/bracket-poll/fP7Q1Vqgit">https://www.polltab.com/bracket-poll/fP7Q1Vqgit</a> <br />
<br />
<br />sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com0tag:blogger.com,1999:blog-6448153.post-49410972210940383852020-04-12T12:03:00.001+02:002020-04-12T15:30:18.049+02:00XL Mods<h3>
New Star Densities for Maps with 71 Stars</h3>
Thanks to very nice 1.50 it is now quite easy to create mods via configuration files. In the pretty user-friendly launcher these mods can be selected in a drop down menu. Furthermore, there is now a distinction between core mods which can now be combined with any desired map mod. Kudos to Rocco and Alexey for adding this flexibility!!!<br />
<br />
Noticing this new flexibility I had the impression that this feature could be used to reduce the monotony of the multiplayer games where almost solely the large galaxy size is used. The respective map size parameters in the configuration files do still only properly support the known default values for the small, medium, large and huge galaxy sizes but thanks to the new 1.50 patch we can now add postprocessor scripts to the configuration files which allow us to rescale the default maps in a second step. This means the displayed galaxy map is the huge default size but the placement of the stars is recalculated based on a smaller galaxy size. In such a way we can generate galaxy sizes between large and huge, which could be an approach to solve the old trade-off in classic maps:<br />
<br />
In online multiplayer games, the large galaxy size is by far the most popular choice. Only when there are more than 4 players, the huge galaxy is discussed beforehand (adding more stars, increasing the distance to the neighbors). Regarding 1v1, I can barely remember the huge galaxy ladder games – but we observed that many huge maps made deuterium mandatory for an appropriate expansion early on - and this slows down a slow game even more. The low star density in huge maps reduces the number of stars in 6parsec-homeworld range and this leads to more unbalanced maps (compared to large). Furthermore, the very low star density in huge maps does sometimes even create maps where only one system with a monster world is in 6 parsec range. The idea of this mod is to generate better start densities to avoid these problems. Let us illustrate the classic galaxy sizes and its densities:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-vbL93G3clyg/XpLkuLA3lXI/AAAAAAAAAJk/pXbCwp7Dnzgv-ERfdLW_DORndGCrjNgtgCLcBGAsYHQ/s1600/Classic.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="144" data-original-width="308" height="148" src="https://1.bp.blogspot.com/-vbL93G3clyg/XpLkuLA3lXI/AAAAAAAAAJk/pXbCwp7Dnzgv-ERfdLW_DORndGCrjNgtgCLcBGAsYHQ/s320/Classic.png" width="320" /></a></div>
<br />
In this table the density is illustrated in the X*Y/Stars column. Please note that height/width value of 30 represents 1 parsec. Therefore, a 6 parsec circle is roughly 100.000 but if a home world is placed in the corner the respective corner arc only covers about 25.000.<br />
<br />
The XL mod now does use in all 5 galaxy sizes the maximum number of 71 stars – and the star placement is based on the map generation of the huge galaxy, but in the second step a LUA script does use the following height/width values to compress the huge galaxy:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-TlPpI_T5bHk/XpLlHGz_uhI/AAAAAAAAAJs/8qmbtS0fyGo1VBiB8Kne5T6KIT0A6dKRQCLcBGAsYHQ/s1600/XL.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="149" data-original-width="413" height="115" src="https://1.bp.blogspot.com/-TlPpI_T5bHk/XpLlHGz_uhI/AAAAAAAAAJs/8qmbtS0fyGo1VBiB8Kne5T6KIT0A6dKRQCLcBGAsYHQ/s320/XL.png" width="320" /></a></div>
For example, the XL medium galaxy size has now about the same density as the classic large galaxy.<br />
<br />
Just download this <a href="https://drive.google.com/file/d/1x0grBHDae0E_lFLA5U3jkCPDXt8sFh4A/view?usp=sharing">zip file</a> and extract the files into the <b>... \150\mods\maps</b> folder. Afterwards, the launcher should display for all 1.50 OOTB maps the respective XL option:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-QM5ck_9f944/XpLllPaPAkI/AAAAAAAAAJ0/Szb-W7WMT6YeNZZHomlmeBZEdXY5lU9DQCLcBGAsYHQ/s1600/Launcher.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="237" data-original-width="409" height="184" src="https://1.bp.blogspot.com/-QM5ck_9f944/XpLllPaPAkI/AAAAAAAAAJ0/Szb-W7WMT6YeNZZHomlmeBZEdXY5lU9DQCLcBGAsYHQ/s320/Launcher.png" width="320" /></a></div>
In summary, you have now 7 flavors for the 1.5 OOTB maps with 71 stars, ordered by density:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-NG3vlw7zw7M/XpLmOD3Y_JI/AAAAAAAAAKA/nYKno6AQ_h8U4xyzkgH86yH1VE1vG7VGACLcBGAsYHQ/s1600/DensityRanking.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="188" data-original-width="413" height="145" src="https://1.bp.blogspot.com/-NG3vlw7zw7M/XpLmOD3Y_JI/AAAAAAAAAKA/nYKno6AQ_h8U4xyzkgH86yH1VE1vG7VGACLcBGAsYHQ/s320/DensityRanking.png" width="320" /></a></div>
So, for example you could start with an XL Medium which has 71 stars and a density of a classic large map.
Please note, since LUA scripting does not include an option to update the in_nebula flag of the stars, I recommend to play nonebula for now. Otherwise, the map display might mislead you in battles, if you expect (de)activated shields over some star system – please note, that also the classic cluster has the same bug since 1.4.
And finally, many thanks to <span style="color: #134f5c;"><b>Admiral Loknar</b></span> who recreates and rereleases the old mods as 1.5 config files. He recreated the DR mod, and I included DR and DR XL in the above mentioned zip file!<br />
<br />
Happy Easter!<br />
Have fun!
sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com2tag:blogger.com,1999:blog-6448153.post-80426713863058018502020-01-23T19:43:00.002+01:002020-01-23T19:52:29.233+01:00MOO2 - 1.50 PatchThe 1.50 patch for Master of Orion II: Battle at Antares has been in development since early 2016. The latest version, 1.50.17, has just been released on January 19, 2020.<br />
The patch, and more info about it, can be found here: <a href="http://moo2mod.com/">http://moo2mod.com/</a>Roccohttp://www.blogger.com/profile/02544012293330671313noreply@blogger.com2tag:blogger.com,1999:blog-6448153.post-86278590517929221662015-06-23T04:36:00.000+02:002015-06-23T04:36:20.444+02:00Everyone working on the project is a fan of the original<a href="http://wccftech.com/e3-2015-master-of-orion-should-marry-the-best-of-the-originals/">http://wccftech.com/e3-2015-master-of-orion-should-marry-the-best-of-the-originals/</a>
<blockquote>"The decision to lessen the amount of technology one can research was because the original was perhaps a bit too complex, over-reaching and just overwhelming. There’s still a wide swathe of different technologies to enjoy regardless, and it should still prove pleasing to veterans of Masters of Orion. That, and it should be far more accessible overall. There are even some back-end changes that help you to choose a path you want to take. You can, of course, search through the entire catalogue and then choose a technology you wish to have in the future, and the system will highlight everything needed to achieve that end goal for you."</blockquote>
<a href="http://www.escapistmagazine.com/articles/view/video-games/conferences/e3-2015/14165-Master-of-Orion-Remake-Will-Be-a-Labor-of-Love-For-Wargaming">http://www.escapistmagazine.com/articles/view/video-games/conferences/e3-2015/14165-Master-of-Orion-Remake-Will-Be-a-Labor-of-Love-For-Wargaming</a>
<blockquote>"Kislyi, who used Civilization as his MBA, fully believes that a good 4x strategy game can be educational. "I want my kids to play Master of Orion to make them smarter. Learning economy and how to manage a civilization will do that for you."
No release date has been set for the game, mainly because the game is not one of Wargaming's tentpole franchises that needs to have a deadline. "We can afford to make this perfect," Kislyi said. "Everyone working on the project is a fan of the original, and we aren't going to live or die with this project. It needs to be polished and fantastic.""</blockquote>sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com5tag:blogger.com,1999:blog-6448153.post-7772811125698602382015-06-21T04:44:00.000+02:002015-06-21T04:44:01.431+02:00MOO4 - Let us hope for Tactical Combat<blockquote>Once you start colonizing planets, the way that you choose to grow and expand your race is up to you. If you get embroiled in war with another culture at some point, which you will, then there is an option of either simulated combat – which still lets you make attack decisions if needed – or tactical combat, which is much more hands-on. <b>The tactical mode wasn’t shown in my demonstration, but it was clearly on option on the screen that they weren’t ready to talk about yet.</b></blockquote>
<a href="http://thekoalition.com/2015/master-of-orion-preview-the-remake-we-deserve">http://thekoalition.com/2015/master-of-orion-preview-the-remake-we-deserve</a>sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com0tag:blogger.com,1999:blog-6448153.post-75904717326964783542015-06-14T22:01:00.001+02:002015-06-14T22:01:34.524+02:00SimTex team involved!<blockquote>[We went] back and contacted the original [SimTex] team. We brought in several of them as consultants. Their job is to make sure that we stay on point. We got the original producer, original art director, the original composer is doing the music for the new game, a couple of designers as well. So yeah, we've got people onboard that are very relevant to the process."
Many of the old SimTex developers were stunned when Keeling tracked them down with consultancy offers for a new Master of Orion game. Some of them took him on a field trip to the old SimTex offices, which are on the same street as Wargaming's Austin location. The cradle of Master of Orion, it turns out, is now a mall restaurant.</blockquote>
<a href="http://www.pcgamer.com/wargaming-on-master-of-orion-this-is-a-passion-for-us/">http://www.pcgamer.com/wargaming-on-master-of-orion-this-is-a-passion-for-us/</a>sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com0tag:blogger.com,1999:blog-6448153.post-6457672027926960732015-06-14T13:33:00.001+02:002015-06-14T13:33:39.679+02:00Master of Orion Announcement Trailer <iframe width="560" height="315" src="https://www.youtube.com/embed/MtQhNef17zw" frameborder="0" allowfullscreen></iframe>sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com1tag:blogger.com,1999:blog-6448153.post-62911622748331302462015-06-11T02:43:00.004+02:002015-06-11T02:43:51.917+02:00Masters of Orion Reboot Coming From World of Tanks DevKey members of original game's team are working on the reboot.<br />
<br /><a href="http://www.gamespot.com/articles/masters-of-orion-reboot-coming-from-world-of-tanks/1100-6427911/?utm_source=daily_updates_registered&utm_medium=email&utm_campaign=Master+of+Orion">http://www.gamespot.com/articles/masters-of-orion-reboot-coming-from-world-of-tanks/1100-6427911/?utm_source=daily_updates_registered&utm_medium=email&utm_campaign=Master+of+Orion</a>sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com1tag:blogger.com,1999:blog-6448153.post-11754474256187570242013-08-04T04:36:00.001+02:002013-08-04T04:36:49.761+02:00Total Annihilation and Master of Orion are strategy game classics"<i>Total Annihilation</i> and <i>Master of Orion</i> are strategy game
classics," said Wargaming.net CEO Victor Kislyi. "Although it's too soon
to disclose any details, we are more than willing to give a new lease
of life to these games most of us grew up playing. It's exactly where
our major focus will be."<br />
(http://www.polygon.com/2013/8/2/4582218/wargaming-net-acquires-total-annihilation-master-of-orion) sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com1tag:blogger.com,1999:blog-6448153.post-36638654963940399912013-07-23T02:48:00.002+02:002013-07-23T02:54:21.734+02:00Woot! Master of Orion IPs sold off at Atari auction"Interesting to see Planetary Annihilation makers Uber go for Total Annihilation, and that Stardock bid on Master of Orion. Both are definitely in their respective areas of interest, but you’re in for a hard time if you’re bidding against Wargaming right now. Stardock didn’t go away empty handed, though – having taken hold of Star Control."<br />
<br />
http://www.pcgamer.com/2013/07/22/total-annihilation-franchise-bought-by-wargaming-the-owners-of-gas-powered-games/<br />
<br />
...and the winner is:<br />
Master of Orion Franchise<br />
<b>Successful Bidder: Wargaming World Limited</b><br />
<br />
Back-Up Bidder: Stardock Systems, Inc (hehe, they did hate tactical combat...so this seems good news for MOO2 fans...)sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com2tag:blogger.com,1999:blog-6448153.post-79983112712876320842012-01-18T00:45:00.001+01:002012-01-18T00:49:34.893+01:00Master of Onion<iframe width="420" height="315" src="http://www.youtube.com/embed/8Orbr25O9K8" frameborder="0" allowfullscreen></iframe>sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com11tag:blogger.com,1999:blog-6448153.post-72703816601450521152011-03-06T01:11:00.009+01:002011-04-10T04:08:26.920+02:00IE PC game designer Interview: Steve Barcia (Simtex, Circa 1994)<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmasteroforion2.blogspot.com%2F2011%2F03%2Fie-pc-game-designer-interview-steve.html&layout=button_count&show_faces=false&width=450&action=like&font=arial&colorscheme=light&height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:21px;" allowTransparency="true"></iframe><br /><br /><iframe title="YouTube video player" width="640" height="510" src="http://www.youtube.com/embed/z5DD0zPOB-A" frameborder="0" allowfullscreen></iframe><br /><br />The youtube video description states:<br /><br /><blockquote>Freshly after releasing Master of Magic, the now Defunct Interactive Entertainment CD Mag (magazine entirely on a CD) obtained an exclusive interview with the now legendary game designer and SimTex founder, Steve Barcia. They talk about what inspired him, how he works and a few questions specifically about SimTex and Master of Orion. Overall, a good interview process. Steve has since moved on to Retro Studios, heading Metroid Prime... then on to Electronic Arts. His profile picture on IGN shows that it looks like he's lost weight since 1994. [...]</blockquote><br /><br />He probably refers to this profile: <a href="http://games.ign.com/top-100-game-creators/88.html">http://games.ign.com/top-100-game-creators/88.html</a>sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com5tag:blogger.com,1999:blog-6448153.post-87223177549377746612010-09-21T23:29:00.007+02:002010-10-10T02:09:54.418+02:00Streaming Games On Ustream!Hey, everyone, Gor here! You may know me from the IRC chat; and if not, I am often hanging around in there, so you'll probably see me some time. I am posting here to say that I am going to start streaming my games between myself and my friends, and possibly some members of the IRC if they are into it. I'll be posting an embedded player here, so that anyone stopping by can watch the games, and I'll try to keep everyone up to date on any scheduled streams. Hopefully this will give us all some fun content to enrich the community with. :) (Edit: Switching to Ustream)<span style="text-decoration: underline;"><br /><br /><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="utv96702" width="400" height="251"><param name="flashvars" value="autoplay=false&brand=embed&cid=5821017&locale=en_US"><param name="allowfullscreen" value="true"><param name="allowscriptaccess" value="always"><param name="movie" value="http://www.ustream.tv/flash/live/1/5821017?v3=1"><embed flashvars="autoplay=false&brand=embed&cid=5821017&locale=en_US" allowfullscreen="true" allowscriptaccess="always" id="utv96702" name="utv_n_677151" src="http://www.ustream.tv/flash/live/1/5821017?v3=1" type="application/x-shockwave-flash" width="600" height="451"></embed></object><br /></span><span style="text-decoration: underline;"><br /></span>Replay archive can be found here: <a href="http://www.ustream.tv/user/UniquelyDefined/videos">http://www.ustream.tv/user/UniquelyDefined/videos</a><span style="text-decoration: underline;"><br /></span><a href="http://www.livestream.com/?utm_source=lsplayer&utm_medium=embed&utm_campaign=footerlinks" title="Broadcast Live Free"></a>Gorhttp://www.blogger.com/profile/14391903208590498299noreply@blogger.com2tag:blogger.com,1999:blog-6448153.post-35489785473974301752009-08-16T17:00:00.003+02:002009-08-16T17:19:39.975+02:00The Fastest SpeedrunsLast week the German game magazine PC Games reported about the <a href="http://speeddemosarchive.com/">Speedruns Archive</a> and listed <a href="http://www.pcgames.de/aid,692029/Die-schnellsten-Speedruns-der-Welt-Master-of-Orion-2-in-nur-39-Sekunden-und-mehr/PC/Special/">the ten fastest speedruns</a>. 3rd fastest speedrun of all games is the following MOO2 advanced game versus 1 AI. Just 39 seconds:<br /><br /><object width="660" height="525"><param name="movie" value="http://www.youtube.com/v/dXbIKQ9C8iA&hl=de&fs=1&color1=0x234900&color2=0x4e9e00&border=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/dXbIKQ9C8iA&hl=de&fs=1&color1=0x234900&color2=0x4e9e00&border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="660" height="525"></embed></object>sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com6tag:blogger.com,1999:blog-6448153.post-68826755679320493212009-07-27T22:19:00.002+02:002010-03-20T20:45:55.649+01:00MOO2 Live Broadcasts<p>You may have observed that we had again several MOO2 live broadcasts on this website in the recent days. Earlier this year, justin.tv disabled the autoplay feature of their embedded videos – this made their embedded videos pretty much useless as there was no indicator of an ongoing broadcast at all – and therefore we stopped broadcasting. The autoplay feature is still disabled but they have implemented an indicator for live broadcasts again. You will now see - similar to the window on the right side - a red live button and a snapshot of the active broadcast:<br /></p><p><a href="http://www.flickr.com/photos/48473469@N00/3665642625/" title="livebroadcast by moo2niac, on Flickr"><img src="http://farm4.static.flickr.com/3387/3665642625_a24261a909_o.jpg" alt="livebroadcast" height="186" width="413" /></a><br /></p><p>Furthermore, the archive works now correctly and we have the option to extract highlights or even complete games. Let me give you a few examples:<br /></p><p><object type="application/x-shockwave-flash" id="clip_embed_player_flash" data="http://en.justin.tv/widgets/clip_embed_player.swf" bgcolor="#000000" height="263" width="320"><param name="movie" value="http://en.justin.tv/widgets/clip_embed_player.swf"><param name="allowScriptAccess" value="always"><param name="allowNetworking" value="all"><param name="allowFullScreen" value="true"><param name="flashvars" value="auto_play=false&start_volume=25&title=Early Hydra&start_time=1246130170000&end_time=1246130647000&channel=moo2niac&tip_id=1675916"></object><a class="cxxlgboifeldutuepvbr" href="http://en.justin.tv/widgets/clip_embed_player.swf"></a><br /><a href="http://en.justin.tv/moo2niac" style="padding: 2px 0px 4px; display: block; width: 320px; font-weight: normal; font-size: 10px; text-decoration: underline; text-align: center;">Watch live video from MOO2 LIVE on Justin.tv</a><br /></p><p>Cab here at bottom in this <span style="font-weight: bold;">5way</span> taking out an early hydra at turn 48. Evil Sky was in the center with his telepathic race but had not enough fleet to cause trouble later on.<br /></p><p>Some fragments of an <span style="font-weight: bold;">1v1 Cab vs Deathlord</span>. BTW, long segments will be splitted into several 15min fragments:<br /></p><p>Cabman vs Deathlord Pre (Build Up) <a href="http://en.justin.tv/clip/c8d50ee495c35b6e">1/2</a> and <a href="http://en.justin.tv/clip/10c801ffa24db29c">2/2</a><br /> </p><p><a href="http://www.justin.tv/clip/26b1ceb30b15f0c7">Cabman vs Deathlord Contact</a> and the final (test) battle (Deathlord already conceded beforehand):<br /></p><p><object type="application/x-shockwave-flash" id="clip_embed_player_flash" data="http://www.justin.tv/widgets/clip_embed_player.swf" bgcolor="#000000" height="263" width="320"><param name="movie" value="http://www.justin.tv/widgets/clip_embed_player.swf"><param name="allowScriptAccess" value="always"><param name="allowNetworking" value="all"><param name="allowFullScreen" value="true"><param name="flashvars" value="auto_play=false&start_volume=25&title=Cabman vs Deathlord Pre Final Battle&start_time=1247956679000&end_time=1247957559000&channel=moo2niac&tip_id=1753607"></object><a class="cxxlgboifeldutuepvbr" href="http://www.justin.tv/widgets/clip_embed_player.swf"></a><br /><a href="http://www.justin.tv/moo2niac" style="padding: 2px 0px 4px; display: block; width: 320px; font-weight: normal; font-size: 10px; text-decoration: underline; text-align: center;">Watch live video from MOO2 LIVE on Justin.tv</a><br /></p><p>Additionally, justin.tv seems to offer enough space for free to present full games. Here are two duels between Cab and Bork:<br /></p><p><span style="font-weight: bold;">Duel 1, 20</span><sup style="font-weight: bold;">th</sup><span style="font-weight: bold;"> July:</span><br /></p><p>Cab vs Bork - Before Contact <a href="http://www.justin.tv/clip/9427c6b67e8f6a1f">1/8</a>, <a href="http://www.justin.tv/clip/964a3ba9273fcdec">2/8</a>, <a href="http://www.justin.tv/clip/65f031900c5e9364">3/8</a>, <a href="http://www.justin.tv/clip/098abb71e17d052d">4/8</a>, <a href="http://www.justin.tv/clip/3441e08d72e1d608">5/8</a>, <a href="http://www.justin.tv/clip/0b441a178fe8541e">6/8</a>, <a href="http://www.justin.tv/clip/d619dc9650c6aaf8">7/8</a> and <a href="http://www.justin.tv/clip/b53a0ce0949bbb41">8/8</a><br /> </p><p><a href="http://www.justin.tv/clip/9cf4a5d9b0db2416">Cab vs Bork First Contact</a><br /> </p><p>Cabman vs Bork t101-t114 <a href="http://www.justin.tv/clip/2de858eeb6a99e9b">1/5</a>, <a href="http://www.justin.tv/clip/29399b44db48d60b">2/5</a>, <a href="http://www.justin.tv/clip/7a37788d6887a191">3/5</a>, <a href="http://www.justin.tv/clip/dc71af1ea8c0200a">4/5</a> and <a href="http://www.justin.tv/clip/3dfbf9ff3d8b9e11">5/5</a><br /> </p><p><a href="http://www.justin.tv/clip/ad4f9ad96ff5a06f">Bork's side</a> (Post game hotseat analysis of bork's side. Bork was frustrated by Cab's spies.)<br /></p><p><span style="font-weight: bold;">Duel 2, 26</span><sup style="font-weight: bold;">th</sup><span style="font-weight: bold;"> July:</span><br /></p><p>Cab vs Bork (t0-t109) <a href="http://www.justin.tv/clip/c06608b2641cd7bf">1/11</a>, <a href="http://www.justin.tv/clip/b772c88560ca855d">2/11</a>, <a href="http://www.justin.tv/clip/9db104952ba43687">3/11</a>, <a href="http://www.justin.tv/clip/4cff94aa18dad76b">4/11</a>, <a href="http://www.justin.tv/clip/6bf7b1081e0620f5">5/11</a>, <a href="http://www.justin.tv/clip/b3159250c082eaf4">6/11</a>, <a href="http://www.justin.tv/clip/cf6648fc1933d4ae">7/11</a>, <a href="http://www.justin.tv/clip/a44ba7e8d7a7e6ab">8/11</a>, <a href="http://www.justin.tv/clip/5d8020ff488701c0">9/11</a>, <a href="http://www.justin.tv/clip/2bdb0de88c0a6780">10/11</a> and <a href="http://www.justin.tv/clip/4807c7dfff624907">11/11</a><br /> </p><p>Cab vs Bork (Contact-t123) <a href="http://www.justin.tv/clip/3451dce8a8c6e21e">1/10</a>, <a href="http://www.justin.tv/clip/c00139632eda1393">2/10</a>, <a href="http://www.justin.tv/clip/67a3dcf88c72fb4e">3/10</a>, <a href="http://www.justin.tv/clip/77ba3bcf1a6f60b4">4/10</a>, <a href="http://www.justin.tv/clip/feb14a13b18a6828">5/10</a>, <a href="http://www.justin.tv/clip/44ee3675b44ab08a">6/10</a>, <a href="http://www.justin.tv/clip/5962abfef8b5468d">7/10</a>, <a href="http://www.justin.tv/clip/e6cb497e9d6fe5e4">8/10</a>, <a href="http://www.justin.tv/clip/28fa77e2466d69f1">9/10</a> and <a href="http://www.justin.tv/clip/0cf534feeff85fd9">10/10</a><br /> </p><p>Cab vs Bork (Final Turns) <a href="http://www.justin.tv/clip/a5c497b17e76c0f2">1/4</a>, <a href="http://www.justin.tv/clip/81a6a1358a090d88">2/4</a><br /> </p><p>The begin of the final battle:<br /></p><p><object type="application/x-shockwave-flash" id="clip_embed_player_flash" data="http://www.justin.tv/widgets/clip_embed_player.swf" bgcolor="#000000" height="263" width="320"><param name="movie" value="http://www.justin.tv/widgets/clip_embed_player.swf"><param name="allowScriptAccess" value="always"><param name="allowNetworking" value="all"><param name="allowFullScreen" value="true"><param name="flashvars" value="auto_play=false&start_volume=25&title=Cab vs Bork (Final Turns) 3/4&start_time=1248647402000&end_time=1248648302000&channel=moo2niac&tip_id=1782912"></object><a class="cxxlgboifeldutuepvbr" href="http://www.justin.tv/widgets/clip_embed_player.swf"></a><br /><a href="http://www.justin.tv/moo2niac" style="padding: 2px 0px 4px; display: block; width: 320px; font-weight: normal; font-size: 10px; text-decoration: underline; text-align: center;">Watch live video from MOO2 LIVE on Justin.tv</a><br /></p><p>and outcome:<br /></p><p><object type="application/x-shockwave-flash" id="clip_embed_player_flash" data="http://www.justin.tv/widgets/clip_embed_player.swf" bgcolor="#000000" height="263" width="320"><param name="movie" value="http://www.justin.tv/widgets/clip_embed_player.swf"><param name="allowScriptAccess" value="always"><param name="allowNetworking" value="all"><param name="allowFullScreen" value="true"><param name="flashvars" value="auto_play=false&start_volume=25&title=Cab vs Bork (Final Turns) 4/4&start_time=1248648302000&end_time=1248648461000&channel=moo2niac&tip_id=1782913"></object><a class="cxxlgboifeldutuepvbr" href="http://www.justin.tv/widgets/clip_embed_player.swf"></a><br /><a href="http://www.justin.tv/moo2niac" style="padding: 2px 0px 4px; display: block; width: 320px; font-weight: normal; font-size: 10px; text-decoration: underline; text-align: center;">Watch live video from MOO2 LIVE on Justin.tv</a><br /></p><p>Just PM me in our Quakenet channel if you are also interested to broadcast your Multiplayer or Singleplayer Games on this blog. Depending on the feedback I will possibly write a detailed instruction for optimal broadcast settings and/or adding new channels for simultaneously broadcasting xways.</p>sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com0tag:blogger.com,1999:blog-6448153.post-22984844344917147382009-03-25T19:54:00.013+01:002015-05-15T00:22:25.403+02:00Map generator[UPDATE! Download link has changed Latest version 0.40]<br />
I am proud to announce a new tool for Master Of Orion 2!<br />
<br />
This tool is intended to balance the starting conditions of players.<br />
It can replace toxic, ultrapoor, low gravity, heavy gravity, tiny and small planets with a better ones.<br />
You can decide what to replace by yourself.<br />
To do that, hosting player have to start new game as always and right after the game begun, he have to quit the game and run mapgen.exe with desired switches, and after that host the game again.<br />
This is my example dosbox.conf:<br />
<br />
cd c:\imoo2\<br />
ipxnet startserver 6666<br />
VDCGM2.exe /hugestart /planets=5 /noorion /nowh /nobh /nosplint /noreport /nonebula<br />
mapgen.exe -ttoxic -tupoor -ttiny -tflathw<br />
VDCGM2.exe /hugestart /planets=5 /noorion /nowh /nobh /nosplint /noreport /nonebula<br />
<br />
So, after I started game, chosen race and got on the game screen, I presed "Quit game", mapgen.exe started automaticaly, replaced toxic planets with radiated, tiny with small and ultrapoor with poor. And made homeworlds almost equal.<br />
<br />
After that, VDCGM2.EXE started again and I had to load game and wait for second player.<br />
<br />
Here is the help about usage, that you can get by running mapgen -h:<br />
<div class="p1">
<span class="s1">Usage: ./moomapgen [-h] [-t terraformation] [-s special] [-m change] [-b type] [-r numOfPlayersToMerge] [-`~ [-v] [-V] [-f file]</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">Example: ./moomapgen -t toxic -t upoor -t lowg -t heavyg -t tiny -t small -f SAVE10.GAM</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">Options:</span></div>
<div class="p1">
<span class="s1"> -h [-H] This help.</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1"> -t Terraform</span></div>
<div class="p1">
<span class="s1"> toxic - Toxic planets become radiated</span></div>
<div class="p1">
<span class="s1"> upoor - Huge Ultra Poor planets becomes poor. Other Ultra Poor planets become Abundant</span></div>
<div class="p1">
<span class="s1"> lowg - Low Gravity planets become Normal Gravity</span></div>
<div class="p1">
<span class="s1"> heavyg - Heavy Gravity planets become Normal Gravity</span></div>
<div class="p1">
<span class="s1"> tiny - Tiny planets become randomly from Small to Large. With except for -tsmall flag, if it is used, they become Medium.</span></div>
<div class="p1">
<span class="s1"> small - Small planets become medium</span></div>
<div class="p1">
<span class="s1"> flathw - Flattens unoccupied planets in HomeWorlds:</span></div>
<div class="p1">
<span class="s1"> They become Abundant, Toxics and Rads become Barren,</span></div>
<div class="p1">
<span class="s1"> gravity become Normal except for one planet,</span></div>
<div class="p1">
<span class="s1"> it become the same gravity as occupied planet, size is set in order</span></div>
<div class="p1">
<span class="s1"> Large, Large again, Medium, Small untill</span></div>
<div class="p1">
<span class="s1"> there are no more planets to modify. Gaias become Terrain.</span></div>
<div class="p2">
<br /></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1"> fixedhw - Implies `flathw`. Planets become:</span></div>
<div class="p1">
<span class="s1"> Large Abundant Swamp, Large Abundant Arid, Large Poor Tundra,</span></div>
<div class="p1">
<span class="s1"> Medium Poor Terrain, all normalG.</span></div>
<div class="p1">
<span class="s1"> If your homeworld is lowG, than all other planets except Arid</span></div>
<div class="p1">
<span class="s1"> it becomes lowG.</span></div>
<div class="p1">
<span class="s1"> If your homeworld is heavyG, than Swamp becomes heavyG, others</span></div>
<div class="p1">
<span class="s1"> become normalG</span></div>
<div class="p1">
<span class="s1"> gaia - DOES NOT imply fixedhw. Last planet become small poor gaia</span></div>
<div class="p1">
<span class="s1"> unless you are creative or aquatic or tolerant.</span></div>
<div class="p1">
<span class="s1"> elswise you get small poor terrain</span></div>
<div class="p1">
<span class="s1"> richhw - Makes first unoccupied planet rich</span></div>
<div class="p1">
<span class="s1"> hugehw - Makes first unoccupied planet huge</span></div>
<div class="p1">
<span class="s1"> goodhw - Implies richw & hugehw. Makes first unoccupied planet terrain.</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1"> -s Specials Change</span></div>
<div class="p1">
<span class="s1"> splint - Splinter replaced by gem deposits.</span></div>
<div class="p1">
<span class="s1"> nonatives - Natives are replaced by gold deposits.</span></div>
<div class="p1">
<span class="s1"> arti - Arti planets still exist, but don't give techs anymore.</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1"> -m Monsters Change</span></div>
<div class="p1">
<span class="s1"> grav - Guarded planets become normal gravity, even ultrarich now.</span></div>
<div class="p1">
<span class="s1"> Pirate stash and space debris under guarded planets become marooned heroes.</span></div>
<div class="p1">
<span class="s1"> terraform - Guarded rich & urich planets are terraformed.</span></div>
<div class="p1">
<span class="s1"> Toxics, Rads, Barrens, Deserts become Tundra.</span></div>
<div class="p1">
<span class="s1"> monst - Does the same thing as -mgrav and -mterraform.</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1"> -b Balance Galaxy</span></div>
<div class="p1">
<span class="s1"><span class="Apple-tab-span"> </span> showringX - Make planets in X parsecs distance from HW visible to players</span></div>
<div class="p1">
<span class="s1"><span class="Apple-tab-span"> </span> calc - Calculate opponent starts and print out results</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1"> -v Verbose debugging output(CHEAT!)</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1"> -r Num of PLAYERX.GAM files to merge in 'filename'</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1"> -V Print Version and exit</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<br />
<div class="p1">
<span class="s1"> -f file Edit 'file' instead of SAVE10.GAM</span></div>
<br />
You can download This tool from here <a href="https://github.com/tifeit/moomapgen/blob/master/mapgen.exe?raw=true">https://github.com/tifeit/moomapgen/blob/master/mapgen.exe?raw=true</a><br />
<br />
Feel free to send your suggestions and bug reports to tf8@list.ru.<br />
<br />
WARNING! This tool works only on first turn, if you will use it on any other turn it would mess up everything!<br />
<br />
WARNING! People report, that when you use mapgen.exe, sometimes planets get extreme gravity bonus. It could be indicated by orphan coma after planet mineral status on star system screen, like "Abundant,". So please, if you use mapgen.exe, store your SAVE10.GAM file before running mapgen.exe and after and keep it untouched somewhere, and if you hit that bug, please report it to me, attaching that original save, so i could solve the problem.<br />
<br />
<b>UPDATE! Version 0.40</b><br />
-tupoor - Huge Ultra Poor planets becomes poor. Other Ultra Poor planets become Abundant<br />
-ttiny - Tiny planets become randomly from Small to Large. With except for -tsmall flag, if it is used, they become Medium.<br />
<br />
<span style="font-weight: bold;">UPDATE! Version 0.23</span><br />
Bugfix -ssplint now works.<br />
<br />
-tfixedhw now works slightly different. The fifth planet was Desert, but it's Gaia now - that would be more fair for non-aquatic races. But you can still play with /PLANETS=4 to avoid this behaviour.<br />
<br />
-mterraform now works slightly different. Monster guarded rich&urich planets are terraformed from Toxics, Rads, Barrens and Deserts to Tundra. Previous behaviour was: Toxic&Rad -> Barren, Desert -> Tundra.<br />
<br />
<br />
<br />
<span style="font-weight: bold;">UPDATE! Version 0.22</span><br />
Bugfix -tmonst didn't work, now it works and known as -mmonst.<br />
<br />
<span style="font-weight: bold;">UPDATE! Version 0.21</span><br />
Added -tmonst, -mgrav, -mterraform, -ssplinter and -sarti flags.<br />
<br />
<span style="font-weight: bold;">UPDATE! Version 0.11</span><br />
Fixed bug! Although Gaia's became Terrain when using flathw, they still produced the same ammount of food as Gaia's. Also when using fixedhw, modified planets kept the same ammount of food production as they had before using "mapgen.exe" too. Now both of the problems fixed.<br />
<br />
<span style="font-weight: bold;">UPDATE! Version 0.1</span><br />
New switch!<br />
-fixedhw - It makes homeworlds look like Large Swamp, Large Tundra, Medium Arid, Small Desert.<br />
<br />
Additionaly -flathw now makes Gaia's at home to be Terrain. upoor - Huge Ultra Poor planets becomes poor. Other Ultra Poor planets become Abundanttf8http://www.blogger.com/profile/00122624749397939842noreply@blogger.com3tag:blogger.com,1999:blog-6448153.post-18851922992132668812008-07-04T13:09:00.017+02:002009-05-11T17:27:05.346+02:00Master of Orion 2 ReplaysHello, Masters of Orion!<br /><br />I wrote <a href="http://masteroforion2.blogspot.com/2008/06/dosbox-video-capturing-howto.html">this</a> post recently and tried to get some videos of professional players game, but they are too lazy to record video:)<br />So I decided to do it by myself. I am a newbie really, I played just about 10 multiplayer games.<br />I will regularly add interesting video to this post. So, here we go.<br /><br /><span style="color: rgb(255, 0, 0);">You need to read </span><a style="color: rgb(51, 51, 255);" href="http://masteroforion2.blogspot.com/2008/06/dosbox-video-capturing-howto.html">this</a><span style="color: rgb(255, 0, 0);"> post and install appropriate ZMBV codec to view this videos, or install </span><a style="color: rgb(51, 51, 255);" href="http://www.mplayerhq.hu/design7/news.html">Mplayer</a>.<br />on_FiRe reported that <a href="http://sourceforge.net/projects/guliverkli">Media Player Classic</a> can play this videos without installing codec.<br />Displacer reported that <a href="http://smplayer.sourceforge.net/">SMPlayer</a> can do this too.<br /><br />This four replays are our game with Cybersaber. I lost this game because I expected him to be Creative again and were not ready for early attack.<br /><br /><a href="http://wap.mypuk.ru/tf8/moo_rep/tf8_cyber_t0_70.avi">tf8_cyber_t0_70.avi</a><br /><a href="http://wap.mypuk.ru/tf8/moo_rep/tf8_cyber_t71_100.avi">tf8_cyber_t71_100.avi</a><br /><a href="http://wap.mypuk.ru/tf8/moo_rep/tf8_cyber_t100_121.avi">tf8_cyber_t100_121.avi</a><br /><a href="http://wap.mypuk.ru/tf8/moo_rep/tf8_cyber_hotseat.avi">tf8_cyber_hotseat.avi</a> - this is hotseat game review after I surrendered.<br /><a href="http://wap.mypuk.ru/tf8/moo_rep/Cabman_housing.avi"><br />Cabman_housing.avi</a> Cabman shows us masterclass in housing :) 80 pop buy t 65 AWESOME!<br />(even more, than 80 - remaining pop are in freighters )<br /><a href="http://wap.mypuk.ru/tf8/moo_rep/Cabman_sublith_pop.rar"><br />Cabman_sublith_pop.rar</a> Another awesome Cabman video. This time VeryDifficultChoice Mod.<span style="font-weight: bold; color: rgb(204, 0, 0);"><span style="font-size:100%;"><br /></span></span><span style="font-size:100%;">VDCGM2.exe /skipintro /nowh /nobh /nosplint /minstart /planets=4 /noorion /noreport /nonebula /monsters=0<br /></span>Dictatatorship Subterranean Lithovore Population Growth +100.<br />150 pop by T100.<br /><br /><a href="http://wap.mypuk.ru/tf8/moo_rep/Cab_dict_tol_cyber.rar"><br />Cab_dict_tol_cyber.rar</a> <span style="font-weight: bold; color: rgb(204, 0, 0);"><span style="font-size:100%;"><br /></span></span><span style="font-size:100%;">VDCGM2.exe /skipintro /nowh /nobh /nosplint /minstart /planets=4 /noorion /noreport /nonebula /monsters=0<br /></span>Dictatatorship Dictatorship Tolerant Cybernetic.<br /><br /><a href="http://wap.mypuk.ru/tf8/moo_rep/Cab_demo_sub_lith.rar"><br />Cab_demo_sub_lith.rar</a> <span style="font-weight: bold; color: rgb(204, 0, 0);"><span style="font-size:100%;"><br /></span></span><span style="font-size:100%;">VDCGM2.exe /skipintro /nowh /nobh /nosplint /minstart /planets=4 /noorion /noreport /nonebula /monsters=0<br /></span>Democracy Subterranean Lithovore.<br /><br /><a href="http://wap.mypuk.ru/tf8/moo_rep/tf8_Madd_taalo.avi">tf8_Madd_taalo.avi</a><br />Game settings: goodmap3 /skipintro /minstart /planets=4 /nosplint /nowh /nobh /noorion /noreport /nonebula<br />Map settings: size: Large, age: Organic Rich, tech level: Average.<br />This is 3way newbies game. This video will be interesting for newbies to see, how does it possible to get about 150 pop on 100 turn.<br />Video stops at turn 107, because it isn't interesting after that, I met my opponents and saw that I have at least twice more population and outtech them much.<br />When I revised this video, I have found those mistakes:<br />First of all, i should build outpost ships and explore more to find better planets and meet my opponents earlier to see their racepics and to choose better strategies.<br />Also I shouldn't research tritanium armor, deuterium fuel cells would be more helpful. I should get Zortium instead of tritanium. And I should build my first bb earlier, because it is dangerous to stay without defence.<br />Cabman (absolute record of 252 pop at 100 turn holder) says, that I should have been housing till 3-4 pop on first settled system, and only after that send pop from hw there. I should have refit my scouts and remove beams to make it more fast, so that it have chance to retreat from monster. I should have rebuild my scout, if it got killed. And at last, I should have sent cship AFTER scouting all systems around.<br /><br />I would be glad, if professional players view this video and point on other mistakes ( Including English Grammar:) ).tf8http://www.blogger.com/profile/00122624749397939842noreply@blogger.com14tag:blogger.com,1999:blog-6448153.post-53832296612728035702008-06-29T17:34:00.018+02:002008-08-19T19:29:31.717+02:00Dosbox video capturing how toHello, Masters of Orion.<br />I read this <a href="http://masteroforion2.blogspot.com/2006/01/hypercam-dosbox-and-new-way-of-how-to.html">post</a> recently and found out that it is out of date. So I decided to contribute a little to our community and write this post.<br /><br />What I would like to share with you is that it is possible to capture video from the game without any auxiliary program, but using <span style="font-weight: bold;">dosbox</span> directly (starting from 0.65 version). To do that you need to open dosbox.conf file, find the string <span style="font-family:courier new;">captures=capture</span> and<br />replace it with path to any ‘EXISTING’ folder you like, where you want to place captured video, for example<br /><br /><span style="font-family:courier new;">captures=d:\captures</span><br /><br />If you don't change this, by default recorded video will be placed to<br /><br /><span style="font-family:courier new;">c:\program files\dosbox-0.72\capture</span> folder.<br /><br />After you have done this, you can simply launch dosbox and start capturing video by pressing ctrl+alt+f5 buttons simultaneously. When you press it, file named orion2_000.avi will be created in your folder. IF you press ctrl+alt+f5 buttons again, video capturing will stop. By pressing it again it will renew recording to orion2_001.avi file.<br /> I was amazed how easy it was to capture video, but the problem was later with program to watch recorded video.<br />The problem is that dosbox writes video with special <span style="font-weight: bold;">ZMBV</span> codec. This codec is not widespread, but it is perfect for capturing game video.<br /><br />The Win 32 Release of DOSBox already includes the necessary CODEC and install scripts needed to allow Windows Media Player (or almost any other movie player in Windows). If you installed the Start Menu shortcuts simply select Install movie codec and it will perform installation of the needed codec automatically.<br /><br /><img src="http://www.dosbox.com/wiki/images/f/f3/InstallVideoCodec.jpg" alt="" /><br /><br />However you won’t be given any message of completion of the installation, so you’ll have to check whether it was installed manually - by trying to play your movie.<br />If you didn't installed Start menu shortcuts, or under Linux and MacOS X you can use <a href="http://www.mplayerhq.hu/design7/news.html">MPlayer</a> (a popular command line video player) and it should be able to play the captured video without any special configuration. Also it is able to increase( ] button ) and decrease ( [ button ) speed of replay.<br />That's the basics, everyone can read about it <a href="http://wiki.multimedia.cx/index.php?title=DosBox_Capture_Codec">here</a> and <a href="http://www.dosbox.com/wiki/Recording_Video">here</a>.<br /><br />The size of the captured video is about 1gb per 3 hours of game, but you can compress it with winrar and it would take about 300mb space.<br />Also, you can reduce video size by using <a href="http://www.mplayerhq.hu/design7/news.html">mencoder</a>(part of mplayer)<br />I have tried different codecs to reduce video size and found out, that zmbv codec, used by dosbox is probably the best in size/quality ratio with one exception that you have to entirely discard sound from video.<br />Here is an example of the script:<br /><br /><span style="font-family:courier new;">mencoder -nosound -ovc copy orion2_*.avi -o moo2.avi</span><br /><br />If you have several files like orion2_000.avi, orion2_001.avi orion2_002.avi etc.<br />They will be united into one file - moo2.avi<br />1Gb video will become 210mb with no video quality loss, but without sound. The reason for this is that dosbox stores sound entirely uncompressed in pcm format. You could try to compress sound too, using the for example the <span style="font-weight: bold;">mp3lame</span> codec.<br />Here is an example of the script:<br /><br /><span style="font-family:courier new;">mencoder -oac mp3lame -ovc copy orion2_*.avi -o moo2.avi</span><br /><br />However I had a problem viewing such videos.<br />(but ffmpeg results were much worse, with the same settings )<br />You can get common divx video with satisfactory quality and same size 300mb using following commands:<br />The first pass:<br /><br /><span style="font-family:courier new;">mencoder -nosound -ovc xvid -xvidencopts pass=1:par=vga11:threads=128 goodmap3_*.avi -o xvid1.avi</span><br /><br />In result you receive about 500Mb file<br />The second pass:<br /><br /><span style="font-family:courier new;">mencoder -nosound -ovc xvid -xvidencopts pass=2:par=vga11:threads=128:bitrate=-300000 goodmap3_*.avi -o xvid2.avi</span><br /><br />In result you receive the desired 300mb file.<br />But this operation takes about 2 hours on my core 2 duo 2ghz processor.<br />Additionally, you can add compressed sound to video file by using the mentioned mp3lame decoder<br />Here is an example of the script:<br />The first pass:<br /><br /><span style="font-family:courier new;">mencoder -oac mp3lame -ovc xvid -xvidencopts pass=1:par=vga11:threads=128 goodmap3_*.avi -o xvid1.avi</span><br /><br />The second pass:<br /><br /><span style="font-family:courier new;">mencoder -oac mp3lame -ovc xvid -xvidencopts pass=2:par=vga11:threads=128:bitrate=-300000 goodmap3_*.avi -o xvid2.avi<br /></span>tf8http://www.blogger.com/profile/00122624749397939842noreply@blogger.com1tag:blogger.com,1999:blog-6448153.post-87454034288155951642008-04-05T22:27:00.006+02:002008-04-06T00:02:39.515+02:00MOO2 GraphicsI had in mind to post earlier about it. A while back, I got an e-mail from Patrick Owens:<br /><blockquote>Hello siron,<br /><br />I stumbled across your site and just wanted to drop a note and say hello. It’s great to see that there are some people out there still playing MOO2. I see that Russ and Rob have both checked in with you, and it was interesting to hear news of Ken Burd, (D&D Online, huh? Well what do you know…)<br /><br />I was one of the artists on the project, responsible for most of the ship designs and art, and most of the alien designs as well. Fortunately for my fragile ego, there doesn’t seem to be much criticism of the graphics, as dated as they are by today’s standards. While I’m sure most if not all of your questions are about the design and programming aspects of the game, let me know if any questions have cropped up about the graphics.<br /><br />Best of luck with the site,<br /><br />Patrick Owens</blockquote>Of course I had some questions. Here are some further e-mail excerpts:<br /><blockquote><span style="font-weight: bold;">If I understand correctly you mean the appearance of the different races? Do you remember them?</span><br /><br />Yes, I designed the "look" of the aliens. Of course, I had the first MOO aliens as a foundation, but after many discussions, Steve let us take them all in a slightly new direction for MOO2. I believe I designed all of them but the Mrrshan. I then passed off the designs to the very talented Judith Peterson, who created the color versions you see in the game.<br /><br />Two little anecdotes: The bird guys became pterodactyl guys in the game, but there was also a bat guy version of the avian race. We went back and forth on it for awhile, and the pterodactyl guys finally won out. I still have the bat guy sketch around here somewhere. I'll see if I can find it for you.<br /><br />The Antarans got redesigned about two dozen times. I think the design was never really finished or approved, we just basically ran out of time to fiddle with it anymore.<br /><br />Also, I've seen the Bulrathi described as being pug-dog like; in truth, they were meant to be minotaur-like. So it goes.<br /><br />I also designed the emblems for the various races, but I look at most of those today and think "what the hell was I thinking there?" Very few of them appeal to me nowadays.<br /><br /><ship designs=""><span style="font-weight: bold;">Do you have a favorite color? Or what color do you expect as the most popular one?</span><br /><br />At the time, my favorite was always the one I was currently working on. Looking at them today, the blue, red, silver, and purple ships are probably my favorites. Also, the orange ships were mostly designed by someone else, with slight revisions from me at Steve's request. I would be interested to know which color is the favorite among the fans. <span style="font-weight: bold;">[The poll results are</span> <a href="http://www.misterpoll.com/polls/209829/results">here</a><span style="font-weight: bold;">.]</span><br /><br />Another anecdote: At the eleventh hour, Steve came in and announced that we were going to be redoing all the ships in 3D Studio Max. Understand that almost all the ships were done at this point, and that we were shipping the product in about 6 weeks. To their credit, the 3D guys humored him for about two weeks, gamely trying to come up with a system that could produce that many ships in that short a time-span. It did not take long for them to realize that there was no way in hell it was going to happen though.<br /><br /><span style="font-weight: bold;">And of course I agree that the graphics are awesome... (have you ever seen MOO3 combat?) :(</span><br /><br />I've never seen MOO3, but I only like about half of the stuff I did for MOO2. Some of it makes me cringe just thinking about it. The ships are the thing I like the most, so I'm glad we didn't have the time to redo them.<br /><br /><span style="font-weight: bold;">Nevertheless there is a guy who works on a tool to implement new graphics...and there are several fans who work on graphic mods...I hope thats OK for your ego!</span><br /><br />To me, the best thing about the gaming community is the mod community. I love that people create their own stuff for their favorite games. I didn't notice new graphics on your site, but I'll go back and take a look now. I'm sure people are creating great stuff, and I'd love to take a look at it.<br /><br /><span style="font-weight: bold;">A small misunderstanding, there are no new graphics on this blog, but other MOO2 fans worked on projects. I meant AR81's </span><a style="font-weight: bold;" href="http://img205.imageshack.us/img205/5787/00000moo2desktopoj3.jpg">pictures</a><span style="font-weight: bold;"> and Wolverine's attempt to create a tool. See Wolverine's description of the MOO2 graphic format at bottom.</span><br /><br /><span style="font-weight: bold;">Do you have kept some of your MOO2 work (f.e. even rejected artwork would be very interesting)?</span><br /><br />I have a whole file of artwork for MOO2. I think most of it made it into the game, though. I'll take a look through it and see if there's anything that might be of interest. Most of the electronic art was created in the very outdated Animator Pro and DPaint. I'm not even sure I still have any apps that can open some of the files, but I'll look into that too.<br /><br /><span style="font-weight: bold;">Are you still in contact with other MOO2 developers?</span><br /><br />None of them, unfortunately. I've only kept track of one of the artists I used to work with as well, (the insanely talented Michael Washburn.)<br /><br />I do wish Ken would get in touch with you. He's a great guy and I'm sure he'd have some good insights into the game.<br /><br />If you have any other questions, or if you'd like to forward some questions from the community, feel free to contact me.<br /><br />Regards,<br />Patrick Owens</ship></blockquote><br />The above-mentioned tool to implement graphics was a project by Wolverine. Unfortunately, this tool is unfinished. But he wrote an interesting description about the MOO2 graphic formats. Since his blog was temporarily down, I was afraid we could lose his knowledge. I mailed him and he kindly allowed me to repost his descriptions:<br /><blockquote><h2><a href="http://www.karoltomala.com/blog/2007/04/24/description-of-moo2-graphic-formats/">Description of MOO2 graphic formats part 1</a></h2><p>Some time has passed since I’ve written something here. Some people have downloaded my viewer, however I know Python is not obvious to everybody so I’ve decided to publish information regarding graphic formats of Master Of Orion 2. I don’t have time to work on this viewer and it was always just a proof of concept that graphic modding of MOO2 can be done. I’m not saying no to further development of the viewer for MOO2, however my priorities have shifted once again and development of the viewer/converter halted for now.</p><p>First we’ll start with palette files. There are three types of palettes in MOO2. External, internal and mixed. Palette format in MOO2 is in DAC RGB which means that color is represented as four bytes, where each byte consists of a value from range of 0 to 63 in decimal. Each of these values must be then multiplied by four. The first byte represents alpha channel (which is really a pseudo alpha, it seems that it only has a value of either 00 or 01), the second is RED, third is GREEN and fourth is BLUE. Let’s take a look at one of the so called External palette files in this case FONTS.LBX_001 which is the second file where external palettes reside. Take a look at this hexadecimal representation of the beginning of the file:</p><p align="center"><code><em>0000:0000</em> <strong>01 00 00 00</strong> 01 00 03 00 <strong>01 04 04 06</strong> 01 06 06 08<br /><em>0000:0010</em> <strong>01 09 09 0a</strong> 01 0b 0b 0d <strong>01 0d 0d 0f</strong> 01 0f 0f 11<br /><em>0000:0020</em> <strong>01 12 12 14</strong> 01 14 14 16 <strong>01 16 16 18</strong> 01 18 18 1a<br /><em>0000:0030</em> <strong>01 1b 1b 1d</strong> 01 1d 1d 1f <strong>01 1f 1f 21</strong> 01 21 21 23<br /><em>0000:0040</em> <strong>01 22 22 24</strong> 01 24 24 26 <strong>01 26 26 28</strong> 01 27 27 2<br /><em>0000:0050</em> <strong>01 29 29 2b</strong> 01 2b 2b 2d <strong>01 2d 2d 2f</strong> 01 2f 2f 31<br /><em>0000:0060</em> <strong>01 31 31 33</strong> 01 33 33 35 <strong>01 35 35 37</strong> 01 37 37 39<br /><em>0000:0070</em> <strong>01 38 38 3a</strong> 01 39 39 3b <strong>01 3b 3b 3d</strong> 01 3c 3c 3e<br /><em>0000:0080</em> <strong>01 00 03 04</strong> 01 00 05 07 <strong>01 03 0a 0d</strong> 01 0a 0f 13<br /><em>0000:0090</em> <strong>01 0e 12 16</strong> 01 13 16 1a <strong>01 16 19 1e</strong> 01 1a 1d 21<br /><em>0000:00a0</em> <strong>01 1e 21 25</strong> 01 22 25 29 <strong>01 27 29 2d</strong> 01 2c 2e 31<br /></code></p><p>The first column is a hex offset and the second is the hex representation of byte values. I have set to bold every odd numbered color bytes and to normal an even numbered color bytes. Each four bytes represents one color in the format mentioned above. Within the external palette files (FONTS.LBX_001 to FONTS.LBX_013 and IFONTS.LBX_001 to IFONTS.LBX_004) palettes start from zero byte to 1023. Each external palette has 256 colors counted from 0 to 255. If you’d like to read one color you have to read four bytes. For example we have color represented by <strong>01 0a 0f 13</strong>. Let’s assume we have read those four bytes and we want to convert them to RGB. The first byte with value <strong>01</strong> is alpha channel. However it only has 00 or 01 values. It probably acts as a boolean: either we have this color (value 01) or not (value 00). But I’m not sure. Perhaps it acts as a special modifier in MOO2 (transparency or rewritable color perhaps?). We can safely ignore it. The next three bytes represents DAC RGB values. It means that each intensity value must be multiplied by four. Take a look:</p><p align="center">A R G B = 01 0a 0f 13 = 01 10 15 19</p>The range of values for R G B in DAC RGB is from 0 to 63 (hex 0×3f). If you want to get 24bit color representation you have to multiply each DAC RGB value by four:<br /><p align="center">red = dacred * 4; green = dacgreen * 4; blue = dacblue * 4;</p>If you want to convert 24bit RGB back to DAC RGB you have to do the reverse operation including rounding to integer. Let’s assume we have 24bit RGB color with values (35,127,193) which in hex is (0×23,0×7f,0xc1). You do it like this:<br /><p align="center">r = 35; dac_r = int(r / 4); g=127; dac_g = int(g / 4); b=193; dac_b = int(b / 4);</p><strong>Remember!</strong> You have to round it to integer, otherwise sometimes you’ll get a floating point value. The external palette files reside within LBX archives FONTS.LBX and IFONTS.LBX. Those archives must be unpacked before they can be used as palette files. After unpacking FONTS.LBX you have to remember that <strong>FONTS.LBX_000 IS NOT PALETTE FILE!</strong> It’s only a font file. Palette files start from FONTS.LBX_001 (the second file in archive). Palettes reside within first 1024 bytes (256 * 4 bytes). However as you’ll see those files are not 1024 bytes long, but few times longer. That’s because there are also mouse cursors stored behind the palette. They’re visible in some files in a good hexeditor if you properly adjust the viewing columns. However I wasn’t able to figure out how they can be retrieved. I think that’s all regarding external palettes.<br /><p>The internal palettes are stored within the graphic files. They have the same DAC RGB format as external palettes, however they are stored differently. But before I’ll give you description on how to read internal palettes I have to give you information regarding the graphic format itself.</p><strong>REMEMBER! </strong>All multibyte values in MOO2 formats are stored as <strong>LITTLE ENDIAN!</strong> That means we have <em>integer (2 bytes) and long (4 bytes)</em> bytes representing the value stored in reverse fashion. Each atomic element size is 8bit which means it’s one byte long. For clarification let’s assume we have an integer with value of 52304 (remember that unsigned integers allow values in range of 0-65535 in that case). In hexadecimal this value is represented as 0xCC50. That means when we want to store this value we have to divide it to two bytes, in this case 0xCC and 0×05. So the <em>LEAST SIGNIFICANT BYTE</em> (in this case 0×05) is saved <strong>FIRST!</strong> It means that we save this value as “05 CC” not CC 05! The same applies to long. Let’s say we have long integer with value of 492062186 (hex <em>0×1D5445EA</em>). In this case we have four 8 bit (one byte) atomic elements: “<em>1D 54 45 EA”</em>. The least significant byte is 0xEA. If we want to save it in little endian we have to do this in reverse order. The result would be: “EA 45 54 1D” and that’s what we save. The same applies except in reverse order when we want to read little-endian multibyte value. In this case if we have “7F 03 B9 0C” we reassemble this value reading the last byte first. The result must be 0×0CB9037F which is 213451647 in decimal. Hope that’s clear enough.<br /><p>So now I can give you the information on how graphics are saved in MOO2. As our example we take the first unpacked file from BLDG0.LBX archive the BLDG0.LBX_000. This LBX archive stores graphics for the buildings visible on colony screen. If you want to properly view the buildings you have to use FONTS.LBX_002 external palette file. This graphic file we have taken shows the Alien Management Center building at center bottom of the colony screen. I will show you how the beginning of the file is seen in hexeditor.</p><p align="center"><code><em>0000:0000</em> <span style="background: rgb(160, 48, 48) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="color: rgb(255, 0, 0);">80 02</span> <span style="color: rgb(0, 255, 0);">e0 01</span> 00 00 <span style="color: rgb(0, 0, 255);">01 00</span> <span style="color: rgb(255, 255, 0);">00 00</span> <span style="color: rgb(0, 255, 255);">00 08</span> 14 00 00 00</span><br /><em> 0000:0010</em> <span style="background: rgb(160, 48, 48) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">1c 21 00 00</span> 01 00 55 01 01 00 0e 01 55 00 00 00<br /><em> 0000:0020</em> 01 00 01 00 0e 01 55 00 00 00 01 00 01 00 0e 01<br /><em> 0000:0030</em> 55 00 00 00 01 00 01 00 0e 01 55 00 00 00 01 00<br /><em> 0000:0040</em> 01 00 0e 01 55 00 00 00 01 00 01 00 0e 01 55 00<br /><em> 0000:0050</em> 00 00 01 00 01 00 0e 01 55 00 01 00 0c 00 55 00<br /><em> 0000:0060</em> 00 00 01 00 01 00 0e 01 56 00 01 00 0c 00 55 00<br /><em>0000:0070</em> 00 00 01 00 01 00 0e 01 56 00 01 00 0c 00 55 00<br /><em>0000:0080</em> 00 00 01 00 01 00 0e 01 56 00 01 00 0c 00 55 00<br /><em>0000:0090</em> 00 00 01 00 01 00 0e 01 57 00 01 00 0c 00 55 00<br /><em>0000:00a0</em> 00 00 01 00 01 00 0e 01 57 00 01 00 0c 00 55 00<br /><em>0000:00b0</em> 00 00 01 00 01 00 0e 01 58 00 01 00 0c 00 55 00<br /><em>0000:00c0</em> 00 00 01 00 01 00 0e 01 58 00 01 00 02 00 55 00<br /><em>0000:00d0</em> 01 00 09 00 56 00 00 00 01 00 02 00 0d 01 55 d5<br /><em>0000:00e0</em> 02 00 02 00 55 55 01 00 08 00 56 00 00 00 01 00<br /><em>0000:00f0</em> 02 00 0d 01 d3 b8 01 00 02 00 55 00 01 00 09 00<br /></code></p>This dump from hexeditor similar to the previous one. Left italic - offsets, right - byte values. I have colored some bytes and backgrounded sections of the file for clarity. The brownish background under the bytes shows the header of the graphic file. I’ll explain the header of the file now.<br /><p>First two bytes marked as red are “80 02″. This is the <em>width</em> of the image. As you remember what I have told you about the multibyte values in MOO2 (little-endian) this value is in fact 0×0280. I wouldn’t remind you about this again so keep in mind that all multibyte values are LITTLE ENDIAN. In this case we have 640. The value represents width in pixels.</p>The next two bytes (green) is the <em>height</em> of the image. In this case it’s 480 so we have size of the image 640×480 pixels. The next two bytes are always zero. Two bytes marked in blue is <em>number of frames</em> (in this case one). Next two bytes marked in yellow is the <em>frame delay</em> i.e. delay between each frame is shown. It’s used in animations. In this case we have only one frame so the delay is 0, but if we had multi-frame graphic (animation) the delay would be set. The last two bytes in the header marked as cyan represents image flags. We have to stop here for a moment and explain those flags.<br /><p>The flags is a two byte value also stored as little endian. Contrary to previous multibyte values this doesn’t represent decimal value, but a binary value. Each flag is represented as one bit within the value. Take a look:</p><p align="center"><code>0000 0000 0000 0000</code><br /><code> ..JI FB.N .... ....</code></p>This is the binary representation of the two byte flags. The first line shows bits and the line below corresponding flags. The dot in the second line means that setting this bit either doesn’t do anything (is not used) or the behaviour of the flag is unknown. I have given those flags unique letters and they are as follows:<br /><ul><li><strong>J</strong> - Junction - I don’t know really what it’s for. Grig de Griz has pointed out this flag in his format description so I’m including it here. (TAlchemist pointed out that: “Junction flag means that you add each frame to the frame before it making a composted image. and start from the begining on the first frame. That is how only the first frame of the big animations is large and all other frames just include the pixels that changed.”)</li><br /><li><strong>I</strong> - Internal palette - Tells if the image has internal palette</li><br /><li><strong>F</strong> - Functional color - Tells if the image has functional color. This color is used for effects like transparency or shading.</li><br /><li><strong>B</strong> - Fill background - Tells the game if it should clear the area on which the image is going to be drawn.</li><br /><li><strong>N</strong> - No compression - Tells if the image uses compression. For me it’s behaviour is unknown. It’s probably a left-over from MOO1 graphic formats which are almost identical to MOO2.</li></ul>Back to our header. We have the value “00 08″ in our header for flags. This means the value is 0×0800 in hex. Let’s see what flags reside here. After converting this value to binary we get <em>0000 1000 0000 0000</em>. Let’s compare this new value to our line describing the flags:<br /><p align="center"><code>0000 1000 0000 0000</code><br /><code> ..JI FB.N .... ....</code><br />Voila! We now know that the image has functional color flag. If we had for example:</p><p align="center"><code>0011 1001 0000 0000</code><br /><code> ..JI FB.N .... ....</code></p><p align="left">We would have <em>junction</em>, <em>internal palette</em>, <em>functional</em> <em>color</em> and <em>no compress</em> flags set. There are really only two flags that are significant for us. The more significant is INTERNAL PALETTE and the less significant is FUNCTIONAL COLOR. The first one would be covered later in greater detail. The second is really needed for properly plotting graphics and I wouldn’t give it too much attention, because I haven’t completely figured out how it works. All I can say for now regarding FUNCTIONAL COLOR is that it’s used in our BLDG0.LBX_000 for drawing shadows. If you manage to draw this image you’ll see that the shadow is represented by dark violet color, but within the game it’s giving a proper shadow on the colony background screen.</p><p align="left">Let’s get back to our header. I’ll refresh your memory here:</p><p align="center"><code><em>0000:0000</em> <span style="background: rgb(160, 48, 48) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="color: rgb(255, 0, 0);">80 02</span> <span style="color: rgb(0, 255, 0);">e0 01</span> 00 00 <span style="color: rgb(0, 0, 255);">01 00</span> <span style="color: rgb(255, 255, 0);">00 00</span> <span style="color: rgb(0, 255, 255);">00 08</span> 14 00 00 00</span></code><br /><code> <em> 0000:0010</em> <span style="background: rgb(160, 48, 48) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">1c 21 00 00</span> 01 00 55 01 01 00 0e 01 55 00 00 00</code><br /><code></code></p><p align="left"><code> </code>We have already covered all the bytes marked in colors up to cyan marked flags. What are those last eight bytes that are in the header? Those are four byte frame offsets. This needs greater explanation. Frame is the proper graphic that is displayed on the screen. It’s an animation frame. Since we have only one frame image (still image, not animation) here there are only two frame offsets, namely: “14 00 00 00″ and “1c 21 00 00″. Those offsets say where within the file each frame starts. However I have said we have only one frame image here so why the hell we have two frame offsets you might ask. Well. It’s because we always have frame_number + 1 frames. The last frame isn’t de facto a frame. It’s a special frame-like identifier that tells that the end of file (EOF) has been reached. It’s probably connected to format reading specific used in MOO2. How to get frame offsets then? Here’s a little pseudo-code to show you how:</p><p><code>offset_array = array(); // Create result array of offsets<br />for (i=0; i<frame_number+1; i++) // Go through each frame offset<br />{<br />bytes = fp.read(4); // Read four bytes representing the offset<br />bytes = reverse_bytes(bytes); // Convert little endian to proper byte representation<br />offset = str_to_long(bytes); // Convert string to long number<br />offset_array.add(offset); // Add offset to offsets array<br />}</code></p><p>If you now want to read frames you just set internal file pointer (<em>fp</em> in the pseudo-code) to the offset of each frame. In C++ you can do this with: fp.seek(offset); and that should do.</p><p>That is all for now. I’ll explain frame reading and internal and mixed palettes in the next post. For now you can still download my viewer and browse the code or you can read somewhat outdated previous posts regarding the formats. For now the most complete source for getting information regarding the formats if still source code of my viewer. You can download it from the previous post and I encourage you to do so. Python is easy language, I have learned it in a day or so if you’re a programmer you’ll be able to decipher my code quite quickly. Greets to all and I’ll try to write the second part of the tutorial ASAP.</p><h2><a href="http://www.karoltomala.com/blog/2008/03/16/description-of-moo2-graphic-formats-part-2/">Description of MOO2 graphic formats part 2</a></h2><p>It’s been a really long time. Many things changed, some usual and some not so usual twists and turns in my life caused abstinence from writing here. I had time to think about everything and I’ve finally decided to passionately dive into information technology as I used to and screw everything else. These are two things I’m really good at. But enough of this.</p><p>I’m not really good at keeping promises, but this time I’ve decided that I have to do this. It’s been a long time since I’ve written part one describing MOO2 graphic formats. If you want this initial description of the formats check <a href="http://www.karoltomala.com/blog/2007/04/24/description-of-moo2-graphic-formats/">“Description of MOO2 graphic formats”</a>. In that post I have described how to retrieve graphic header information and external palettes. This time I’m going to show you how to read internal and mixed palettes, and how to retrieve each animation frame. Some of you skilled hackers out there probably figured it out, but still there could be some of you who want to know. Here we go.</p><p>Just as a quick reminder. The header of the graphic file consists of: two bytes width, two bytes height, two always null bytes, two bytes with frame count, two bytes of delay between frames, and two bytes of bit-flags. Then we have (frame_count + 1) * 4 bytes for each frame offset. For example if we had byte indication of three frames we would need to read sixteen bytes. Each four bytes within those sixteen would be a frame offset. Mind you that the last offset is pointing to a special frame-like identifier designating end of file (EOF). Let’s stop here for a moment. After you have read the header you must identify if Internal Palette flag has been set. If so the next offset <strong>immediately after frame position offsets</strong> is the beginning of internal palette. Internal palette has it’s own pseudo header. It consists of four bytes. Two bytes representing color shift of the internal palette in relation to standard palette. And two bytes representing number of colors. REMEMBER that all bytes should be read as LOW-ENDIAN! For more info check part 1 of this tutorial. After reading four bytes of internal palette header, there are actual color definitions.</p><p>Those internal palette color definitions are sequences of DAC RGB. Just to remind you what it means: each color is represented as four bytes, where each byte consists of a value from range of 0 to 63 in decimal. Each of these values must be then multiplied by four. The first byte represents alpha channel (which is really a pseudo alpha, it seems that it only has a value of either 00 or 01), the second is RED, third is GREEN and fourth is BLUE. For more information refer to Part 1 describing MOO2 graphic formats.</p><p>To read the whole internal palette you must read four bytes multiplied by number of colors from internal palette header. Then if you’d probably want to convert those colors to RGB, so remember to multiply color values by four. This will give you internal palette in RGB. Let’s stop for a moment.</p><p>It’s really rare in MOO2 to find images with internal palette that spans entire 256 color space. Mostly internal palletes will have color count of 64 or less. What it really means? If internal palette is less than entire color space it means that the internal palette is really a mixed one. That’s where the color shift from internal palette header comes in. Mixed palette is really internal pallete “mixed” with external palette. It means that internal palette substitutes number of colors within external palette. The color shift is basically the starting color of this substitution.</p><p>Let’s suppose we have graphic file with internal palette. We read from internal palette header that color shift is 24 and color number is 64. Then we read color values from internal palette, convert them to RGB and voila. We have read our internal palette. What’s next? To create mixed type palette we have to choose one of the external palettes. Which one? That’s a tough question really. There’s no indication whatsoever which one should we choose. They are probably hardcoded within MOO2 executable.You’ll have to experiment by yourself. Suppose we chose the first external palette available. What’s next? Well… It’s really simple. The external palette always has 256 colors beginning with 0 and ending at 255. If we have color shift at 24 we start substituting color values of external palette at 24 (<strong>not 23 as some of you may think, because palette starts at 0!</strong>) and all the way to 88, because we have 64 colors within internal palette. It’s really that simple.</p><p>There’s also another type of palettes. I have found them to be within 1×1 pixel size images. These are not really images, but a placeholders for internal palettes. Some of the <strong>SHIPS.LBX_XXX</strong> files have them. These special files are used exactly as mixed palette, but they apply not only to one image, but to many graphic files following this special “image”. If you used my viewer you could see that after encountering such special image, the following files are images of the ships for each “nation”. It’s not really nation, but if you look closely in MOO2, ships are chosen not by race, but by the color banner. And that’s it. Palette of this special image applies to each graphic representing ship until the next special image with internal palette is encountered.</p><p>Ok. This should be enough for you in getting familiar with palettes. So now we’ll get into reading actual graphics (frames).</p><p>If you want to read each frame you have to position your reading cursor (fp.seek() in C) to offset stored in memory. (Frame offsets reading was described in Part 1 of this tutorial). At this seek position we read two bytes for frame beginning indicator. It’s always 1. If it’s not, you should not continue to read the frame and skip to next offset. If you had frame beginning indicator the next thing is frame y indent (relative vertical position). This is the number of vertical pixels you should render frame relative to screen (or rendering context) top position. After reading those bytes we must stop here again for a while.</p><p>Each frame has multiple data sequences. I call them lines or sequences for short. In MOO2 graphics not needed bytes are not stored. This way of saving graphics also allowed transparency effects. If there’s no pixel it means it’s transparent. Transparency is achieved simply by storing relative indents (x and y positions). Each sequence (or color line) has it’s own pseudo header.</p><p>Sequence begins with two bytes representing number of pixels in sequence. It’s also a special indicator, but I’ll explain that later. For now you have to remember that the <strong>following applies only if this pixel number is greater than 0</strong>! Next we read two bytes for x indent (x relative position). This is the amount of pixels that should be skipped relative to previous sequence x position when rendering. If we had x indent of value 12 and our last sequence ended at 24th pixel on screen we should start painting this new sequence from 36th pixel. I hope this is clear enough.</p><p>Then we have to read pixel data. Pixel data is simply one byte multiplied by the number of pixels. So you have to read number of pixels. Pixel data is 8bit value (1 byte) which represents pixel color number within the palette. If you had value of 46 you use 46th color from current palette in memory when rendering. Simple isn’t it? BUT! You have to remember one thing. <strong>If number of pixels was odd value, YOU HAVE TO READ ADDITIONAL BYTE!</strong> This byte is then discarded, but you should always remember doing it. It’s probably linked to internal image loading mechanism used in MOO2.</p><p>So, let’s get back to our pixel number in sequence. I told you that the above applies only if pixel number in sequence is greater than zero. But what if pixel number IS ZERO? Well. It’s a special indication of something fancy going on (not really <img src="http://www.karoltomala.com/blog/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> ). If you encountered 0 in pixel number of sequence, you have to read additional two bytes. Those two bytes are y indent of the sequence. It means that you have to start painting next sequence in <strong>new relative y position, but</strong> <strong>resetting x indent to ZERO!</strong> It’s like a number of newlines + carriage return, except for graphics. Sequence that has y indent DOESN’T HAVE ANY PIXEL DATA. But that should be obvious.</p><p>However. There’s also one small glitch. <strong>If y indent equals 1000 </strong>it means we have encountered <strong>END OF FRAME</strong>. When encountering this we should save the frame data in memory and proceed to the next frame offset (if any).</p><p>That’s all. I hope you found this post useful. If you have any comments or questions please post them. Also please forgive me for not showing any pseudo code or hex data, but I think this should be pretty obvious. If it’s not download: <a href="http://www.karoltomala.com/blog/wp-content/uploads/2007/02/moo2gfxview-008tar.gz" title="moo2gfxview-008tar.gz">moo2gfxview-008tar.gz</a> unpack it and refer to file <strong>graphics.py</strong>, function <strong>__getframes</strong>. I know it’s in Python, but you should be able to understand it, because file reading in Python is almost the same as in C or C++.</p><p>Hope you liked it. If you have any comments or questions feel free to post them.</p></blockquote>sironhttp://www.blogger.com/profile/08532906301180970881noreply@blogger.com5