1. - Top - End - #51
    Surgebinder in the Playground Moderator
    Douglas's Avatar

    Join Date
    Aug 2005
    Mountain View, CA

    Default Re: Making a game like Space Empires, need code reviewers

    Here is fine. To quote myself from the OP:
    Quote Originally Posted by Douglas View Post
    While the source code itself is confidential, I'm not particularly worried about feature and design ideas getting out. In this kind of work, ideas are cheap, the code to make them work is the hard part. Feel free to publicly discuss features, game design, bugs, code design, library uses, etc. In fact, please do. Public discussion is great for driving up interest.

    If you are confused by something I am using, such as a third party library or design technique, first try looking it up elsewhere. If you're still confused, ask here. If you are confused by something I am doing (in the code), on the other hand, then a) read the comments near the confusing code, b) read the comments in the relevant package-info.java file, and c) if after both of those you are still confused, that is a strong sign of relatively poor code; please point it out and insist that I change it to be clear and not confusing.
    Also note that there is a folder in the root of the repository containing some short design documents, organized hierarchically.

    I don't mind public questions about, for example, how class X fits into the architectural concept design, or why I split function Y into several separate things, etc. You would have to get into extraordinary - and extraordinarily comprehensive - detail for that sort of information to meaningfully reduce the effort required to duplicate my work. Copy and pasting source code is what the NDA is really aimed at.

    Quote Originally Posted by Annon View Post
    Anyway, on to comments about the design:

    First, why Java? With some of the goals you are setting yourself, it seems like you'll be hammering the CPU for your multi-layered AI decision-making, especially if you want to do some sort of simultaneous processing a-la SEIV. Bearing in mind that I don't really have experience writing resource-intensive Java (on most of the systems I work on, 64MB is a large heap size) I have to ask whether the JVM would be up to the task? Which brings me to...
    "The JVM is slow" is, as I understand it, a myth held over from the early days of Java. It was originally true, but has since been rendered false by advances in JVM implementations. So that's it for the negative performance reason to avoid Java.

    As for positive reasons to use Java, I know it well, it's portable, and it has a huge array of mature features and free (even for closed-source commercial applications) libraries that I can use.

    Quote Originally Posted by Annon View Post
    Second, what model are you planning on implementing for your management AI? I understand right now you're working on simple prototypes for your game, but I think the next step in your development should be working on the AI, since that is a primary goal for your design.
    Yes, AI will definitely be a high priority for me as soon as the basic structure is all in place. I'm currently envisioning two hierarchies, one of analysis classes and one of decision-making classes, with the latter using the former to inform its decisions and each layer in either hierarchy using the next layer down to build on.

    Quote Originally Posted by Annon View Post
    Finally, some gameplay suggestions:

    My thoughts kind of get at what everybody has been saying. On of the most fascinating thing about Europa Universalis (which I haven't played, but I've played Crusader Kings which uses a similar concept) is Casus Belli. The idea is, you have to have a justification to go to war, and that justifies how much territory you can take.

    Now, I wouldn't necessarily say that you need something as complicated as what Paradox cooks up, but I think it gets at what I'm interested in--namely, that what the population thinks of you should matter, a lot more than it does in current SE. If you are an attacker who wants to take over a planet with a billion+ people on it, you should have two choices: glass the planet, or convince the people living there that they are better off with you.
    I agree completely. This idea will not be in my initial "Space Empires clone" game, because Space Empires doesn't have it, but it's definitely in my plans for my original game. Going to war without your population's willing support should be difficult and cause all sorts of trouble for yourself. Mitigating this, there will be ways to influence your population's opinions - put resources into a giant propaganda campaign for long enough, and eventually your population will fully back whatever action you aimed the propaganda at. Of course, propaganda efforts are trivial for spies to learn about, so a downside of them is your enemy most likely being forewarned.

    Quote Originally Posted by Annon View Post
    A stray missile shouldn't genocide millions of people. You shouldn't be able to cram 300 million people into a small transport. Neither should you be able to cram an occupying force able to take a whole planet into a small transport. You aren't invading Poland, you are subjugating a planet when your supply line stretches over light years. Population shouldn't just make a bigger difference in bonuses a planet receives, it should shape how warfare is conducted.
    I think someone calculated once that the amount of space allotted per person in a Space Empires IV population transport, with some fairly generous base assumptions, was a small fraction of the size of a single human body - and that allotment had to cover all the resources to house and feed the population as well as their actual physical volume. SE4 has some serious scale issues.

    Quote Originally Posted by Annon View Post
    What all this is leading to is this: I like your resources as you have laid them out. Minerals is good. "Production Capacity" should basically translate into "population". Said population will move and breed on its own, with no direct control from the player. The "Operation capacity" (say, "Credits" or something) resource is what you use to encourage your people, to get them to move to the backwater mineral planet and build mines there. The amount of population on a planet would then depend on how much you are paying in incentives an on the living conditions of the planet--if incentives > population, people will move there. If incentive < population, people will move out in droves unless there is a blockade.
    Ah yes, the concept of migration. I remember seeing that in MoO3 and thinking it was an interesting idea, but poorly implemented. The total lack of control over it in that game was a major problem, especially for players who (for some unfathomable reason) didn't want their empires eventually becoming entirely inhabited by the race that eats other races for food.

    Quote Originally Posted by Annon View Post
    If an enemy is blockading a planet, the effect is to greatly reduce the efficiency of the credits being sent to the planet, by making the people unhappy or by reducing production capacity. The defender then has two options--redirect his inefficient resources, which will anger the people on the planet and make it ripe for takeover, or keep sending credits and eat the cost.
    I agree blockades should cause unhappiness, but I've always been annoyed by mechanics that impose arbitrary penalties for blockades - a blockaded planet should have great difficulty getting resources to or from the rest of the empire, certainly, but it should have no trouble at all using its own local resources.

    Quote Originally Posted by Annon View Post
    How willing the people on the receiving end are to endure the blockade--as well as how willing the people in the aggressor's society are to support such aggression--should depend on how the war has been conducted by both sides. If the aggressor is "justifiable"--i.e. he was initially wronged and he has behaved well (not glassed any planets)--he gets bonus conversion.

    Properly balanced, this gives players an incentive to not snowball through his enemies planets, because they are making their lives harder in the long run. Further, it gives more meaning to those cultures you pick when you create a class--basically, the player could define what sorts of actions are going to piss their own people off.
    Details will have to be worked out, but I agree in principle.

    Quote Originally Posted by Annon View Post
    Other random thoughts:

    Supply lines sounds interesting. I wouldn't bug with "trade lanes" though, but rather I would come up with some sort of mechanic for holding warp points, like building checkpoints at warp points instead of building space ports on planets determines how well people/goods travel between systems.
    Hmm, warp point customs offices to protect against piracy and stop smuggling?

    Quote Originally Posted by Annon View Post
    I also like the idea of randomized theoretical research. I also would prefer the idea of research results not being a naive die roll (where every possibility always has the same fixed probability) but rather for the probability for each particular advancement to depend somehow on player action/race choices (i.e. berserkers are more likely to roll weapon research, warriors are more likely to roll armor research, traders are more likely to roll colonization research, etc.)
    Some randomization in research seems realistic and interesting, but it's something I think should be treated with care. Having something delayed a bit by random chance is annoying but manageable, and the accumulation of random influences can lead to more interesting games through diversity of technology among different empires. A bad roll permanently locking someone out of a game changing technology is no fun for anyone, though.
    Last edited by Douglas; 2015-09-16 at 02:55 PM.
    Like 4X (aka Civilization-like) gaming? Know programming? Interested in game development? Take a look.

    Avatar by Ceika.

    Saberhagen's Twelve Swords, some homebrew artifacts for 3.5 (please comment)
    Isstinen Tonche for ECL 74 playtesting.
    Team Solars: Powergaming beyond your wildest imagining, without infinite loops or epic. Yes, the DM asked for it.
    Arcane Swordsage: Making it actually work (homebrew)