JavaMoo

Advertisements

Phase 2 plans

Work on Phase 2 (ships! exploration! empire!) starts tonight. Broadly, here is my current planned order of work.

1. Display fleets – show fleets on map and allow them to be selected

2. Change ship designs – allow player to choose which ship design he wants to build on a colony. This could include a stargate, which would also be drawn on the map.

3. Fleet design listing – the screen that shows the current active designs (up to 6), with the ability to scrap a design. A pretty simple screen.

4. Create new ship designs – The Ship Design UI is a complex beast and one of the most important UIs in the game. I’ll get on it fairly early.

5. Send fleets to destinations – provide the ability to send fleets to other systems. Will need to account for stargates and hyperspace communications.

6. Fleet arrival events – things that happen when you get where you are going. Scouting new systems. Learning a technology for being the first to scout an artifact planet. Colonizing planets.

7. Fleet status screen – the UI that shows all of the player’s fleets and where they are at or going to.

8. Strategic Map – the map that shows the entire galaxy and various aspects about the races and planets in it.

9. Colony listing – the UI providing information all of the player’s colonies, empire-wide income and expenses, and the ability to transfer from the empire reserve to a colony.

The hope is to have this done by the end of June. We’ll see. There are a lot of large UIs to do but this is all very straightforward work.

Phase 1 screenshots

Phase 1 is officially “done”, so I’ve rounded up a set of representative screenshots to demonstrate the look of the game so far. Anyone who remembers the original Master of Orion should like these.

The opening splash… not much here except a nice background image. Kind of sucks that the best-looking screen is the one that took the least amount of effort!

gameMenu

Next are the two-stage setup screens. These are the identical options available in MOO1 except that the number of opponents is currently locked at 0.

gameSetup1gameSetup2

 

Here’s the main map after you start a game. I chose the Bulrathi for this round. There are some improvements to this screen that are not in the original MOO. Most notably, you have the ability to set colony-specific limits on the number of missile bases you want. The map is easier to navigate, and there is a bit more info on the colony detail… factories and shield level.  Note that the unfinished gray area is where the ship design selection is going for Phase 2.

mainMap1

Here is a view of an explored but uncolonized system. Note that the range text is in green which indicates it can be reached by your ships without extended fuel tanks. The planet type is in Green as well, which indicates that you can colonize it.

mainMap2

Below is an explored system that can only be reached with extended fuel tanks (range text is yellow). The planet type is in Red which means that you do not have the technology to colonize it.

mainMap3

 

The final system is one that’s unexplored — you only know the star type. Also, the range text is in Red which indicates that even your scout ships cannot reach it.

mainMap4

 

Here is the Tech allocation screen. It’s almost a mirror image of the original MOO screen:

techScreen1

 

Below is the screen presented when you need to select a technology to research. Identical to the original game.

 

selectTech1

 

Below is the screen you see when you have learned a technology that allows you to automatically reallocate spending in your colonies. Identical to MOO as well.

discoverTech1

After pressing next turn, the shot below may display after you’ve completed building factories or your population. Unlike the original game, if you complete more than one item in a turn for a colony, it will notify you only one time.

nextTurnResult1

 

Below is the new notification that shows up when you have finished building missile bases on a colony. Any MOO1 veteran knows that the lack of base limits was one of few micro-management issues in the original game. This problem will be gone in Java MOO.

nextTurnResult2

That basically covers the UIs added in Phase 1. A lot of the work in this phase was not related to UIs at all, but getting all of the underlying game mechanics working properly.

 

Progress update

I’ve divided this project into 5 distinct phases, giving myself perhaps 3 months to complete each phase. Executable jar files will be made available after each phase is complete.

Phase 1: Colony management

All of the capabilities of colony management will be available. You’ll be able to research technologies and upgrade your colony based on technologies you have learned. For example, you’ll be able to terraform your planet, build ships, factories, missile bases and planetary bases.

You won’t be able to expand into other worlds yet, but huge chunk of the game’s infrastructure will be in place after this phase. Although you’ll be able to select your race and enjoy the benefits from that, there won’t be other races in the galaxy just yet.

I expect this phase to be complete by the end of March (3 weeks from now). Maybe. I am really focused on not hurrying this project so that I can spend more time polishing.

Phase 2: Fleet management

You’ll be able to direct ships you’ve built in Phase 1 to other planets. This will allow you to scout distant systems, build colony ships, and expand throughout the galaxy. All of the ship design options will be available but there won’t be much point in building warships. Transports will be functional as well.

I am planning on this phase to be complete by the end of June.

Phase 3: Diplomacy 

Alien races will begin populating the galaxy and you’ll be able to interact with them diplomatically. This includes the various diplomatic states: war, no treaty, non-aggression pact, and alliance. Trade agreements will be allowed including the ability to trade technologies. Players will be able to establish spy networks to learn more about their opponents as well as commit acts of espionage and sabotage.

There is a lot of dialogue related to this release, so I hope I can stay on schedule and finish this portion by the end of September (3Q). Automated ship combat may get in this phase, but possibly not.

Phase 4: Combat

Ship combat and planetary invasions will be support. Ship combat is complex and will take up the majority of the time. Planned by end of December (4Q).

Phase 5: Events and finish polish

Random events will be added along with anything else that needs polish. Saving and loading games as well. If it is warranted, the aging graphics of the original game may be upgraded. In any case, they will definitely stay in theme with the original Master of Orion. This phase will be done when it’s done.

What is Java MOO?

Master of Orion, or “MOO”, was a very popular 4X space strategy game. It debuted in 1993 when the only version of Civilization out was, ahem, Civilization 1. It was a brilliant and innovative game that managed to deftly avoid many of the micro-management problems that plagued Civilization and its various clones, including subsequent versions of MOO.

MOO 1 was a pre-Windows game that ran in DOS. You can still play it and run it in DOSBox. Unfortunately, this makes it much slower and more difficult to play. Combined with the 1993-era graphics and you are left with a diamond that has returned to the rough. Like a great silent film, it is simply too distant in technology for a modern audience to enjoy.

So, what is Java MOO? Around 2005, it was a personal project for me that represented an attempt to learn Java. While this was important for my professional growth as a software developer, attempting to rewrite a beloved game like Master of Orion smartly ensured that I would commit the time and mental energy necessary to become proficient with a new programming language.

I spent a lot of time on the project and got a LOT of the game to work. You could develop your colony, learn technologies, design and build ships, explore planets, interact with AI opponents diplomatically and militarily, etc, etc. Looking back in hindsight, it was a huge accomplishment for an individual who entered with no knowledge of the programming language being used.

It was also ugly. Very ugly and messy. But the underlying game mechanics nevertheless worked very well. After all, I was still an experienced developer and understood well the mechanics of the game I was developing.

Anyway, fast forward to now. I have been professionally using Java for the past 7-8 years and am still looking for a good 4X space game that doesn’t break down into micromanagement after 10-15 systems.

So I’m going to take my old Java MOO code, clean it up, and reskin it with better GUIs. I’ll include some examples later.