thảo luận Lập trình game online

tulanhvip

Member
Sau quãng thời gian mất cmn niềm tin, mất luôn phương hướng. Giờ quay trở lại cày cuốc những cái dang dở.
Target của mình là làm game online, multi player. Mục tiêu ban đầu sẽ xây dựng cái core server để xử lý trởn tru realtime. Hướng tới các dòng game mỗi room tầm 4-8 người đánh đối kháng nhau, turn base. Nhưng mình nghĩ làm đc realtime thì turnbase coi như xong.
Mình mạn phép lập topic này ra để anh em cũng nhau thảo luận các vấn đề tối ưu xung quanh. Mình nghĩ sẽ có các vấn đề cần quan tâm của 1 hệ thống game như sau. Đây là các keywork mình đang ngâm cứu: authoritarive server, p2p, webrtc, client sever prediction, sever reconciliation ...
Song song với việc thảo luận cùng anh em thì mình cũng sẽ start 1 pet project để hiện thực hoá những lí thuyết mình ngâm cứu đc. Source code sẽ public và có binary cho mọi người cùng theo dõi, chạy thử.
P/s: mình tạo topic này ra như kiểu nhật kí phát triển vậy, cũng là 1 động lực để code đều đặn hơn.

update 1: tạo simple car
update 2:
 

Attachments

  • 1603474797360.png
    1603474797360.png
    957.7 KB · Views: 327
Last edited:
Thiếu gì người viết rồi trên github
Viết lại làm gì fen ?
Muốn làm game thì cầm 1 cái mà làm thôi
Mấy fen cứ thích code from zero, nhìn cái công ty 25 người làm ra cái game Fall Guys, cầm Unity với Photon Network và 2 tháng bán được 7 triệu bản trên Steam

Công ty cũ của tôi Xếp luôn muốn dùng lib trả tiền, và mua cả gói support, nên làm gameonline nhanh và không lỗi
Công ty hiện tại thì Xếp luôn muốn dùng lib mã nguồn mở, dùng Nodejs với Socket.io và ...game lag thì bá đạo
 
Last edited:
Thiếu gì người viết rồi trên github
Viết lại làm gì fen ?
Muốn làm game thì cầm 1 cái mà làm thôi
Mấy fen cứ thích code from zero, nhìn cái công ty 25 người làm ra cái game Fall Guys, cầm Unity với Photon Network và 2 tháng bán được 7 triệu bản trên Steam

Công ty cũ của tôi Xếp luôn muốn dùng lib trả tiền, và mua cả gói support, nên làm gameonline nhanh và không lỗi
Công ty hiện tại thì Xếp luôn muốn dùng lib mã nguồn mở, dùng Nodejs với Socket.io và ...game lag thì bá đạo
Thư viện hay lib gì thì nó cũng support gửi gói tin online thôi thím, việc gửi như nào, optimize như nào mới là cái cần trao đổi đó thím. Em build là build cái core server. Ở đây hiểu là build ra 1 cái core để mình có thể dùng cho các project multiplayer khác nhau ngon, kiểu như có cái template ấy.
Tất nhiên em ko build lại từ đầu rồi, việc dùng thư viện dùng lib là bắt buộc với in indie rồi. Còn thím nói trên github có sẵn thì đúng thế thật, nhưng thím có muốn dùng 1 cái mà thím chả hiểu mẹ gì về nó không, muốn thêm thắt các thứ đều k hiểu. Còn game online mà nodejs với socketjs thì thím kể ra làm gì :LOL:))))))))))))
 
Có gì bác cho mình theo với, khá muốn thử sức mảng này để học hỏi thêm :D
Bác cứ theo dõi thôi, em vốn chả làm được cái gì nên chuyện nên post lên đây như 1 động lực để làm việc hiệu quả hơn. Chắc em sẽ dùng godot để code. Bác có thể tham khảo
 
Thớt tiềm năng, em cũng đang viết thử 1 cái fw nhỏ, cũng là túc tắc vừa học vừa làm ngoài giờ thôi. Mọi người rảnh thảo luận cho vui nhé. Project vẫn đang trong quá trình phát triển.
Em viết dựa vào java và công nghệ đi kèm. Ngoài ra thì cũng có viết sơ vài cái client bằng unity, cocos2dx, libgdx, phaserjs cho tiện việc debug.
https://github.com/congcoi123/tenio
 
Thớt tiềm năng, em cũng đang viết thử 1 cái fw nhỏ, cũng là túc tắc vừa học vừa làm ngoài giờ thôi. Mọi người rảnh thảo luận cho vui nhé. Project vẫn đang trong quá trình phát triển.
Em viết dựa vào java và công nghệ đi kèm. Ngoài ra thì cũng có viết sơ vài cái client bằng unity, cocos2dx, libgdx, phaserjs cho tiện việc debug.
https://github.com/congcoi123/tenio
Truất đó thím ơi. performance như thế nào thím? em sẽ ko focus vào việc build hệ thống như thím mà tập trung vào việc xây dựng cách trao đổi gói tin, sử lý logic ở phía server như nào ấy. Những cái về mặt truyền gói tin thì em dùng lib, chứ ko build lại.
 
