Commit Graph
53 Commits
Author SHA1 Message Date
Aleksey OrekhovskyandGitHub ee459b7410 Reduce Docker image size by refactoring map loading (#1621)
## Description:

This PR implements a major refactoring of how map data is stored and
loaded, as described in #1242. Previously, map data (`.bin` files) was
bundled directly into the client-side JavaScript by Webpack using
`binary-loader`. This approach led to data duplication and increased
bundle/image sizes.

This refactoring changes the strategy entirely:
- `GameMapLoader` interface has been introduced to decouple the map
loading mechanism from the components that use it.
- New `FetchGameMapLoader` implementation loads map data by fetching it
from static server endpoint.
- Webpack configuration and `Dockerfile` have been updated to serve the
map files as static assets and to remove the source `resources/maps`
directory from the final image, thus eliminating data duplication.

This leads to several key improvements:
- Docker image size is reduced from ~750 MB to ~600 MB.
- Build time is decreased. On my local machine, the docker image build
time went from 48s to 43s.
Most of this speed-up comes from faster Webpack builds (reduced from 16s
to 11s), as it no longer needs to process large binary files. This
performance gain will be noticeable for all developers during local
development, not just in the CI workflow.

## Please complete the following:

- [X] I have added screenshots for all UI updates
- [X] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [X] I have added relevant tests to the test directory
- [X] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [X] I have read and accepted the CLA agreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

aaa4xu
2025-08-01 04:49:07 +00:00
g-santos-mandGitHub 31381f67f4 Enable @typescript eslint/prefer nullish coalescing eslint rule (#1420)
## Description:

Fixes #952 
Enabled @typescript-eslint/prefer-nullish-coalescing rule and worked
through every error, introducing ?? and ??= operators or disabling
errors with inline comments where appropriate, to the best of my
ability.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

g_santos_m
2025-07-15 03:00:06 +00:00
Scott AndersonandGitHub 3a8ff6304a Quads (#1347)
## Description:

- Add trios and quads
- Add translations for duos, trios, quads
- Add duos, trios, quads to the public lobby rotation
- Increase the frequency of team games


![image](https://github.com/user-attachments/assets/a7bac4e7-9db2-486d-87bc-5779dd64da08)

![image](https://github.com/user-attachments/assets/c1b9225e-2193-4776-b97f-be01a1bdeeed)

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors
2025-07-06 20:09:18 -04:00
evanpelleandGitHub b48770faf0 Move maps generation out of repo, new map structure (#1256)
## Description:

Move map generation outside of main repo, it has been rewritten in Go
and is much faster. Also refactor how maps are stored, one dir per map.
The map binaries are basically identical to before. Some maps like
Africa have 1% difference in bytes, but playing it looks exactly the
same.

Use lazy loading for map data access so only needed files are accessed.

Unit tests now load map binary instead of regenerating it from scratch,
speeding them up.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:
evan
2025-06-23 11:23:56 -07:00
falcandGitHub 77f57207be Changed consolex to console logging (#1036)
## Description:
Changed from consolex to console
## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

@qqkedsi
2025-06-04 09:22:17 -07:00
3a481d3d16 Main menu UI cleanup (#857)
## Description:

- Fixes right side of the username box not being aligned with the rest
of the menu by fully hiding the news button
- Styled news button to match flag button (although a style more like
the secondary buttons would be better IMO, this is more of a temp fix)
- Invalid username popup no longer vertically shifts the rest of the
menu


![image](https://github.com/user-attachments/assets/451d0184-3f0f-44af-9b2c-a93f9dc38e49)


I uhhh kinda forgot how branches work and ended up pushing some changes
to the public lobby button to the same branch:

![image](https://github.com/user-attachments/assets/cee68ac3-361a-4185-a5c5-70602dbbb040)

![image](https://github.com/user-attachments/assets/fb9067e7-6e28-464e-b50e-dcd2ba5afdc3)


## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

Demonessica

---------

Co-authored-by: evanpelle <evanpelle@gmail.com>
2025-05-27 20:29:52 -07:00
VariableVinceandGitHub 01eaf00bd6 Fix misaligned public lobbies text (#819)
## Description:

Fix misaligned public lobbies text. The texts are not in a straight
line.

Before:
![Before with edge element
inspect](https://github.com/user-attachments/assets/abf83fab-128f-46c3-8c02-d1d5b6679f0a)

![Before with known
world](https://github.com/user-attachments/assets/13e3f2ed-207f-499f-ab04-c03fa3f73a9d)

![before
3](https://github.com/user-attachments/assets/b2fb5e87-0e29-4698-b76c-ed935083fd69)


![now](https://github.com/user-attachments/assets/f97e2cbf-3b69-488f-b286-ba6ca85cfa5d)


After:

![After](https://github.com/user-attachments/assets/ab597f35-968a-468a-a647-a4bcc797ce00)


![pr](https://github.com/user-attachments/assets/257a2617-a420-49e7-87f4-cee988a86578)


## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

tryout33
2025-05-21 18:11:14 -04:00
70745faac4 Enable strictNullChecks, eqeqeq (#436)
## Description:

Improve type safety and runtime correctness by:
1. Enabling TypeScript's
[strictNullChecks](https://www.typescriptlang.org/tsconfig/#strictNullChecks)
compiler option.
2. Replacing all loose equality operators (`==` and `!=`) with strict
equality operators (`===` and `!==`).
3. Cleaning up of type declarations, null handling logic, and equality
expressions throughout the project.

Currently, the code allows implicit assumptions that `null` and
`undefined` are interchangeable, and relies on type-coercing equality
checks that can introduce subtle bugs. These practices make it difficult
to reason about when values may be absent and hinder the effectiveness
of static analysis.

Migrating to strict null checks and enforcing strict equality
comparisons will clarify intent, reduce bugs, and make the codebase
safer and easier to maintain.

Fixes #466 

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

---------

Co-authored-by: Scott Anderson <662325+scottanderson@users.noreply.github.com>
Co-authored-by: evanpelle <openfrontio@gmail.com>
2025-05-15 16:39:40 -07:00
AotumuriandGitHub 29076f84c5 fixed team count (#654)
## Description:
fixed .w.

<img width="541" alt="スクリーンショット 2025-05-05 11 22 34"
src="https://github.com/user-attachments/assets/4c324d64-a9cd-44a8-a72b-2465849303c9"
/>

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:
aotumuri
2025-05-05 09:14:55 -07:00
AotumuriandGitHub 3d3f1261e9 display team count (#648)
## Description:
I added a display for the number of teams in public lobbies.
![スクリーンショット 2025-05-04 20 59
02](https://github.com/user-attachments/assets/ab24de77-fcac-4c2d-b272-2bc3ce29187f)
## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

aotumuri
2025-05-04 13:25:50 -07:00
Evan 118a826025 Add teams to public lobby 2025-04-02 13:46:11 -07:00
Evan 8b6895d745 add prettier import plugin 2025-03-31 13:09:27 -07:00
evanpelleandGitHub ab3f4fbac1 All players must join game before spawn (#380)
## Description:
The server stores all players that have joined, and once the game starts
it sends a list of players to all clients. Players cannot join after the
game has started. Server now generated the PlayerID instead of the
client.

The is necessary for team mode, we need to know how who is playing the
game before it starts so we can properly assign teams based on clans.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-03-30 17:04:29 -07:00
9088adeb7a Translate all out-of-game UI (start screen, lobbies, etc.) (#316)
This PR adds full translation support for all out-of-game UI elements,
including the start screen, public/private lobby modals, and other
pre-game interfaces.

All static text has been externalized to en.json and ja.json for future
language support.
If you find any spots that are not yet translated (missing from the
JSON), please let me know.
Thanks a lot!

This is a follow-up to PR
[#305](https://github.com/openfrontio/OpenFrontIO/pull/305).

---------

Co-authored-by: Cldprv <dubois.cnm@tutanota.com>
Co-authored-by: jacks0n <rosty.west89@gmail.com>
2025-03-24 17:12:04 -07:00
Ilan SchemoulandGitHub a1d0c87232 remove Game starts when ... in lobby (#233) 2025-03-13 06:02:45 -07:00
Ilan SchemoulandGitHub 07ad7912bc feat: timer starts if enough player or enough time (#229)
Avoid these huge lobbies
2025-03-12 14:18:34 -07:00
evanpelleandGitHub 33292aec5c feat: replay archived games, gamestate hash verification (#195)
create endpoint to load archived game. when joining game client first
checks if the game is active, if not it requests the game archive from
the server. the archive is sent to LocalServer to replay the game
locally. Every 10 ticks a hash is stored on the archive, and during
replay the LocalServer verifies this hash.
2025-03-09 14:24:39 -07:00
evanpelleandGitHub b77bc46a80 store lobby start time on first fetch for smoother countdown (#183) 2025-03-08 11:28:23 -08:00
Evan edcfac2fe7 give public lobbies smoother countdown, use admin token in server. 2025-03-06 19:43:56 -08:00
Evan 4c8eeb0cc1 merge branch v0.17.3 2025-03-06 15:46:57 -08:00
Evan 3a0bc594ae use api prefix 2025-03-05 18:04:22 -08:00
Bruno Jurković 8498c0d398 simple debouncer preventing join spam 2025-03-03 12:11:46 +01:00
Evan c6b16aba74 remove lobbies logging 2025-03-02 09:39:54 -08:00
Evan 38365fd9d0 configure nginx to run in container 2025-03-02 09:39:36 -08:00
Evan a029b4277f use node cluster to shard server 2025-03-02 09:39:09 -08:00
Evan f540d0302c configure nginx to run in container 2025-02-27 19:21:18 -08:00
ilan schemoul 5243d6a3e1 update the button to "Join next game" so it's clear it's a button 2025-02-27 23:01:25 +01:00
Evan 3494c54906 use node cluster to shard server 2025-02-27 10:45:30 -08:00
NewHappyRabbit d9beeb8c60 Reduced modals height on mobile, fixed public lobby button bug 2025-02-24 20:52:06 +02:00
NewHappyRabbit 9565a0cffa Added map image preview for public lobby 2025-02-18 14:52:09 +02:00
Evan f448785476 have client stop polling for public servers after game starts 2025-02-12 12:08:50 -08:00
Evan 40966ca3b9 format all files with prettier 2025-02-12 08:28:15 -08:00
Evan b3498976fb show game map name in public lobby 2025-02-09 13:15:06 -08:00
q8gazy 078619fcc4 Update PublicLobby button styling and layout 2025-02-09 09:25:01 +03:00
Evan 4ee37323f9 format codebase with prettier 2025-02-01 12:05:11 -08:00
Evan f8cc4baf7e style front page, default to prod config 2025-02-01 12:05:11 -08:00
evanpelle 3d58ef185c improve front page UI 2025-02-01 12:05:11 -08:00
evanpelle 031a452558 improve front page 2025-02-01 12:05:11 -08:00
evanpelle 633e93f21b use tailwind for frontpage 2025-02-01 12:05:11 -08:00
Evan 3aeff1df29 improve front page 2025-02-01 12:05:11 -08:00
evanpelle 0d764eb885 update gamemap, rename gamemap enum => gamemaptype 2025-02-01 12:05:11 -08:00
Evan f6b739e263 validate usernames on change, fix public lobby highlight bug, validate
strings with zod for safety
2025-01-02 09:02:23 -08:00
Mittaniandevanpelle af6c519d77 * updata validation on public games 2024-12-31 13:06:43 -08:00
evanpelle eb261fe103 make front page mobile friendly 2024-12-31 12:44:31 -08:00
evanpelle 0d3d49fdd0 use consolex in client folder 2024-12-18 14:01:34 -08:00
Evan 7669105a1b record games in gcs 2024-12-07 18:30:04 -08:00
Evan 2d2df14ae3 add GameConfig to Game 2024-12-07 09:45:39 -08:00
Evan 56d4b924fa add difficulties 2024-10-23 21:08:24 -07:00
evanpelle 42a6a2fcef can creater & join lobby 2024-10-14 20:45:31 -07:00
evanpelle 5da1c2f620 can select map private game 2024-10-12 20:54:18 -07:00