Đẳ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 10): 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 10): Thực hiện chức năng chơi online   Mon May 21, 2012 5:31 pm

Đấu game với máy tính đã thú vị, thi thố giữa người với người trong môi trường game còn thú vị hơn. Việc thể hiện loại game này khá dễ dàng vì bạn không phải mất công thực hiện các phần việc phức tạp của đối thủ mà ta gọi là trí thông minh nhân tạo (Artificial Intelligence).



Tất nhiên là bạn có thể ngồi với một người nữa trên cùng một máy tính và mỗi người dùng một cụm phím khác nhau để điều khiển. Nhưng sẽ thú vị hơn khi dù xa đến nửa vòng trái đất, bạn vẫn có thể “đối đầu” trực tiếp với nhau. Phần mềm Game Maker có hỗ trợ cách làm này, nhưng bạn chỉ có thể dùng tính năng tạo game online khi đã đăng ký với chi phí 20 USD/năm tại [You must be registered and logged in to see this link.]

Nhưng tất nhiên, tạo ra một trò chơi online hiệu quả không phải dễ dàng. Nó đòi hỏi bạn phải sử dụng Game Maker thật thành thạo và biết cách viết mã. Trong phần này, chúng ta sẽ bàn về các khía cạnh sau:

- Thiết lập kết nối đến một máy tính khác

- Tạo lập và tham gia vào một “phòng” game

- Giữ cho trò chơi diễn ra đồng thời đối với những người cùng tham gia

Kỳ 1: Thiết lập kết nối đến một máy tính khác

Cách chuẩn để chạy một game nhiều người chơi như sau: Mỗi người chạy một bản copy của trò chơi, mặc dù chúng có thể chạy trên nhiều chế độ (mode) khác nhau. Một người sẽ kích hoạt trò chơi của mình trên chế độ server (dùng máy chủ). Những người khác chạy game trên chế độ client (máy khách). Máy chủ sẽ khởi động trò chơi trước rồi tạo ra một “phòng” (session) để những người người này vào “phòng” và tham gia trò chơi. Người chơi phải quyết định cơ chế dùng để liên hệ giữa các máy tính. Trên một mạng nội bộ, cách dễ nhất là dùng kết nối IPX.

Nếu tất cả đều có kết nối với Internet thì cơ chế thường dùng là TCP/IP. Trong giao thức này, các máy khách phải biết được địa chỉ IP của máy chủ. Do đó, người chơi chạy game trên chế độ máy chủ phải đưa địa chỉ IP cho những người dùng máy khách.

Bạn cũng có thể tìm thấy địa chỉ IP của mình bằng cách sử dụng chương trình winipcfg.exe trong thư mục windows hoặc dùng chức năng mplay_ipaddress ( ). Một cách cổ điển hơn nữa là sử dụng modem (trong trường hợp đó, máy khách phải biết số điện thoại của máy chủ) hoặc sử dụng một dòng số. Nhưng cần chú ý một điều là hiện nay việc liên lạc giữa các máy trở nên khó khăn hơn do mọi người dùng “tưởng lửa” (firewall) và các cầu dẫn (router) để bảo vệ máy tính của mình. Do đó, các tin nhắn và địa chỉ IP cũng dễ bị chặn.

Để hai máy tính liên hệ được với nhau, chúng phải cần đến một giao thức kết nối nào đó. Giống như phần nhiều các trò chơi, Game Maker hỗ trợ 4 kiểu kết nối là IPX, TCP/IP, Modem và Serial.

Giao thức IPX hoạt động hoàn toàn dễ hiểu vì nó có thể dùng để chơi game với người khác trên cùng một mạng cục bộ và cần được cài đặt trên máy của bạn. Còn TCP/IP là giao thức kết nối Internet, được dùng để chơi game với người khác ở bất kỳ đâu thông qua mạng toàn cầu với giả định là bạn biết địa chỉ IP của họ. Trên mạng cục bộ, bạn có thể dùng nó mà không cần cung cấp địa chỉ. Kết nối Modem được thiết lập thông qua một modem. Bạn phải cài đặt modem bằng một dải mã số và một số điện thoại. Cuối cùng, khi dùng tới một dải số (serial line – dùng để kết nối trực tiếp giữa các máy tính), bạn cần cung cấp một số thiết lập cổng truyền dẫn.