Truất đó thím ơi. performance như thế nào thím? em sẽ ko focus vào việc build hệ thống như thím mà tập trung vào việc xây dựng cách trao đổi gói tin, sử lý logic ở phía server như nào ấy. Những cái về mặt truyền gói tin thì em dùng lib, chứ ko build lại.
Thanks thím đã quan tâm nhé.
Về hiệu năng thì mình chưa có điều kiện kiểm nghiệm thực tế, trước có triển khai 2 games nhưng đều không thành công (về mặt người chơi, doanh thu) nên đã dừng.
Hiện tại mình chỉ có thể test trên máy mình (Macbook Pro mid 2017) theo kiểu stress test: Tạo khoảng 1000 client kết nối tới server và tiến hành trao đổi tin nhắn. Kết quả thấy khả thi.
Phần kết nối mình đang sử dụng thư viện Netty để tạo các channel thay vì phải tạo các thread. Đây là cơ chế NIO (Non-blocking IO) nên hiệu suất kết nối mình đang dựa hoàn toàn vào thư viện.
Gói tin thì mình sử dụng Msgpack để nén lại, việc này tiêu tốn CPU nhưng bù lại thì kích thước gói tin giảm.
Việc trao đổi gói tin thím có thể coi trong thư mục framework của tenio và project TenIOCocos2dx.
Phần thiết kế hệ thống mình thêm vào để thử kiểm nghiệm cái fw, đang phát triển dần dần, tham vọng làm 1 game mmorpg nhỏ.
 
Thanks thím đã quan tâm nhé.
Về hiệu năng thì mình chưa có điều kiện kiểm nghiệm thực tế, trước có triển khai 2 games nhưng đều không thành công (về mặt người chơi, doanh thu) nên đã dừng.
Hiện tại mình chỉ có thể test trên máy mình (Macbook Pro mid 2017) theo kiểu stress test: Tạo khoảng 1000 client kết nối tới server và tiến hành trao đổi tin nhắn. Kết quả thấy khả thi.
Phần kết nối mình đang sử dụng thư viện Netty để tạo các channel thay vì phải tạo các thread. Đây là cơ chế NIO (Non-blocking IO) nên hiệu suất kết nối mình đang dựa hoàn toàn vào thư viện.
Gói tin thì mình sử dụng Msgpack để nén lại, việc này tiêu tốn CPU nhưng bù lại thì kích thước gói tin giảm.
Việc trao đổi gói tin thím có thể coi trong thư mục framework của tenio và project TenIOCocos2dx.
Phần thiết kế hệ thống mình thêm vào để thử kiểm nghiệm cái fw, đang phát triển dần dần, tham vọng làm 1 game mmorpg nhỏ.
Thím test trên local thì sẽ không đc chính xác cho lắm đâu. Nếu thím muốn stress test trên vps thì ping em, em gửi thím 1 con vps test thử 1 tuần xem sao.

via theNEXTvoz for iPhone
 
Game đâu phải chỉ là mỗi cái server còm.

Kiếm artist cho xịn vào cái đã.
Rồi còn kiếm cả designer nữa.

Lắm ng tưởng code đc mấy cái server back end là xong game rồi hay gì
 
Thớt tiềm năng, em cũng đang viết thử 1 cái fw nhỏ, cũng là túc tắc vừa học vừa làm ngoài giờ thôi. Mọi người rảnh thảo luận cho vui nhé. Project vẫn đang trong quá trình phát triển.
Em viết dựa vào java và công nghệ đi kèm. Ngoài ra thì cũng có viết sơ vài cái client bằng unity, cocos2dx, libgdx, phaserjs cho tiện việc debug.
https://github.com/congcoi123/tenio
Đã star cho thím
 
Em thấy thím làm ngược ngược thế nào ấy, hoặc có lẽ thím chỉ quan tâm phần engineering của một game chứ không phải là game design. Em chưa (không) thấy ai làm vậy mà thành công cả, trừ khi viết lib rồi bán chứ không phải viết game.
 
Em thấy thím làm ngược ngược thế nào ấy, hoặc có lẽ thím chỉ quan tâm phần engineering của một game chứ không phải là game design. Em chưa (không) thấy ai làm vậy mà thành công cả, trừ khi viết lib rồi bán chứ không phải viết game.
Thím nghĩ đơn giản là em làm game 2-3 năm rồi, toàn game off thôi, giờ em muốn biến các con game offline của em thành online. Nghĩ đơn giản thế thôi thím ạ. Em nghĩ ko có thằng dev nào chập chững làm game mà nhảy vào ngâm cứu mấy cái keywork em list ra ở trên đâu.
 
Ở đây hiểu là build ra 1 cái core để mình có thể dùng cho các project multiplayer khác nhau ngon, kiểu như có cái template ấy.
Mình nghĩ thím có thể tập trung vào 1 dòng game cụ thể thì tốt hơn. Multiplayer thì cũng nhiều dòng đòi hỏi các giải quyết các vấn đề khác nhau. MMORGP như Võ lâm truyền kỳ khác Liên quân. Nhiều game engine hoặc 3rd libs như Unity, godot,... đã giải quyết các vấn đề khó nhất cho thím như network congestion, physics, state sync,... Quan trọng là thím tập trung vào logic và có thể giải quyết một số thách thức kỹ thuật đặc thù.
Đấy là làm các game tàm tạm chơi được. Còn các game AAA thì dùng 3rd engine là chưa đủ, còn rất nhiều thứ phải take care. Mình nghĩ game client nhiều thách thức hơn là server. Server hoặc game engine nói chung thường viết bằng C++ vì lý do efficiency.

Vài lời. Rất lâu rồi không làm game nên giờ mình không rõ công nghệ đã ở mức nào rồi.
 
Back
Top