Đẳng Cấp Học Sinh

Đẳng Cấp Học Sinh

Đại Ân 2
 
Trang ChínhPortalCalendarTrợ giúpTìm kiếmThành viênNhómĐăng kýĐăng Nhập

Share | 
 

 Game Maker (phần 11): Thực hiện chức năng chơi online

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
zavasaki11
Thành Viên Cấp 2
Thành Viên Cấp 2


Tổng số bài gửi : 21
Join date : 03/05/2012
Age : 23
Đến từ : Đại Ân 2

Bài gửiTiêu đề: Game Maker (phần 11): Thực hiện chức năng chơi online   Mon May 21, 2012 5:32 pm

Khi kết nối, bạn có thể thấy rất nhiều game diễn ra trên cùng một mạng và chúng ta gọi đây là các phòng game (session). Các phòng khác nhau có thể phản ứng với các game khác nhau hoặc cùng một trò chơi. Một game phải xác định bản thân nó trên một mạng. May mắn là phần mềm Game Maker đã làm việc này cho bạn.

Kỳ 2: Thiết lập các phòng game


Điều duy nhất mà bạn cần biết là khi thay đổi ID của game trong phần thiết lập tổng quát thì đặc điểm này thay đổi. Theo cách này, bạn có thể tránh việc người dùng bản game cũ chơi được với người dùng bản game mới. Nếu muốn khởi động một trò chơi mạng mới, bạn cần phải tạo ra một phòng mới và lúc này bạn có thể dùng đến công thức sau:

mplay_session_create (sesname, playnumb, playername) có chức năng tạo phòng mới trên kết nối hiện thời.
sesname là một dải mã chỉ ra tên của phòng game
playnumb là một số xác định số người tối đa được phép tham gia vào trò chơi
playername là tên người chơi
Gửi tin báo xem có thành công hay không.

Trong nhiều trường hợp, tên người chơi không được sử dụng đến và có thể là một dải mã trống. Cũng vậy, tên của phòng chỉ quan trọng nếu bạn muốn người chơi được lựa chọn phòng nào để tham gia.

Trước hết, bạn cần xem các phòng nào đang có sẵn rồi chọn một. Ba công thức sau đây rất quan trọng đối với việc này:

mplay_session_find ( ) tìm kiếm tất cả các phòng còn chấp nhận người chơi và cho kết quả là số phòng tìm thấy.
mpaly_session_name (numb) cho kết quả là tên của phòng có đánh số (0 là phòng đầu tiên). Công thức này chỉ có thể được gọi ra sau khi bạn đã gọi công thức trên.
mplay_session_join (numb, playername) sẽ giúp bạn tham gia vào một phòng có đánh số (0 là phòng đầu tiên).
playername là tên người chơi.
Trả kết quả xem có thành công hay không.

Do đó, cách tiêu chuẩn cần làm là gọi lệnh mplay_session_find ( ) để tìm tất cả các phòng đang tồn tại. Sau đó, bạn có thể dùng lặp lại lệnh mpaly_session_name ( ) để hiện thị các tên cho người chơi biết và để họ lựa chọn, hoặc bạn có thể ngay lập thức tham gia vào phòng đầu tiên. (Chú ý rằng việc tìm kiếm phòng sẽ làm mất thời gian nên không gọi lệnh này cho mỗi bước).

Người chơi có thể thoát khỏi phòng khi bạn dùng lệnh sau:

mplay_session_end ( ) kết thúc phòng cho người chơi.

Câu lệnh này rất hữu dụng trong việc báo trước cho người chơi về việc này nhưng không nhất thiết cần đến.

Do đó, trong trò chơi của mình, phòng thứ hai cho người chơi 2 lựa chọn: hoặc là tạo ra một phòng mới, hoặc tham gia vào phòng hiện có. Đối với lựa chọn đầu tiên, bạn có thể thực hiện đoạn mã sau trong sự kiện đối với Mouse.

{
if (mplay_session_create('',2,'')
{
global.master = true;
room_goto_next( );
}
else
show_message('Failed to create a session.')
}

Chú ý rằng chúng ta thiết lập một tham số chung master có giá trị True. Lý do là trong trò chơi, ta cần phân biệt người chơi chính (gọi là master) và người thứ hai (gọi là slave). Master sẽ chịu trách nhiệm đối với phần lớn gameplay, trong khi slave chỉ đơn thuần là theo sau các hoạt động của master.

Lựa chọn thứ hai là tham gia vào một game sẵn có. Đoạn mã sau được sử dụng:

{
if (mplay_session_find() > 0)
{
if (mplay_session_join(0,'')
{
global.master = false;
room_goto_next( );
}
else
show_message('Failed to join a session.')
}
else
show_message('No session available to join.')
}

Do đó, trong ví dụ này, ta chỉ tham gia vào phòng đầu tiên đang có sẵn. Do ở trên ta đã chỉ ra số người tối đa là 2 nên không ai có thể tham gia thêm vào phòng này nữa.

Xử lý các hoạt động của người chơi

Khi master đã tạo ra một phòng, chúng ta phải đợi một người khác nữa cùng tham gia. Có 3 công thức để xử lý các hoạt động của người chơi.

mplay_player_find ( ) tìm kiếm tất cả những người tham gia trong phòng hienẹ thời và cho kết quả là số người chơi tìm thấy

mplay_player_name (numb) cho kết quả là tên của người chơi mang số nào đó (0 là người đầu tiên). Công thức này chỉ có thể được gọi ra sau khi đã gọi công thức đầu tiên.

mplay_player_id (numb) cho kết quả là id duy nhất của người chơi mang số nào đó ( 0 là người đầu tiên). Công thức này chỉ có thể được gọi ra sau khi đã gọi công thức đầut iên. ID này được dùng để gửi và nhận các tin nhắn giữa những người tham gia với nhau.

Trong room thứ 3, chúng ta đơn giản đợi người chơi thứ hai tham gia vào. Vì vậy, hãy đặt một object nào đó ở đấy và trong sự kiện Step, đưa vào đoạn mã sau:

{
if (mplay_player_find() > 1)
room_goto_next( );
}

(Nhưng thực ra chúng ta không cần vào room này đối với slave).

Nguồn : [You must be registered and logged in to see this link.]
Về Đầu Trang Go down
Xem lý lịch thành viên
 

Game Maker (phần 11): Thực hiện chức năng chơi online

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Đẳng Cấp Học Sinh :: Lập Trình - Thiết Kế :: Phát Triển Game :: Game Maker-