root1984
<b><font color=DarkOrange>King of the Elf</font></
- 29/7/03
- 1,120
- 1
Đề nghị mod cho lên chú ý kẻo mất.
Hướng dẫn ban đầu cho những người muốn tạo game MMORPG (bài viết của Radu Privantu)
Bài viết này sẽ tập trung vào bước cơ bản đầu tiên để tạo nên một game Multiplayer Online Role Playing Games (MMORPG). Đó là bước chuẩn bị để phát triển một game MMORPG, với kinh nghiệm và tài nguyên hạn chế($$$). Sau khi đọc xong bài viết này, bạn sẽ biêt bắt đầu như thế nào, sẽ biết cái gì nên làm cái gì ko nên làm. Và kỹ năng và tài nguyên(resources) mà bạn có là điều tối quan trọng. Nếu ko có kỹ năng thì việc cố gắng xây dựng một game MMORPG chỉ gây lãng phí thời gian của bạn. Ở đây chúng tôi chỉ đề cập tới vấn đề kỹ thuật. Để làm được một game MMORPG còn cần rất nhiều những vấn đề khác như Role Play(luật chơi), phát triển game, những vấn đề liên quan đến phân tích thiết kế, xuất bản game, thử nghiệm, quảng bá sản phẩm sẽ được đề cập tới ở các chủ đề khác.
Bước I: Quyết định về kỹ năng:
I, Những yêu cầu về kỹ năng cơ bản để tạo 1 game MMORPG(Level I):
1. Biết được ít nhất một ngôn ngữ lập trình. C++ là sự lựa chọn tốt nhất đây là ngôn ngữ thông dụng để làm 1 game. VISUAL BASIC, JAVA hoặc C# cũng có thể làm việc tốt nhưng còn tuỳ từng trường hợp.
2. Làm quen với một trong những thư viên đồ hoạ. Các thư viện đồ phổ biến hiện nay là SDL, OpenGL hoặc DirectX/Driect3D(mỗi cái đều có ưu và nhược điểm riêng).
3. Lựa chọn 1 phương thức giao tiếp mạng. Bạn có thể chọn lựa giữa WinSock, SDL_net hoặc DirectPlay trong bộ DirectX.
4. Bạn phải có kinh nghiệm trong việc lập trình. Ví dụ: Các vòng lặp sự kiên trong Win(event loop), Đa luồng(MultiThreading), lập trình giao diện(GUI), v..v.
II, Những kỹ năng level 2:
1. Lập trình theo mô hình Client/Server.
2. Lâp trình trên các Platform khác nhau(game tạo ra phải thích ứng với nhiều hệ điều hành cả trên server lẫn Client). Để làm được điều này tôi đề nghị bạn nên sử dụng SDL, OpenGL và SDL_net(có nghĩa là DX chỉ trên Windows thôi).
3. Phát triển WEBSITE. Điều này là cần thiết nếu bạn muốn gamer xem thông tin về nhân vật của mình, trạng thái server, đăng kí, giao tiếp cộng đồng v..v.
4. An toàn và bảo mật. Nếu bạn ko muốn hacker tấn công server của bạn hãy quan tâm đến điều này.
5. Kỹ năng làm việc theo nhóm. Chắc chắc 1 game MMORPG phải được một nhóm ít nhất 3 người xây dựng và phải có 1 ladder. Điều này là rất cần thiết nếu bạn muốn game được thực hiện nhanh chóng.
Bước 2: Chuẩn bị thiết kế sơ bộ:
Một tình trạng phổ biến hiện nay mà chúng ta hay gặp trên các forum là(ngay cả ở GVN cũng vậy - theo ý kiến chủ quan của tôi) rất có nhiều người bắt đầu một game bằng cách: "Chúng tôi hiện đang bắt đầu xây dựng một Game Studio/một news game và chúng tôi cần 3 Designers, 2 Programmers, 1 Nhạc công, v..v, cho một ý tưởng về game .......v..v. Chúng tôi sẽ trả lương cho bạn khi công việc hoàn thành và chúng ta kiếm được tiền"(nguyên văn). Nhưng đáng tiếc kỹ thuật khả năng lại ko cho phép(tác giả còn quan tâm đến cả BandWidth), bạn ko thể có được sản phầm. Mục tiêu của bạn bị sụp đổ và bạn chỉ thiết kế được một phần nho nhỏ trong cả một thế giới MMORPG rộng lớn.
Việc đầu tiên bạn nên làm theo tôi nghĩ là nên thiết kế môt game đơn giản:
Đầu tiên, hãy tập trung để tạo một phiên bản mẫu dựa theo mộ hình Client Server đơn giản. Phiên bản này có thể:
1. Tạo một nhận vật(character)
2. Lưu lại nhân vật đó (phía Server)
3. Login với nhân vật đó
4. Có thể chat với các nhân vật khác
5. Thiết kế trong mô hình 3D đơn giản(View các góc độ)
6. Nếu có thể thì di chuyển nhân vật --> cử động, animation
Lưu lại một nhân vật(trên server) dường như là đơn giản. Nhưng sự thực thì không như vậy. Ví dụ, có hai cách để lưu lại nhân vật trên server: Sử dụng database hoặc sử dụng Flat Text(files). Cả hai đều có những ưu điểm và nhược điểm.
Database
Ưu điểm:
- Dễ dàng thêm mới các trường(fields), hoặc chỉnh sửa.
- Cập nhật thông tin người chơi dễ dàng hơn
- Có thể dễ dàng lây thông tin ra một cách nhanh chóng và hiệu quả, thông qua các câu lênh truy vấn SQL (SQL Query).
- Không cần tới việc thực hiện các phép đóng mở cơ sở dữ liệu (File thì ngược lại).
- Dễ cập nhật và phục hồi.
Nhược điểm:
- Dễ dàng sinh lỗi. Nếu Query sai.
- Database có thể chậm hơn file trong việc đọc ghi dữ liệu đối với lượng dữ liệu nhỏ. Nhưng với dữ liệu lớn thì tốc độ so với ban đầu thì thay đổi ko đáng kể.
- Sử dụng Database phức tạp và phải yêu cầu kỹ năng về Database và SQL. Điều này có thể khắc phục được bằng việc sử dung các thư viện giao tiếp(interface) giữa chương trình và cơ sở dữ liệu.
Flat Text(tác giả gọi là files thì cũng vậy)
Ưu điểm:
- Truy cập nhanh(ko có nghĩa là tìm dữ liệu nhanh)
- Dễ dang sử dụng.
- Không cần các thư viện hỗ trợ
- Ko phụ thuộc vào hệ quản trị CSDL.==> ko sợ bị hack CSDL dựa trên những lỗi của hệ quản trị CSDL.
Nhược điểm:
- Khó khăn trong việc thêm các trường dữ liệu. Trừ khi bạn thiết kế một các cẩn thận cấu trúc file ngay từ ban đầu.
- Khó khăn hơn trong việc phục hồi và sao lưu.
- cần những đoạn Coding đặc biệt.
Theo tôi thì nên sử dụng cả hai cách lưu trữ CSDL này: database để lưu trữ thông tin người sử dụng, character. Còn files để lưu trữ các cấu hình hệ thống.
Bây giờ bạn đã sẵn sàng trong việc chọn cách thức để lưu CSDL, tiếp theo cần phải chọn một giao thức mạng(Network Protocol) để sử dụng cho giao tiếp Client/Server: TCP hay là UDP? TCP thì chầm hơn nhưng họat động chính xác, và cần thêm băng thông(bandwidth). Trong việc thử nghiệm, tôi ko có ý kiến gì về việc sử dụng TCP. Chỉ cần cung cấp đủ băng thông, TCP là sự lựa chọn tốt nhất đối với những người mới bắt đầu. UDP thì sử dụng khó khăn hơn, đặc biệt là với những người mới bắt đầu. Khi đã xây dựng được thì tiếp theo bạn phải kiểm tra dữ liệu truyền trong mạng cục bộ, điều này sẽ thành công và ko có vấn đề gì xảy ra với các gói dữ liệu. Nhưng đối với mạng Internet thì đây là cả một vấn đề, một số gói dữ liệu có thể bị mất, và đây là lỗi thường xuyên xảy ra. Tất nhiên bạn có thể thiết kế một cách thức truyền theo giao tiếp Cilent/Server mà có thể phục hồi lại được những gói dữ liệu bị mất. Nhưng đây chắc chắn là một công việc khó khăn và vất vả đối với những người mới bắt đầu.
Xong hai bước ban đầu còn năm bước nữa rồi tui sẽ post tiếp! Phù!
Hướng dẫn ban đầu cho những người muốn tạo game MMORPG (bài viết của Radu Privantu)
Bài viết này sẽ tập trung vào bước cơ bản đầu tiên để tạo nên một game Multiplayer Online Role Playing Games (MMORPG). Đó là bước chuẩn bị để phát triển một game MMORPG, với kinh nghiệm và tài nguyên hạn chế($$$). Sau khi đọc xong bài viết này, bạn sẽ biêt bắt đầu như thế nào, sẽ biết cái gì nên làm cái gì ko nên làm. Và kỹ năng và tài nguyên(resources) mà bạn có là điều tối quan trọng. Nếu ko có kỹ năng thì việc cố gắng xây dựng một game MMORPG chỉ gây lãng phí thời gian của bạn. Ở đây chúng tôi chỉ đề cập tới vấn đề kỹ thuật. Để làm được một game MMORPG còn cần rất nhiều những vấn đề khác như Role Play(luật chơi), phát triển game, những vấn đề liên quan đến phân tích thiết kế, xuất bản game, thử nghiệm, quảng bá sản phẩm sẽ được đề cập tới ở các chủ đề khác.
Bước I: Quyết định về kỹ năng:
I, Những yêu cầu về kỹ năng cơ bản để tạo 1 game MMORPG(Level I):
1. Biết được ít nhất một ngôn ngữ lập trình. C++ là sự lựa chọn tốt nhất đây là ngôn ngữ thông dụng để làm 1 game. VISUAL BASIC, JAVA hoặc C# cũng có thể làm việc tốt nhưng còn tuỳ từng trường hợp.
2. Làm quen với một trong những thư viên đồ hoạ. Các thư viện đồ phổ biến hiện nay là SDL, OpenGL hoặc DirectX/Driect3D(mỗi cái đều có ưu và nhược điểm riêng).
3. Lựa chọn 1 phương thức giao tiếp mạng. Bạn có thể chọn lựa giữa WinSock, SDL_net hoặc DirectPlay trong bộ DirectX.
4. Bạn phải có kinh nghiệm trong việc lập trình. Ví dụ: Các vòng lặp sự kiên trong Win(event loop), Đa luồng(MultiThreading), lập trình giao diện(GUI), v..v.
II, Những kỹ năng level 2:
1. Lập trình theo mô hình Client/Server.
2. Lâp trình trên các Platform khác nhau(game tạo ra phải thích ứng với nhiều hệ điều hành cả trên server lẫn Client). Để làm được điều này tôi đề nghị bạn nên sử dụng SDL, OpenGL và SDL_net(có nghĩa là DX chỉ trên Windows thôi).
3. Phát triển WEBSITE. Điều này là cần thiết nếu bạn muốn gamer xem thông tin về nhân vật của mình, trạng thái server, đăng kí, giao tiếp cộng đồng v..v.
4. An toàn và bảo mật. Nếu bạn ko muốn hacker tấn công server của bạn hãy quan tâm đến điều này.
5. Kỹ năng làm việc theo nhóm. Chắc chắc 1 game MMORPG phải được một nhóm ít nhất 3 người xây dựng và phải có 1 ladder. Điều này là rất cần thiết nếu bạn muốn game được thực hiện nhanh chóng.
Bước 2: Chuẩn bị thiết kế sơ bộ:
Một tình trạng phổ biến hiện nay mà chúng ta hay gặp trên các forum là(ngay cả ở GVN cũng vậy - theo ý kiến chủ quan của tôi) rất có nhiều người bắt đầu một game bằng cách: "Chúng tôi hiện đang bắt đầu xây dựng một Game Studio/một news game và chúng tôi cần 3 Designers, 2 Programmers, 1 Nhạc công, v..v, cho một ý tưởng về game .......v..v. Chúng tôi sẽ trả lương cho bạn khi công việc hoàn thành và chúng ta kiếm được tiền"(nguyên văn). Nhưng đáng tiếc kỹ thuật khả năng lại ko cho phép(tác giả còn quan tâm đến cả BandWidth), bạn ko thể có được sản phầm. Mục tiêu của bạn bị sụp đổ và bạn chỉ thiết kế được một phần nho nhỏ trong cả một thế giới MMORPG rộng lớn.
Việc đầu tiên bạn nên làm theo tôi nghĩ là nên thiết kế môt game đơn giản:
Đầu tiên, hãy tập trung để tạo một phiên bản mẫu dựa theo mộ hình Client Server đơn giản. Phiên bản này có thể:
1. Tạo một nhận vật(character)
2. Lưu lại nhân vật đó (phía Server)
3. Login với nhân vật đó
4. Có thể chat với các nhân vật khác
5. Thiết kế trong mô hình 3D đơn giản(View các góc độ)
6. Nếu có thể thì di chuyển nhân vật --> cử động, animation
Lưu lại một nhân vật(trên server) dường như là đơn giản. Nhưng sự thực thì không như vậy. Ví dụ, có hai cách để lưu lại nhân vật trên server: Sử dụng database hoặc sử dụng Flat Text(files). Cả hai đều có những ưu điểm và nhược điểm.
Database
Ưu điểm:
- Dễ dàng thêm mới các trường(fields), hoặc chỉnh sửa.
- Cập nhật thông tin người chơi dễ dàng hơn
- Có thể dễ dàng lây thông tin ra một cách nhanh chóng và hiệu quả, thông qua các câu lênh truy vấn SQL (SQL Query).
- Không cần tới việc thực hiện các phép đóng mở cơ sở dữ liệu (File thì ngược lại).
- Dễ cập nhật và phục hồi.
Nhược điểm:
- Dễ dàng sinh lỗi. Nếu Query sai.
- Database có thể chậm hơn file trong việc đọc ghi dữ liệu đối với lượng dữ liệu nhỏ. Nhưng với dữ liệu lớn thì tốc độ so với ban đầu thì thay đổi ko đáng kể.
- Sử dụng Database phức tạp và phải yêu cầu kỹ năng về Database và SQL. Điều này có thể khắc phục được bằng việc sử dung các thư viện giao tiếp(interface) giữa chương trình và cơ sở dữ liệu.
Flat Text(tác giả gọi là files thì cũng vậy)
Ưu điểm:
- Truy cập nhanh(ko có nghĩa là tìm dữ liệu nhanh)
- Dễ dang sử dụng.
- Không cần các thư viện hỗ trợ
- Ko phụ thuộc vào hệ quản trị CSDL.==> ko sợ bị hack CSDL dựa trên những lỗi của hệ quản trị CSDL.
Nhược điểm:
- Khó khăn trong việc thêm các trường dữ liệu. Trừ khi bạn thiết kế một các cẩn thận cấu trúc file ngay từ ban đầu.
- Khó khăn hơn trong việc phục hồi và sao lưu.
- cần những đoạn Coding đặc biệt.
Theo tôi thì nên sử dụng cả hai cách lưu trữ CSDL này: database để lưu trữ thông tin người sử dụng, character. Còn files để lưu trữ các cấu hình hệ thống.
Bây giờ bạn đã sẵn sàng trong việc chọn cách thức để lưu CSDL, tiếp theo cần phải chọn một giao thức mạng(Network Protocol) để sử dụng cho giao tiếp Client/Server: TCP hay là UDP? TCP thì chầm hơn nhưng họat động chính xác, và cần thêm băng thông(bandwidth). Trong việc thử nghiệm, tôi ko có ý kiến gì về việc sử dụng TCP. Chỉ cần cung cấp đủ băng thông, TCP là sự lựa chọn tốt nhất đối với những người mới bắt đầu. UDP thì sử dụng khó khăn hơn, đặc biệt là với những người mới bắt đầu. Khi đã xây dựng được thì tiếp theo bạn phải kiểm tra dữ liệu truyền trong mạng cục bộ, điều này sẽ thành công và ko có vấn đề gì xảy ra với các gói dữ liệu. Nhưng đối với mạng Internet thì đây là cả một vấn đề, một số gói dữ liệu có thể bị mất, và đây là lỗi thường xuyên xảy ra. Tất nhiên bạn có thể thiết kế một cách thức truyền theo giao tiếp Cilent/Server mà có thể phục hồi lại được những gói dữ liệu bị mất. Nhưng đây chắc chắn là một công việc khó khăn và vất vả đối với những người mới bắt đầu.
Xong hai bước ban đầu còn năm bước nữa rồi tui sẽ post tiếp! Phù!