Join the TripleA TEAM!



  • @RoiEX said in Join the TripleA TEAM!:

    Hosting is not something we want the regular user to have to do on their own, it's a "power-user-only" feature. That's why there hasn't really been throughout documentation.
    What we really should document is all the potential command-line options. I'll come back to this later.

    Ah, yes. That would help a lot. Still doesn't reduce the benefit of having a nice script / Docker Hub image, though.

    I ended up with an approach that requires some manual configuration, but works for everyone that bothers to try. See https://forums.triplea-game.org/topic/1970/how-to-host-using-a-relay-service for more information.

    Yeah, I saw that. It's not particularly satisfying, but it works. SSH port forward, but for people without SSH boxes.

    I'm not entirely sure what you mean. There are basically "2 ways" to host. If you're trying to register your server at the lobby, the lobby will check if it actually can establish a connection and the client will shut down if it can't open a TCP connection. However if you don't try to connect with a lobby in the first place and try to host "locally" you should be able to ssh-forward as much as you want.

    Ah, I see. I guess there's a feature request here for "tunnel mode" to allow port-forwarding with the lobby.


  • Admin

    @0az

    Still doesn't reduce the benefit of having a nice script / Docker Hub image, though.

    True. Previously this would've tied to some hassle, but thanks to the more "recent" github features we could host docker images on GitHub AFAIK. See https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages

    It's not particularly satisfying,

    True, but at least it - in theory - enables people to host even if their ISP doesn't offer dedicated public IPs


  • Admin

    @0az

    Homebrew Cask for MacOS

    Almost forgot that one. We are currently struggling with some debian packages that are not maintained by us, but are out of sync with current master. This might sound scary for some devs right now.

    However Homebrew Casks are managed on GitHub, so if we "adjust" the installer properly it would be almost no overhead to keep it up-to-date. Good idea IMO.

    Is it possible to configure Install4J to generate an App instead of an App Installer?

    Yes, with limitations, even though I'm not sure the limitations still apply to us.
    It's difficult experimenting with the installer though, none of the devs has a mac to test changes to their disposal.
    I can tell you how to configure the installer on your own though, install4j provides a nice UI for all settings. PM me if you're interested. Once you have something that works to you we can discuss the differences on GitHub.


  • Admin

    For 3.x or 4.x I would hope that bot hosting becomes a thing of the past. Instead bots would do application level network forwarding. We're some time out from getting to that point.

    Generally the problem with bot hosts has not necessarily been ease of getting up and running but having them run for long enough. It's common to see someone host a bot for a week, or a month, but then the server is disconnected and they drop off. At a cost of 10$ per 7 bots, simply paying $20 / month is not that bad for more bots than we actually need.

    I just ported @prastle's batch script to shell, and sharing would be good

    There is already a shell script, I'm curious how that would be different and if the one we distribute and maintain is difficult to find?


  • Admin

    @Giglfoosm @0az , very exciting you want to contribute. Let us know if you have any questions, could use a starter project, any help getting started or what not. Feel free to post in the development section or in github issues for any topic specific follow-up.



  • @LaFayette said in Join the TripleA TEAM!:

    There is already a shell script, I'm curious how that would be different and if the one we distribute and maintain is difficult to find?

    Just to clarify, do you mean shell as in #! /bin/sh? I was not aware of it โ€“ย can you post a link? The only one I found was the aforementioned Windows batch script, which doesn't exactly work for my server.

    @LaFayette said in Join the TripleA TEAM!:

    @Giglfoosm @0az , very exciting you want to contribute. Let us know if you have any questions, could use a starter project, any help getting started or what not. Feel free to post in the development section or in github issues for any topic specific follow-up.

    Will do.


  • Admin


  • Moderators

    @LaFayette Nothingtoseehere 25 minutes ago
    Hi. I'm a long time user of the game and can do Java at a beginner level and so I would like to help improve the game. But it's so big a project that I don't really know where I could start doing that. I know there are some getting started documents on github. I already am registered there and have IntelliJ set up on my computer. Maybe someone like @LaFayette can point me to some problems or issues that a beginner like me can be expected to understand and help with.


  • Moderators

    @SilverBullet I think @RoiEX did a beginner post somewhere but can't remember where.


  • Moderators

    @beelee well this guy wants to help, but i dont know what to tell him.


  • Moderators

    @SilverBullet ahh I think maybe it was @ff03k64 who just got started too. He could try asking him also. Someone will respond


  • Moderators

    @beelee his nickname is "Nothingtoseehere". he says he is registered.


  • Moderators

    @SilverBullet I've seen him around. Lol I just made the same post you did on the other thread. hadn't go to it yet ๐Ÿ™‚


  • Moderators



  • I would like to learn that for example If I developes a new code/property that allows game to end in a certain round, would it be enough to integrate it in the engine or there is some kind of vote system which requires approvals?


  • Admin

    @Schulz if you're willing and able to build a feature directly into the engine, it's welcome. It does take a lot of persistence and is not necessarily easy. Feedback from the forum is encouraged to help develop the requirements of the feature and to fine-tune what you will be building.

    TripleA is in a tough place in terms of code. An analogy to think of is that all features are akin to a purchase done on a credit card. The feature is the cookie you have purchased, the code is the credit card balance. All code incurs recurring interest that must consistently be payed, some purchases are more expensive than others. In this sense, just slapping something in is not necessarily welcome, it can be really difficult between the level of manual testing and the underlying complexity of TripleA. You should be prepared for it to take quite some time for simple changes. If you're still on board this page can give you more info a jumping off point: https://github.com/triplea-game/triplea/blob/master/.github/CONTRIBUTING.md



  • @LaFayette These are just ideas that I would want to work to implement them. I particularly selected them believing would not be too complicated to implement and would be worth to spend time.

    1) A option that simply ends games in a certain round representing draw if no side achieve its objective up to this point. I strongly believe that only a draw option can prevent loser side simply surrendering in the early-mid rounds. Another good side of this feature would be simply preventing loser side wasting their opponent's time by simply not surrendering. Due to usually higher victory city requirements, loser side can simply refuse to surrender and prolong the game meaninglessly so long.

    2) Auto-Intercept: New property that allows player if they want always defending air units to intercept or not.

    3) Sound Overlapping: Especially national sound are great feature but overlapping is big issue.

    4) Optionally showing date in the top-right corner That would be especially great for maps that use seasons


    And building a feature questions:

    1. If developers agree to devlop a certain feature, they do it together or just made by only one developer?

    2. How do developers know what is possible to make and what is impossible. For example, If I decide to work to make optional ending games in certain rounds property, how do I know where to start with?. There seems like no similar feature for me to foresigh or mimic it.


  • Admin

    When designing a specific feature, the requested process is to create a github issue to discuss it. I don't know if there would be any harm to do the same in the 'development' category of the forum either.

    The features you listed sound good, I'm not sure if for example sound overlapping is do-able, but worth exploring.

    If developers agree to devlop a certain feature, they do it together or just made by only one developer?

    Typically one. Nothing says though that you can't collaborate, it adds some overhead to communicate and work with each other, but it can certainly be how some of the best work is done.

    All code that is merged is reviewed beforehand, so there will be that last mile check. Help & questions on how to design, what things to look for is pretty common in the precursor issue/thread about a new feature. The more you know about the engine the more you can focus on what vs how, but it generally never hurts for anyone to go into that level of detail - it's a good practice to generally map out how a feature is going to built, what will be changed and what all needs to be touched.

    How do developers know what is possible to make and what is impossible. For example, If I decide to work to make optional ending games in certain rounds property, how do I know where to start with?

    Sometimes it takes research. Often with enough effort, most anything can be done. One does need to ask "should it be done" as it can make other efforts even more difficult and so you need to think about return-on-investment. It's often the case that existing code gets in the way and so to add a feature you need to fix that, but to fix that code, other code needs to be fixed, to fix that you have to fix two other places, but to fix those other two places you have to fix the first place you looked at (and hence the code is tied into a knot. We're in a better place now in terms of this than we were a few years ago, but it can still certainly be the case).

    Regardless, for the game-draw feature, I would look to find where the game decides the victory coditions and add a 'draw-condition' check to that location. Then I'd look to see how the game maps victory conditions from the XML to the victory condition check in the game engine, and build a similar path for a draw.



  • The time limit is my favourite one to represent draw because I couldn't find a better alternative to represent it with a clear objectives like victory conditions yet.

    Could it be possible to take codes from other Java based open-source games?Did it ever happen?


  • Admin

    @Schulz the level of customization needed is going to be prevent an drop-in-replacements. The best examples is the existing code and learning what/where you'll need to modify.

    Being able to write code is just one skill, other skills important to development are:

    • being able to understand existing code
    • being able to map a codebase, being able to find and roughly understand where certain things are, what happens where
    • being able to map a feature and what needs to change
    • being able to incrementally build that feature and break up the work into increments rather than releasing all changes, all at once in a big bang
    • being able to write tests for code that you create

Log in to reply