Student Group Studying TripleA
-
@jtkenny said in Student Group Studying TripleA:
but we also haven't been able to figure out how to move forward to this version.
Not sure what you mean, but I think you need to install multiple versions of the TripleA game
So download a Triple version, but when installing it, use the version as the install path
eg install to TripleA-2.6+14163
like;
and therefore download the source of the version that you want to change.
Im not sure the one issue you have selected, is actually an issue. I'm sad and have no life and I use TripleA daily and I have not seen this error message, speaking as a xml coder of many maps and many errors.
Being selfish the biggest impact you could make for us TripleA-ers is in the 2nd post of this thread, as lots of maps have this style of unit restriction.
If you met this restriction and gone over a unit limit, TripleA resets all your purchases and you have to start over, not a good experience for a player to have.
-
@jtkenny There is a tag pushed on each release that matches the release version number. You should be able to checkout the exact version via:
git fetch upstream; git checkout 2.6+14163
(I'm assuming you named the 'upstream' remote as 'upstream',git remote -v
should indicate the name to use).The version in the error report does correspond to the game-client version that sent the error report, seemingly this (issue #11097) should be something that you can reproduce in 2.6.
It might be most fruitful to see how and where
returnFire
could be null. That might then give you a path for reproducing the issue.Re: local dev setup
Just want to be sure that your team is all able to run
verify
script and not just launch the game from IDE. The verify script is useful since it runs all tests & static checks in one-go. It has more requirements then just running the game since you need to install docker (which then provides you with a local databse). If that works, then you'll be able to launch all components of the stack and not just the client application. To add to that,verify
is particularly useful for PR verification - it can be quite endless to push updates and wait for the build to fail on relatively random issues compared to runningverify
locally (which is all in the name of reducing developer iteration time) -
@jtkenny for issues to work on, also please consider the problem tracker: https://github.com/orgs/triplea-game/projects/3
The 'fix sooner' column has some relatively tractable items that are all relatively high impact. The 'standard fix' items are all similarly good items to pick up.
Even if the 'problem tracker' is not as complete as it could be, I did want to point this out as another reservoir of items that could be picked up.
-
One more item, it's a bit easier than ever to find the '2.6' error reports, we added some labels: https://github.com/triplea-game/triplea/issues?q=is%3Aopen+is%3Aissue+label%3A"Error+Report"+label%3A2.6
-
@lafayette I've been trying to run the verify script, but the the database startup times out and aborts and so far I have been able to run it.
-
@jtkenny I would guess the DB is not starting.
The startup script is mostly a wrapper around this command:
docker run \ --rm -d \ --name="database" \ -e "POSTGRES_PASSWORD=postgres" \ -p "5432:5432" \ -v "$(pwd)/$(dirname "$0")/sql/init/:/docker-entrypoint-initdb.d/" \ "postgres:10"
A quick debug would be to run without the folder mount at first:
docker run \ --rm -d \ --name="database" \ -e "POSTGRES_PASSWORD=postgres" \ -p "5432:5432" \ "postgres:10"
Let us know how that goes
-
Hi all, I am also a member of the student group. I have a few questions regarding TripleA's availability. Has TripleA ever gone down? How long is TripleA's typical down time (either when changes are being committed or unintentional outages)?
-
The lobby goes down sometimes. Rarely for more than a few hours. Dan probably give you a more detailed answer.
-
Has TripleA ever gone down?
Yes. Though, in terms of availability, perhaps to some surprise it is quite high (out of the year, perhaps only a day or two of downtime). For better or worse, we do not measure the availability of the lobby, so a concrete answer is unavailable. Though, we are pretty quick to get reports about the lobby not being available, and there are not very many over the last 4 years. These are the ones I could find:
https://github.com/triplea-game/triplea/issues/10804 < deployment configuration problem, lobby database password got out of sync with lobby application
https://github.com/triplea-game/triplea/issues/9708 < regional issue relating to DNS resolution of our domain
https://forums.triplea-game.org/topic/1239/where-is-the-lobby-down-topic < linode "maintenance" (note, the person was asking 'where is the lobby down' topic in order to be able to post about the lobby being down!)
How long is TripleA's typical down time (either when changes are being committed or unintentional outages)?
I think the events above were all hours. I'm not aware of any occasional blips in the software, generally downtimes are discrete events (rather than say the lobby crashing on a recurring basis)
either when changes are being committed
Lobby needs a restart to pick up updates. Last time we did this was almost 3 years ago (maybe more even, lobby is running v2.4). We can have users log into a new lobby now without downtime but there is no shared state between different lobby versions. Meaning, a player might be the first to rejoin into a new version of the lobby and be the only one there.
For 2.6, we are pretty close to doing a lobby cut-over. It should be zero downtime. Some of this should play out in the near future. Happy to answer further questions.
-
@lafayette Sorry about the delayed response, we have been very busy with exams and writing an essay.
I ran the script you gave and it started the database, but I was still unable to run the verify script because it seemed to stop and then try to start the database again.
On another note, I left a comment on the issue we were going to start on. Is there a particular naming convention I should use for the branch we make for the PR?
-
@jtkenny More details on what is happening with the script would be helpful. Perhaps if you could add a 'set -x' to the top and then provide the output, it might be easier to debug what is happening. The verify script does start by dropping database data and then resetting it up for a 'clean' state. So that sounds consistent. It also sounds like the database is also able to start, which does leave me wondering where the verify script is terminating and/or going wrong.
It's pretty important for efficient development to be able to run PR build checks locally. This allows a person to do local debugging and more efficient iterations in tracking down problems. Not being able to run all of those build checks locally is a concern, as that should work. It implies we need to fix something so that it works and allows anyone to reproduce the PR build checks locally.
Is there a particular naming convention I should use for the branch we make for the PR?
Nope. The commit message is the important part, this link gives good outlines of how to write a good commit message: https://www.freecodecamp.org/news/how-to-write-better-git-commit-messages/
-
@lafayette Here is the terminal output when I try to run the script (with set -x):
The strange part is that Docker shows the server running, so I'm not sure why it aborts startup.
-
@jtkenny Thanks for the output. It's odd to see the 'git-rev-parse' stuff in there. The 'timed out' part is not good. What follows I can't really explain as I would expect a 'gradle' command to be the next thing to launch.
FWIW, I recently wiped my dev setup and am working from a clean install and have reproduced some of these problems.
When running the start docker command [1] on its own, I get a "image cannot be stopped warning". Seemingly the 'stopping database' step is not stopping the database properly.
If I comment out the 'start-docker-database' step in
verify
[2], then I do see tests kick off but many happen in parallel. This is not good since the tests that interact with database step on each others toes when deleting and setting up database data . So I then ran into various "table not found" errors when running testsIn the short term we'll probably need to disable the steps that run with a database. In the medium term there is an experiment with going 'multi-repo' (https://github.com/triplea-game/triplea/issues/11204) that would help this situation. Specifically if the lobby and its database wind up in their own repository, then our verification script becomes simpler and no longer needs to fire up a database. In turn, the lobby repo can have an explicit config to run tests in serial.
[1]
docker run \ --rm -d \ --name="database" \ -e "POSTGRES_PASSWORD=postgres" \ -p "5432:5432" \ -v "$(pwd)/$(dirname "$0")/sql/init/:/docker-entrypoint-initdb.d/" \ "postgres:10"
[2]
verify:29
./gradlew --parallel spotlessApply check -x $DATABASE_TESTS \
-
@lafayette Okay, just let me know what tests I should run or how to disable the database tests and I will make sure we get those run on our code.
-
@lafayette I am trying to make anew branch to put our changes in, but it seems like I don't have the permissions to push a new branch, do these need to be granted to me in some or is there a different way I should go about making a new branch?
-
Oh, oh, oh Im almost excited, your first PR is awaiting approval.
Zoom in & Out % is another quick win request;
2.6 can zoom In & Out, it would be good to show, when Zooming, that percentage on the right-ish of the status bar for say 3 seconds and then disappear, that is giving back the valuable status bar space.Technology grid panel, another request?
To remove the Tech grid from the Players tab, so more nations can be displayed without scrolling to see the Alliance totals for Economic Victory or VC Victory.The grid could then be accessed via a menu item, maybe ctrl+T ?
It would look a little like the ctrl+W Politics panel, flags and nation name for the X axis and Tech name for the Y axis. Maybe for researched, a cell would have a green background and a tick? -
@jtkenny
Here is another UI request?It would really nice to have a centre button (to centre on the territory) against each one.
Currently you have to faff about to find the territory from the menu.There are lots of other little UI tweaks, so pick the ones you would like to do.
-
@lafayette said in Student Group Studying TripleA:
Change how game data works and save-games work so that we have 'game-change-deltas' which stack on top of each other. Right now 'GameData.java' is a god class that maintains the current game state and when the game is saved, this is serialized to disk (via java serialization). 'GameData.java' represents the latest in game-state. Instead of this, we would want to have as a starting point a map (which can then have its data loaded on-demand) and a series of game-change objects. From this we could re-create the latest game state by using the map data as a starting point and then applying the game-deltas.
I'd like to know more about this, the "why", what other alternatives were considered (and why they were rejected), and how the original implementation writers may be contacted to inquire why things were implemented as they originally were.
-
@jtkenny Apologies for not being super attentive. I was a bit burned out & did not have much time for TripleA over the last few months. I hope beyond this rare weekend day that I'll be able to be a bit more active. It is hard to say given there are some big things coming up in the spring/summer for me.. So, we'll see.
Re: pushing branches
That is something of the github access model. You need to fork the repository first. That gives you a forked repo where you will have write permissions (so you can create new branches). Once you've done that, you'll be able to head to that repository and github gives you a link on the forked repository main page where you can create a pull request.
EG: https://github.com/DanVanAtta/triplea
There is a lot of well written documentation on this workflow available. We really would benefit to update our dev setup notes for new contributors to have some comments like "to learn more about how to push pull requests & create a fork, see these links: ... "
Tests & modularization
I don't think the multi-repo approach is going to solve things quite as well as I had hoped. You can learn more details by reading the small dissertations written at: Code Structure - Organization into a "Many Repo" (Breaking up the monorepo) #11204
Though, it still remains a problem that build & verification times are slow and too broad. I am not happy that everyone needs to install a docker to be able to contribute anything. While docker for a local database is a great thing, it does raise the barrier to entry. I really want to lower the barrier to entry, it's too great and there is too much to do.
Semester / Team Status
Is the semester for your team over @jtkenny ? Where do things sit? Can we be of help? If so, how?
-
@aardvarkpepper Oomph, I was very loathe to spend 3 hours typing & documenting TripleA stuff today, but here I am.. What you asked is a fair question, though I think the conversation has been spread out over time & topics. I can't find a good single thread to answer your question.
Please see: