Chính sách quyền riêng tư
1. Nói ngắn gọn
Làng Game Việt là app chơi mấy trò dân gian với người ngồi ngay cạnh bạn: Ô ăn quan, Cờ caro, Cờ gánh, Cá ngựa, Tam cúc, Tiến lên, Cờ tướng. Muốn chơi cùng nhau thì các máy phải ở chung một mạng WiFi. Một máy đứng ra làm chủ phòng, các máy còn lại nối thẳng vào máy đó.
Chúng tôi không dựng máy chủ nào cả. Không có tài khoản, không đăng nhập, không quảng cáo, không mua trong ứng dụng, không có bộ phân tích hành vi, không có bộ theo dõi nào nhét trong app. Ván cờ của bạn đi từ máy này sang máy kia trong nhà bạn rồi thôi — nó không đi qua chỗ chúng tôi, vì chúng tôi không có chỗ nào để nó đi qua.
Nói theo cách kho ứng dụng hay dùng: chúng tôi không thu thập dữ liệu người dùng. Nhưng "không thu thập" không có nghĩa là "không có gì xảy ra trên máy bạn", nên phần dưới đây kể đúng từng thứ một.
2. Ai chịu trách nhiệm về chính sách này
Ứng dụng do Nguyen Pham phát hành. Mọi câu hỏi về quyền riêng tư, xin gửi về [email protected]. Chúng tôi cố gắng trả lời trong vòng 30 ngày.
3. Những gì chúng tôi KHÔNG làm
Để khỏi phải đọc dài, đây là danh sách những thứ app này không có:
- Không có máy chủ đám mây, không có cơ sở dữ liệu, không có API nào ở phía chúng tôi. Ván chơi của bạn chỉ đi tới đúng máy chủ phòng bạn chọn trong mạng nội bộ; chúng tôi không nhận được gì cả, vì chúng tôi không có chỗ nào để nhận.
- Có một ngoại lệ phải nói thẳng, và nó chỉ có trên Android: chức năng quét mã QR dùng bộ đọc mã vạch ML Kit của Google. Mô hình nhận dạng được đóng sẵn trong app nên ảnh từ camera không rời khỏi máy bạn, nhưng bộ ấy kéo theo mấy thành phần của Google Play Services và Firebase, và những thành phần đó có thể tự gửi số liệu chẩn đoán về Google theo cách nằm ngoài tầm kiểm soát của chúng tôi. Bản iOS không có thành phần nào của Google — nó dùng bộ nhận dạng Vision sẵn có của Apple.
- Không có tài khoản, không đăng nhập, không mật khẩu, không đăng nhập bằng mạng xã hội.
- Không thu thập họ tên thật, email, số điện thoại, địa chỉ, ngày sinh, giới tính hay bất cứ thông tin cá nhân nào. App không có chỗ nào để bạn nhập những thứ đó.
- Không đọc danh bạ, ảnh, tệp, lịch, tin nhắn, micro, sức khoẻ, vị trí GPS.
- Không có quảng cáo, không có mạng quảng cáo, không dùng mã quảng cáo của điện thoại (IDFA / Advertising ID).
- Không có bộ phân tích hành vi (Firebase Analytics, Google Analytics, Facebook SDK, AppsFlyer, Adjust… — không có cái nào).
- Không có bộ báo lỗi tự động (Crashlytics, Sentry… — không có cái nào). App hỏng thì chúng tôi cũng không biết trừ khi bạn viết thư kể.
- Không mua trong ứng dụng, không đăng ký thuê bao, không thanh toán, không tiền ảo, không cá cược. Tam cúc và Tiến lên trong app là trò bài chơi lấy vui, thắng thua tính bằng điểm trong ván, không dính đến tiền. Tiến lên có tính thối heo và cóng, nhưng đó là điểm phạt cuối ván, đo bằng đúng đơn vị của trò chơi — cùng thang với số lá còn trên tay — chứ không phải tiền: không ai đặt gì trước ván để mà mất, và hết ván là con số ấy biến mất cùng phòng.
- Không có khung chat, không có bình luận, không có đường dẫn ra web, không có nội dung do người lạ tải lên.
- Không bán, không cho thuê, không chia sẻ dữ liệu với ai — vì không có dữ liệu nào ở phía chúng tôi để mà bán.
4. Những gì THỰC SỰ xảy ra khi bạn chơi
Phần này là phần quan trọng nhất. Chúng tôi kể đúng từng thứ, kể cả những thứ nghe rất nhỏ.
4.1. Biệt danh bạn đặt
Lần đầu mở app, máy tự đặt cho bạn một biệt danh vui vui (kiểu "Mèo Lém", "Cò Nhanh"). Bạn chạm vào để đổi thành gì cũng được, tối đa 20 ký tự. Biệt danh này:
- được lưu trên máy bạn để lần sau mở app không phải gõ lại;
- được gửi sang các máy khác trong cùng phòng chơi — đó là bản chất của việc chơi cùng nhau, không có tên thì không biết ai đang tới lượt;
- hiện ra trên mạng WiFi khi bạn tạo phòng, xem mục 4.3.
Vì biệt danh do bạn tự gõ, bạn hoàn toàn quyết định nó nói gì về mình. Chúng tôi khuyên đặt biệt danh, đừng gõ họ tên đầy đủ, nhất là với máy của trẻ con. Đổi lúc nào cũng được, ngay ở màn hình chính.
4.2. Mã người chơi sinh ngẫu nhiên trên máy
Lần đầu mở app, máy tự sinh một chuỗi 16 ký tự ngẫu nhiên (kiểu k3f9a2m0z1x7c5b8) và cất vào máy. Chuỗi này chỉ dùng vào một việc: nhận ra "vẫn là người vừa nãy" khi bạn rớt mạng giữa ván rồi vào lại, để bạn ngồi đúng ghế cũ thay vì bị coi là người mới và bị chặn ở cửa vì phòng đã đủ người.
Về chuỗi này:
- Nó không phải mã quảng cáo của điện thoại, không phải số IMEI, không phải mã thiết bị do hệ điều hành cấp. App tự bốc ngẫu nhiên ra, không đọc gì từ máy.
- Nó không gắn với tài khoản nào, không gắn với email, số điện thoại hay tên thật.
- Nó chỉ được gửi tới đúng máy chủ phòng mà bạn chủ động vào, trong lúc bắt tay vào phòng. Không gửi đi đâu khác.
- Gỡ app là nó mất khỏi máy. Cài lại thì app bốc một chuỗi mới hoàn toàn và không có cách nào nối chuỗi mới với chuỗi cũ — trừ một trường hợp: nếu bạn đang bật sao lưu thiết bị, chuỗi cũ có thể nằm trong bản sao lưu iCloud hoặc Google của chính bạn và được khôi phục về. Xem mục 5.
Chúng tôi không nhận được chuỗi này, không lưu nó ở đâu ngoài máy bạn, và không dùng nó để theo dõi bất cứ điều gì.
4.3. Địa chỉ IP nội bộ và tên phòng trên mạng nhà
Khi bạn bấm Tạo phòng, app mở một cổng mạng trên máy bạn và rao lên mạng WiFi đang dùng một mẩu tin để bạn bè dò thấy. Mẩu tin ấy gồm:
- tên phòng — mặc định là "Phòng của <biệt danh của bạn>";
- cổng mạng đang mở (một cổng ngẫu nhiên do hệ điều hành cấp);
- mã trò đang chơi và số phiên bản giao thức.
Kèm theo đó, hệ điều hành tự rao địa chỉ IP nội bộ (kiểu 192.168.1.7) và tên máy của bạn (kiểu iPhone-cua-Binh.local). Tên máy do hệ điều hành đặt, app không sửa. Riêng địa chỉ IP nội bộ thì app có đọc — nó hỏi hệ điều hành địa chỉ IPv4 của máy rồi hiện lên màn hình phòng, để ai không quét được mã QR thì gõ tay địa chỉ ấy mà vào. Hiện lên màn hình là hết; app không lưu lại và không gửi đi đâu.
Điều đó có nghĩa là: trong lúc phòng đang mở, mọi thiết bị nối cùng WiFi đều có thể thấy tên phòng — tức là thấy biệt danh bạn đặt — kể cả người không vào chơi. Đây là cách duy nhất để "tìm phòng quanh đây" hoạt động được. Đóng phòng là app ngừng rao ngay.
Địa chỉ IP nội bộ này là địa chỉ trong mạng nhà bạn, không phải địa chỉ IP công cộng, và nó chỉ thấy được từ trong mạng ấy. Nó không đi ra Internet và chúng tôi không nhìn thấy nó.
Còn khi bạn vào phòng người khác, máy bạn hiện ra với máy chủ phòng bằng đúng những gì mọi kết nối mạng đều để lộ: địa chỉ IP nội bộ và cổng. Cộng thêm biệt danh và mã người chơi ở hai mục trên.
4.4. Mã QR
Chủ phòng có thể hiện một mã QR để bạn bè quét cho nhanh. Mã ấy chứa địa chỉ IP nội bộ, cổng, tên phòng và mã trò — đúng những thứ đã rao trên WiFi, không hơn. Nếu tên phòng có tên thật của bạn thì đừng đăng ảnh chụp mã QR đó lên mạng xã hội; dù sao địa chỉ trong đó cũng chỉ dùng được bởi người đang ở trong mạng nhà bạn.
4.5. Camera
App xin quyền camera chỉ để quét mã QR vào phòng. Camera chỉ bật đúng lúc bạn tự mở màn hình quét, và tắt ngay khi bạn thoát khỏi màn hình đó.
- App không chụp ảnh, không quay phim, không lưu bất cứ khung hình nào.
- Hình ảnh từ camera không được gửi đi đâu. Việc giải mã QR làm ngay trên máy; thứ duy nhất app lấy ra là dòng chữ trong mã.
- Nếu bạn không cho quyền camera, app vẫn dùng được bình thường: màn hình quét báo rõ lý do kèm nút chuyển sang nhập tay địa chỉ, và vẫn còn cách dò phòng quanh đây. (Hai cách này chạy qua mạng nội bộ, nên trên iPhone/iPad vẫn cần quyền Mạng nội bộ ở mục 6.)
4.6. Âm thanh
App có nút bật/tắt tiếng. Lựa chọn ấy được nhớ trên máy bạn. App chỉ phát tiếng, các tệp tiếng nằm sẵn trong app; app không thu tiếng và không xin quyền micro.
4.7. Chơi một mình với máy
Chọn "Chơi với máy" thì không có mạng nào tham gia cả. Không mở cổng, không rao lên WiFi, không nối vào đâu. Máy tính nước đi ngay trên điện thoại của bạn.
4.8. Nội dung ván chơi
Trạng thái ván — bàn cờ, quân bài, xúc xắc, điểm — chỉ đi giữa các máy trong phòng. Ván chơi không được ghi lại: đóng app là trạng thái ván biến mất, app không lưu lịch sử ván, không lưu bảng điểm, không ghi tệp nhật ký nào lên máy.
Có một thứ nhỏ nên kể cho đủ: lúc chạy, app in vài dòng kỹ thuật ra nhật ký chung của hệ điều hành (kiểu "đang lắng nghe tại 192.168.1.7:52345") để tiện dò lỗi. Những dòng ấy không thành tệp riêng của app, không gửi đi đâu, và nằm trong nhật ký hệ thống của máy bạn theo cách hệ điều hành tự quản.
Riêng với Tam cúc và Tiến lên, máy chủ phòng lọc trạng thái trước khi gửi cho từng người: bài trên tay người khác không hề đi qua đường truyền, chứ không phải gửi hết rồi che ở giao diện. Số lá còn lại thì vẫn gửi, vì đó là thứ ai ngồi cùng bàn cũng đếm được.
5. Dữ liệu lưu trên máy bạn
App lưu đúng bốn mẩu dữ liệu, bằng kho cài đặt tiêu chuẩn của hệ điều hành (shared_preferences — tức UserDefaults trên iOS/macOS và SharedPreferences trên Android). Cả bốn nằm trong vùng riêng của app trên máy bạn và không mẩu nào tới tay chúng tôi hay một bên thứ ba nào — chúng tôi không có máy chủ để nhận. Hai trong bốn mẩu có đi sang máy của người chơi cùng khi bạn vào phòng; cột cuối trong bảng ghi rõ mẩu nào.
| Mẩu dữ liệu | Là gì | Vì sao cần | Rời khỏi máy không |
|---|---|---|---|
player_name | Biệt danh bạn đặt | Hiện tên bạn trong phòng | Có — gửi cho các máy trong phòng, và hiện trong tên phòng khi rao trên WiFi |
player_id | Chuỗi 16 ký tự ngẫu nhiên | Vào lại đúng ghế cũ sau khi rớt mạng | Có — gửi cho đúng máy chủ phòng bạn vào |
sound_on | Bật hay tắt tiếng | Nhớ lựa chọn của bạn | Không |
manual_sow | Ở Ô ăn quan, tự rải sỏi hay để máy rải | Nhớ lựa chọn của bạn | Không |
Ngoài bốn mẩu này, app không lưu gì khác lên máy.
Về bản sao lưu của máy. Kho cài đặt nói trên được hệ điều hành đưa vào bản sao lưu thiết bị theo mặc định — iCloud hoặc sao lưu qua máy tính trên iPhone, sao lưu Google trên Android. Nghĩa là biệt danh, mã người chơi và lựa chọn tiếng có thể theo bản sao lưu lên tài khoản iCloud hoặc tài khoản Google của chính bạn, rồi quay về khi bạn đổi máy hoặc cài lại app. Chuyện ấy nằm giữa bạn với Apple hoặc Google, theo chính sách sao lưu của họ; chúng tôi không chạm vào và cũng không nhìn thấy. Không muốn thì tắt sao lưu cho riêng app này trong phần cài đặt sao lưu của máy.
6. Quyền ứng dụng xin, và xin để làm gì
Trên iPhone / iPad
| Quyền | Dùng để làm gì |
|---|---|
| Mạng nội bộ (Local Network) | Tìm phòng của bạn bè trên cùng WiFi và nối vào. iOS hỏi bạn một lần, ngay lần đầu app cần tới mạng nhà. Từ chối thì iOS chặn mọi liên lạc với máy khác trong mạng — cả ba đường vào phòng đều tắc, kể cả gõ tay địa chỉ. Bạn vẫn chơi với máy được như thường; muốn chơi cùng bạn bè thì bật lại ở Cài đặt → Làng Game Việt → Mạng nội bộ. |
| Camera | Chỉ để quét mã QR vào phòng. Xem mục 4.5. |
App có khai dịch vụ Bonjour tên _langviet._tcp — đó là "kênh" riêng để app tìm đúng phòng của app này, không dùng để nghe ngóng thiết bị khác trong nhà.
Trên Android
| Quyền | Dùng để làm gì |
|---|---|
INTERNET | Android bắt buộc phải khai quyền này thì app mới mở được kết nối mạng, kể cả kết nối chỉ trong nhà. App không nối ra Internet, chỉ nối tới máy chủ phòng trong mạng nhà. Đây là quyền thường, máy không hỏi bạn. |
ACCESS_NETWORK_STATE, ACCESS_WIFI_STATE, CHANGE_WIFI_MULTICAST_STATE | Cần để dò và rao phòng trên mạng nội bộ. Quyền thường, máy không hỏi. |
NEARBY_WIFI_DEVICES | Từ Android 13 trở lên, đây là quyền để dò thiết bị quanh đây. App khai kèm cờ neverForLocation, nghĩa là cam kết với hệ điều hành rằng không dùng nó để suy ra vị trí của bạn. |
ACCESS_FINE_LOCATION (chỉ tới Android 12) | Các bản Android cũ đòi quyền vị trí thì mới cho quét mạng nội bộ. App không đọc toạ độ của bạn, không có mã nào lấy vị trí; quyền này chỉ để hệ điều hành cho phép dò phòng. Từ Android 13 trở lên quyền này không còn được khai nữa. |
| Camera | Chỉ để quét mã QR vào phòng. Xem mục 4.5. |
7. Thư viện bên thứ ba
App dùng vài thư viện mã nguồn mở để làm việc kỹ thuật. Không thư viện nào trong số này gửi dữ liệu ván chơi hay dữ liệu cá nhân của bạn đi đâu, và không có bộ quảng cáo hay bộ phân tích hành vi nào. Một ngoại lệ duy nhất về đường truyền ra ngoài đã nêu ở mục 3 và ghi lại ở dòng cuối bảng:
| Thư viện | Làm gì trong app |
|---|---|
bonsoir | Rao và dò phòng qua Bonjour (iOS/macOS) và NSD (Android). Chỉ chạy trong mạng nội bộ. |
shared_preferences | Lưu bốn mẩu dữ liệu ở mục 5 vào kho cài đặt của máy. |
qr_flutter | Vẽ mã QR của phòng lên màn hình chủ phòng. Vẽ tại chỗ, không gọi dịch vụ nào. |
mobile_scanner | Đọc mã QR bằng camera. Giải mã ngay trên máy. Trên Android nó dùng ML Kit của Google, trên iOS dùng Vision của Apple — xem dòng dưới. |
| Google ML Kit Barcode Scanning<br>(chỉ có trên Android) | mobile_scanner kéo theo bộ này, cùng vài thành phần Google Play Services và Firebase. Mô hình nhận dạng đóng sẵn trong app nên ảnh camera không rời khỏi máy, nhưng các thành phần ấy có thể tự gửi số liệu chẩn đoán về Google. Bản iOS không có thành phần Google nào. |
audioplayers | Phát các tệp tiếng có sẵn trong app. |
cupertino_icons | Bộ hình biểu tượng. |
Chúng tôi cố tình chọn cách sinh tiếng bằng script và tự vẽ giao diện, không tải nội dung từ máy chủ ngoài, nên app chạy trọn vẹn khi máy không có Internet.
8. An toàn thông tin — nói thẳng
Đường truyền giữa các máy trong ván là dữ liệu JSON trần trên TCP, không mã hoá. Đây là lựa chọn có chủ ý: app chạy trong mạng nhà, không cần chứng chỉ, không cần máy chủ, và cài đặt xong là chơi.
Điều đó có nghĩa là: ai có quyền trên mạng WiFi đó — người quản trị mạng, hoặc người biết bắt gói tin — về lý thuyết đọc được biệt danh và các nước đi trong ván. Một ván ô ăn quan chẳng có gì bí mật, nhưng bạn nên biết trước. Vì vậy:
- Đừng đặt biệt danh chứa thông tin bạn không muốn ai đọc.
- Nếu ngại, chỉ chơi trên WiFi nhà mình hoặc điểm phát sóng của chính bạn, đừng chơi trên WiFi quán xá hay WiFi công cộng.
Mặt khác, vì dữ liệu không rời khỏi mạng nội bộ và không có máy chủ nào của chúng tôi giữ nó, rủi ro kiểu "công ty bị lộ cơ sở dữ liệu người dùng" không tồn tại ở đây — chúng tôi không có cơ sở dữ liệu nào để mà lộ.
9. Trẻ em
App làm ra để cả nhà chơi cùng, không có nội dung bạo lực, không cờ bạc ăn tiền, không nội dung người lớn. Không có quảng cáo, không mua trong ứng dụng, không có khung chat, không có đường dẫn ra web, không có nội dung do người lạ tải lên.
Vì app không thu thập dữ liệu của bất kỳ ai, nên cũng không có dữ liệu trẻ em nào được thu thập — kể cả trẻ dưới 13 tuổi (COPPA của Hoa Kỳ), trẻ dưới ngưỡng tuổi mà GDPR để mỗi nước châu Âu tự đặt (13 tới 16 tuỳ nước), hay trẻ dưới 16 tuổi theo Luật Trẻ em và Nghị định 13/2023/NĐ-CP của Việt Nam.
Chỗ duy nhất trẻ tự gõ chữ là ô đặt biệt danh. Phụ huynh nên nhắc con đặt biệt danh chứ đừng gõ họ tên thật, vì tên ấy hiện ra với các máy cùng WiFi (mục 4.3). Người lớn có thể đổi lại biệt danh bất cứ lúc nào.
Nếu bạn tin rằng con mình đã cung cấp thông tin cá nhân cho chúng tôi, xin cứ viết thư về [email protected]. Nhưng thực tế chúng tôi không nhận được gì cả: không có đường nào để dữ liệu đi từ máy của con bạn tới chúng tôi.
10. Quyền của bạn và cách xoá dữ liệu
Luật ở nhiều nơi — Nghị định 13/2023/NĐ-CP của Việt Nam, GDPR của châu Âu, CCPA/CPRA của California — cho bạn quyền được biết, được xem, được sửa, được xoá, được mang dữ liệu đi, được phản đối việc xử lý dữ liệu, và được không bị bán dữ liệu.
Chúng tôi tôn trọng đầy đủ các quyền ấy. Chỉ có điều: chúng tôi không giữ dữ liệu nào của bạn, nên không có gì để chúng tôi trích xuất, sửa hay xoá theo yêu cầu. Nói theo chữ nghĩa của GDPR: vì không có dữ liệu nào tới tay chúng tôi, chúng tôi không đóng vai "bên kiểm soát dữ liệu" với bất kỳ dữ liệu nào của bạn. Toàn bộ dữ liệu nằm trên máy bạn, và bạn tự làm được ngay:
- Đổi biệt danh: chạm vào tên mình ở màn hình chính, gõ tên mới, bấm Lưu.
- Xoá sạch mọi thứ app lưu: gỡ app. Cả iOS lẫn Android đều xoá kèm phần dữ liệu app lưu trên máy. Nếu bạn đang bật sao lưu thiết bị thì bốn mẩu ấy vẫn có thể còn trong bản sao lưu iCloud hoặc Google của bạn và quay về lúc cài lại — muốn dứt hẳn thì tắt sao lưu cho app này trước khi gỡ (mục 5).
- Xoá mà không gỡ app (Android): Cài đặt → Ứng dụng → Làng Game Việt → Bộ nhớ → Xoá dữ liệu.
- Xoá mà không gỡ app (iOS): iOS không cho xoá riêng dữ liệu app, nên cách duy nhất là gỡ app rồi cài lại. Cài lại là app coi bạn như người mới hoàn toàn — trừ khi bản sao lưu iCloud khôi phục lại phần cài đặt cũ, xem mục 5.
- Rút quyền camera hoặc quyền mạng nội bộ: Cài đặt của máy → Làng Game Việt → tắt quyền tương ứng.
Nếu bạn vẫn muốn gửi yêu cầu chính thức về quyền riêng tư, cứ viết cho [email protected]; chúng tôi sẽ trả lời trong vòng 30 ngày, kể cả khi câu trả lời là "chúng tôi không giữ gì của bạn".
11. Lưu giữ dữ liệu bao lâu
- Bốn mẩu dữ liệu ở mục 5: nằm trên máy bạn cho tới khi bạn xoá hoặc gỡ app; nếu bạn bật sao lưu máy thì chúng còn nằm trong bản sao lưu iCloud hoặc Google của bạn theo thời hạn do Apple / Google đặt.
- Trạng thái ván chơi: chỉ tồn tại trong bộ nhớ khi app đang chạy, đóng app là hết.
- Ở phía chúng tôi: không có gì, nên không có thời hạn lưu giữ nào.
12. Chuyển dữ liệu ra nước ngoài
Không có. Dữ liệu không rời khỏi mạng nội bộ của bạn, nên cũng không đi qua biên giới nào.
13. Thay đổi chính sách
Nếu sau này app có thêm tính năng làm thay đổi những điều trên, chúng tôi sẽ sửa tài liệu này và ghi lại ngày cập nhật ở đầu trang. Thay đổi lớn thì phần "Có gì mới" của bản cập nhật sẽ nói rõ, trước khi tính năng ấy chạy. Bản mới nhất luôn ở https://app.359258.net/LangGameViet/privacy-policy.html.
14. Liên hệ
Nguyen Pham Email: [email protected]
Privacy Policy
1. The short version
Làng Game Việt lets you play traditional Vietnamese games with the people sitting next to you: Ô ăn quan (mancala), Cờ caro (gomoku), Cờ gánh, Cá ngựa (ludo), Tam cúc (a folk card game), Tiến lên (a shedding game on a 52-card deck) and Cờ tướng (xiangqi). To play together, the devices must be on the same Wi-Fi network. One device hosts the room; the others connect straight to it.
We run no servers. There are no accounts, no sign-in, no ads, no in-app purchases, no analytics, and no trackers of any kind inside the app. Your game travels from one device to another inside your own home network and stops there — it does not pass through us, because there is nothing of ours for it to pass through.
In app-store language: we do not collect user data. But "we collect nothing" is not the same as "nothing happens on your device", so the rest of this document spells out exactly what does.
2. Who is responsible
The app is published by Nguyen Pham. For any privacy question, write to [email protected]. We aim to answer within 30 days.
3. What we do NOT do
The short list, so you don't have to read further:
- No cloud server, no database, no API on our side. Your game travels only to the room host you choose on your local network; nothing reaches us, because there is nothing of ours for it to reach.
- There is one exception we want to state plainly, and it exists only on Android: the QR scanning feature uses Google's ML Kit barcode scanner. The recognition model is bundled inside the app, so camera images never leave your device — but that component pulls in parts of Google Play Services and Firebase, and those parts may send diagnostic data to Google in ways we do not control. The iOS build contains no Google components at all; it uses Apple's built-in Vision framework instead.
- No accounts, no sign-in, no passwords, no social login.
- We do not collect your real name, email, phone number, address, date of birth, gender or any other personal information. The app has nowhere for you to type any of that.
- We do not read your contacts, photos, files, calendar, messages, microphone, health data or GPS location.
- No ads, no ad networks, no use of the device advertising identifier (IDFA / Advertising ID).
- No analytics SDK (no Firebase Analytics, Google Analytics, Facebook SDK, AppsFlyer, Adjust — none of them).
- No crash-reporting SDK (no Crashlytics, no Sentry). If the app crashes, we do not find out unless you write and tell us.
- No in-app purchases, no subscriptions, no payments, no virtual currency, no gambling. Tam cúc and Tiến lên in this app are card games played for fun; the score lives inside the round and has nothing to do with money. Tiến lên does score the traditional end-of-hand penalties ("thối heo" and "cóng"), but they are penalty points in the game's own unit — the same scale as the cards left in your hand — not stakes: nothing is put up before a hand, and the number disappears with the room.
- No chat box, no comments, no outbound web links, no content uploaded by strangers.
- We do not sell, rent or share your data with anyone — there is no data on our side to sell.
4. What ACTUALLY happens while you play
This is the important part. We list every item, including the small ones.
4.1. The nickname you choose
The first time you open the app, the device gives you a playful nickname (things like "Mèo Lém", "Cò Nhanh"). Tap it to change it to anything you like, up to 20 characters. This nickname is:
- stored on your device, so you don't have to type it again next time;
- sent to the other devices in the same room — that is what playing together means; without a name nobody can tell whose turn it is;
- visible on the Wi-Fi network while you host a room, see section 4.3.
Because you type the nickname yourself, you decide entirely what it says about you. We recommend a nickname rather than your full legal name, especially on a child's device. You can change it at any time from the home screen.
4.2. A randomly generated player code stored on the device
The first time you open the app, the device generates a random 16-character string (something like k3f9a2m0z1x7c5b8) and stores it locally. It serves one purpose: recognising that you are "the same person as a moment ago" when your connection drops mid-game, so you get your original seat back instead of being treated as a newcomer and turned away because the room is full.
About that string:
- It is not the device advertising identifier, not an IMEI, not any identifier issued by the operating system. The app picks it at random and reads nothing from your device.
- It is not linked to any account, email, phone number or real name.
- It is sent only to the room host you deliberately join, during the join handshake. It goes nowhere else.
- Uninstalling the app removes it from the device. Reinstalling generates a completely new one, with no way to link it to the old one — with one exception: if device backup is switched on, the old string may sit in your own iCloud or Google backup and come back with a restore. See section 5.
We never receive this string, we store it nowhere except on your device, and we do not use it to track anything.
4.3. Local IP address and room name on your home network
When you tap Create room, the app opens a network port on your device and advertises a small record on the current Wi-Fi network so your friends can find it. That record contains:
- the room name — by default "Phòng của <your nickname>" ("<your nickname>'s room");
- the network port in use (a random port assigned by the operating system);
- the game code being played and the protocol version number.
Alongside it, the operating system itself advertises your local IP address (such as 192.168.1.7) and your device name (such as iPhone-cua-Binh.local). The device name is set by the operating system and the app does not change it. The local IP address, however, the app does read — it asks the operating system for the device's IPv4 address and shows it on the room screen, so anyone who cannot scan the QR code can type that address in by hand. Showing it on screen is where it ends: the app neither stores it nor sends it anywhere.
This means: while a room is open, every device on the same Wi-Fi can see the room name — and therefore the nickname you chose — including people who never join the game. This is the only way "find rooms nearby" can work. Closing the room stops the advertisement immediately.
This local IP address belongs to your home network, is not your public IP address, and is only visible from inside that network. It never reaches the internet and we never see it.
When you join someone else's room, your device is visible to the host in the way any network connection is visible: local IP address and port. Plus the nickname and player code described above.
4.4. The QR code
The host can display a QR code so friends can join quickly. It contains the local IP address, port, room name and game code — exactly what is already advertised on the Wi-Fi, nothing more. If the room name contains your real name, don't post a screenshot of that QR code on social media; even so, the address inside it is only usable by someone already on your home network.
4.5. Camera
The app asks for camera permission only to scan a room's QR code. The camera turns on only when you open the scanner screen yourself, and turns off as soon as you leave it.
- The app takes no pictures, records no video and saves no frames.
- Camera images are never transmitted anywhere. Decoding happens on the device; the only thing the app extracts is the text inside the code.
- If you deny camera permission, the app still works: the scanner screen explains why and offers a button to type the room address by hand, and discovering nearby rooms still works. (Both run over the local network, so on iPhone/iPad they still need the Local Network permission described in section 6.)
4.6. Sound
The app has a mute button, and remembers your choice on the device. The app only plays sound from files bundled inside it; it never records sound and never asks for microphone permission.
4.7. Playing solo against the computer
If you choose "Play against the computer", no networking happens at all. No port is opened, nothing is advertised on the Wi-Fi, no connection is made. The computer works out its moves on your own device.
4.8. Game content
Game state — the board, the cards, the dice, the score — travels only between the devices in the room. Games are not recorded: closing the app discards the state, the app keeps no match history, no leaderboard, and writes no log files to your device.
One small thing, for completeness: while running, the app prints a few technical lines to the operating system's own log (things like "listening on 192.168.1.7:52345") to help with debugging. Those lines are not written to any file of the app's, are never sent anywhere, and stay in your device's system log, handled by the operating system.
For Tam cúc and Tiến lên specifically, the host filters the state before sending it to each player: other players' hands never travel over the wire at all, rather than being sent to everyone and merely hidden in the interface. The number of cards each player still holds is sent, because anyone at the table can count that anyway.
5. Data stored on your device
The app stores exactly four items, using the operating system's standard settings store (shared_preferences, which is UserDefaults on iOS/macOS and SharedPreferences on Android). All four live in the app's private area on your device, and none of them ever reaches us or any third party — we have no server to receive them. Two of the four do travel to the devices of the people you play with when you join a room; the last column of the table says which.
| Item | What it is | Why it exists | Does it leave the device |
|---|---|---|---|
player_name | The nickname you chose | Shows who you are inside the room | Yes — sent to the devices in your room, and included in the room name advertised on the Wi-Fi |
player_id | A random 16-character string | Restores your seat after a dropped connection | Yes — sent to the room host you join |
sound_on | Sound on or off | Remembers your choice | No |
manual_sow | In Ô ăn quan, whether you sow the stones by hand or let the app do it | Remembers your choice | No |
Nothing else is written to your device.
About device backups. That settings store is included in the device backup by default — iCloud or a computer backup on iPhone, Google backup on Android. So your nickname, player code and sound setting may travel into your own iCloud or Google account backup and come back when you switch phones or reinstall the app. That is between you, Apple and Google, under their backup policies; we neither touch it nor see it. If you would rather it did not happen, turn backup off for this app in your device's backup settings.
6. Permissions the app requests, and why
On iPhone / iPad
| Permission | What it is for |
|---|---|
| Local Network | Finding your friends' rooms on the same Wi-Fi and connecting to them. iOS asks once, the first time the app needs the home network. If you decline, iOS blocks all contact with other devices on the network — all three ways into a room stop working, including typing the address by hand. You can still play against the computer; to play with friends, switch it back on in Settings → Làng Game Việt → Local Network. |
| Camera | Only for scanning a room's QR code. See section 4.5. |
The app declares a Bonjour service named _langviet._tcp — a dedicated channel for finding this app's own rooms, not a way to look around at other devices in your home.
On Android
| Permission | What it is for |
|---|---|
INTERNET | Android requires this permission before an app can open any network connection including one that never leaves the house. The app makes no internet calls; it connects only to the room host on your home network. It is a normal permission; the system does not prompt you. |
ACCESS_NETWORK_STATE, ACCESS_WIFI_STATE, CHANGE_WIFI_MULTICAST_STATE | Needed to advertise and discover rooms on the local network. Normal permissions, no prompt. |
NEARBY_WIFI_DEVICES | On Android 13 and later, this is the permission for discovering nearby devices. The app declares it with the neverForLocation flag, which is a formal commitment to the operating system that it is not used to derive your location. |
ACCESS_FINE_LOCATION (up to Android 12 only) | Older Android versions required location permission before allowing local-network discovery. The app never reads your coordinates; there is no code that requests a location fix. The permission exists purely so the system allows room discovery. From Android 13 onwards it is no longer declared. |
| Camera | Only for scanning a room's QR code. See section 4.5. |
7. Third-party libraries
The app uses a few open-source libraries for technical work. None of them sends your game data or personal information anywhere, and none of them is an advertising or behavioural analytics SDK. The one exception regarding outbound traffic is stated in section 3 and repeated in the last row of the table:
| Library | What it does in the app |
|---|---|
bonsoir | Advertises and discovers rooms via Bonjour (iOS/macOS) and NSD (Android). Local network only. |
shared_preferences | Stores the four items in section 5 in the device settings store. |
qr_flutter | Draws the room's QR code on the host's screen. Drawn locally, no service call. |
mobile_scanner | Reads QR codes with the camera. Decoding happens on the device. On Android it uses Google's ML Kit, on iOS Apple's Vision — see the row below. |
| Google ML Kit Barcode Scanning<br>(Android only) | Pulled in by mobile_scanner, together with parts of Google Play Services and Firebase. The recognition model is bundled inside the app so camera images never leave the device, but those components may send diagnostic data to Google. The iOS build contains no Google components. |
audioplayers | Plays sound files bundled inside the app. |
cupertino_icons | Icon font. |
We deliberately generate the sounds with a script and draw the interface ourselves rather than fetching content from a remote server, so the app works completely offline.
8. Security — stated plainly
Traffic between devices during a game is plain JSON over TCP, not encrypted. This is a deliberate choice: the app runs inside your home network, needs no certificates, needs no server, and works the moment it is installed.
That means anyone with privileged access to that Wi-Fi network — a network administrator, or someone capable of capturing packets — could in principle read nicknames and game moves. A game of mancala is hardly a secret, but you should know this in advance. So:
- Don't put anything into your nickname that you wouldn't want read.
- If it concerns you, play only on your own home Wi-Fi or your own hotspot, not on café or public Wi-Fi.
On the other hand, because the data never leaves your local network and no server of ours holds it, the familiar risk of "company leaks its user database" does not apply here — we have no database to leak.
9. Children
The app is made for families to play together. It contains no violence, no gambling for money, and no adult content. There are no ads, no in-app purchases, no chat box, no outbound web links, and no content uploaded by strangers.
Because the app collects no data from anyone, no children's data is collected either — including from children under 13 (COPPA, United States), children below whatever age each EU member state sets under the GDPR (between 13 and 16), or children under 16 under Vietnam's Law on Children and Decree 13/2023/ND-CP.
The only place a child types free text is the nickname field. Parents should encourage a nickname rather than a real full name, because that name is visible to devices on the same Wi-Fi (section 4.3). An adult can change it back at any time.
If you believe your child has provided personal information to us, please write to [email protected]. In practice we receive nothing: there is no path for data to travel from your child's device to us.
10. Your rights, and how to delete your data
Laws in many places — Vietnam's Decree 13/2023/ND-CP, the EU GDPR, California's CCPA/CPRA — give you the right to know, to access, to correct, to delete, to port your data, to object to processing, and not to have your data sold.
We respect all of those rights. The one wrinkle is that we hold no data about you, so there is nothing for us to export, correct or delete on request. In GDPR terms: since no data ever reaches us, we are not a data controller for any data of yours. Everything lives on your device, and you can act on it yourself right now:
- Change your nickname: tap your name on the home screen, type a new one, save.
- Delete everything the app stored: uninstall the app. Both iOS and Android remove the app's stored data from the device with it. If device backup is on, those four items may still sit in your iCloud or Google backup and return on reinstall — to be rid of them entirely, turn backup off for this app before uninstalling (section 5).
- Delete without uninstalling (Android): Settings → Apps → Làng Game Việt → Storage → Clear data.
- Delete without uninstalling (iOS): iOS does not offer per-app data clearing, so the only way is to delete and reinstall the app. After reinstalling, the app treats you as an entirely new person — unless an iCloud backup restores the old settings, see section 5.
- Revoke camera or local network permission: device Settings → Làng Game Việt → turn the relevant permission off.
If you would still like to submit a formal privacy request, write to [email protected]; we will answer within 30 days, even if the answer is "we hold nothing of yours".
11. How long data is kept
- The four items in section 5: on your device until you delete them or uninstall the app; if device backup is on, they also sit in your own iCloud or Google backup for as long as Apple or Google keeps it.
- Game state: only in memory while the app is running; gone when you close it.
- On our side: nothing, so there is no retention period.
12. International data transfers
None. The data never leaves your local network, so it never crosses a border.
13. Changes to this policy
If a future feature changes anything described above, we will update this document and record the update date at the top. For any significant change, the release notes of that update will say so before the feature reaches you. The current version always lives at https://app.359258.net/LangGameViet/privacy-policy.html.
14. Contact
Nguyen Pham Email: [email protected]