4 chức năng GML (ngôn ngữ lập trình của Game Maker) có thể dùng để khởi động các kết nối này:

mplay_init_ipx ( ) khởi động giao thức IPX

mplay_init_tcpip (addr) khởi động giao thức TCO/IP

addr ở đây là một dải ký tự hoặc số có chứa địa chỉ trang web hoặc địa chỉ IP, ví dụ như '[You must be registered and logged in to see this link.] hoặc ‘123.123.123.12’, có thể được nối tiếp bằng số thứ tự cổng (ví dụ như (‘:12’). Chỉ khi tham gia vào một phòng game (xem phần sau), bạn cần cung cấp một địa chỉ. Người tạo phòng thì không cần đưa ra địa chỉ. Trên mạng cục bộ bạn không cần địa chỉ nào nhưng vẫn phải gọi điện.

mplay_init_modem (initstr, phonenr) tạo ra một kết nối modem.

initstr là dải ký tự khởi động modem (có thể bỏ trống)
phonenr là một dải số chứa số điện thoại để thực hiện cuộc gọi (ví dụ như ‘0201234567’) chẳng hạn.

mplay_init_serial (porno, baudrate,stopbits,parity,flow) khởi động kết nối dãy số

porno là số cổng (từ 1 đến 4)
baudrate là tốc độ kết nối (100 đến 256K)
stopbit thể hiện số bit khóa (0= 1bit, 1 = 1.5 bit, 2 = 2 bit)
parity thể hiện trạng thái (0= không, 1= lẻ, 2= chẵn, 3= đánh dấu)
flow thể hiện kiểu điều chỉnh luồng (0=không, 1=xbật/xtắt, 2=rts, 3=dtr, 4=rts và dtr)

(rts là tín hiểu RS-232 được gửi từ trạm truyền đến trạm tiếp nhận, yêu cầu được truyền tải; dtr cũng là một tín hiệu giao thức RS-232 được gửi từ máy tính hoặc thiết bị cuối đến modem để thể hiện rằng nó có thể chấp nhận dữ liệu)

Một cuộc gọi tiêu chuẩn là mplay_init_serial(1,57600,0,0,4).
Ta đặt 0 làm tham số đầu tiên để mở một hộp thoại cho người sử dụng thay đổi phần cài đặt.

Trò chơi của bạn cần sử dụng một trong 4 chức năng này một cách chính xác. Tất cả các chức năng đó đều thông báo chúng có hoạt động thành công hay không. Nguyên do thất bại có thể là giao thức đó chưa được cài đặt hoặc máy tính không hỗ trợ.

Do đó, room đầu tiên trong game cần thể hiện 4 khả năng đó để người chơi chọn lấy một (hoặc chỉ cho phép các giao thức mà bạn muốn. Hai giao thức cuối có thể quá chậm cho game của bạn). Chúng ta gọi chức năng khởi động này trong sự kiện Mouse và nếu thành công, hãy tới room kế tiếp. Nếu không, chúng ta cần gửi tin nhắn báo lỗi. Trong sự kiện Mouse của nút IPX, đặt đoạn mã sau:

{
if (mplay_init_ipx( )
room_goto_next( )
else
show_message('Failed to initialize IPX connection.')
}

Khi trò chơi kết thúc hoặc khi người sử dụng không muốn chức năng chơi nhiều người nữa, bạn nên dùng thường trình (routine) sau để kết thúc

mplay_end ( ) ngắt kết nối hiện thời

Bạn nên gọi thường trình này trước khi muốn thiết lập một kết nối khác.

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 10): 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-