Tôi nghĩ Bạn cần biết cách tạo ra những sự kiện này và phần còn lại của bài viết là về nó, Nếu bạn chỉ muốn lưu trữ những sự kiện này thì hãy sử dụng một số cơ sở dữ liệu quan hệ hoặc giải mã chúng bằng văn bản và sử dụng ngôn ngữ kịch bản (anh ấy sẽ phân tích và đánh giá Bạn). :)
Điều bạn muốn là nhận ra các sự kiện đã xảy ra (1) và sau đó thực hiện một số hành động được yêu cầu bởi các sự kiện này (in thông báo, kiểm tra nhấn phím ...) (2). Bạn cũng muốn làm cho những sự kiện này chỉ xảy ra một lần (3).
Về cơ bản Bạn muốn kiểm tra các điều kiện và sau đó lên lịch một số hành vi.
Cách nhận biết sự kiện (1)
- Bạn muốn nhận ra các sự kiện như "kẻ thù đầu tiên gặp phải", "vật phẩm mới đạt được"
- nếu phần chung xảy ra, " kẻ thù gặp phải ", " mục đã đạt được " Bạn kiểm tra phần cụ thể " đầu tiên ...", " mục mới đạt được"
Sự kiện được làm từ gì
Trong cái nhìn tổng quát hơn, mỗi sự kiện như vậy được tạo thành từ:
- điều kiện tiên quyết , bạn kiểm tra chúng
- các hành động sẽ được thực hiện khi điều kiện tiên quyết được đáp ứng (nói "" Bạn đã giết kẻ thù đầu tiên! ", nói" "tạo combo bằng cách nhấn nút A và B", nói "nhấn 'enter' để tiếp tục", yêu cầu "nhập")
Làm thế nào để lưu trữ những sự kiện này
Trong một số cấu trúc dữ liệu:
- có danh sách các điều kiện tiên quyết (chuỗi hoặc mã nếu bạn đang viết nó bằng một số ngôn ngữ cấp cao)
- có danh sách các hành động (chúng có thể là chuỗi, công cụ Quake sử dụng chuỗi cho các sự kiện)
Bạn cũng có thể lưu trữ nó trong cơ sở dữ liệu quan hệ, mặc dù có vẻ như không cần thiết, nếu bạn muốn làm cho trò chơi này lớn, bạn có thể cần phải tạo một trò chơi.
Sau đó, bạn phải phân tích các chuỗi / điều. Hoặc Bạn có thể sử dụng một số ngôn ngữ kịch bản như Python hoặc LUA hoặc ngôn ngữ như LISP, tất cả chúng đều có thể phân tích cú pháp và thực thi nó cho Bạn. :)
Cách sử dụng các sự kiện này trong vòng lặp trò chơi (2)
Bạn sẽ cần hai cấu trúc dữ liệu này:
- hàng đợi các sự kiện (các sự kiện dự kiến sẽ được chạy ở đây)
- hàng đợi hành động (hành động theo lịch trình, sự kiện ngụ ý hành động nào được thực hiện)
Thuật toán:
- Nếu bạn nhận ra một số sự kiện của điều kiện tiên quyết được đáp ứng Bạn đưa anh ta vào hàng đợi sự kiện
- (3) Sau đó, bạn nên đảm bảo sự kiện này chỉ xảy ra một lần nếu bạn muốn :) (ví dụ với mảng boolean has_this_event_happened ["kẻ thù đầu tiên gặp phải"])
- (nếu hàng đợi hành động trống, sau đó) Nếu có sự kiện trong hàng đợi sự kiện Bạn đặt hành động của anh ấy vào hàng đợi hành động và xóa anh ta khỏi hàng đợi sự kiện
- Nếu có hành động trong hàng đợi hành động Bạn bắt đầu thực hiện những gì được yêu cầu bởi nó
- Nếu hành động đó được thực hiện Bạn xóa nó khỏi hàng đợi hành động
Cách thực hiện những hành động này (2)
Bạn lập danh sách các đối tượng có chức năng "cập nhật". Chúng đôi khi được gọi là các thực thể (trong công cụ Quake) hoặc các tác nhân (trong công cụ Unreal).
- Bạn bắt đầu những đối tượng này khi chúng được yêu cầu bắt đầu trong hàng đợi hành động.
- những đối tượng này có thể được sử dụng cho những thứ khác như một số bộ định thời khác. Trong Quake, các thực thể này được sử dụng cho toàn bộ logic trò chơi, tôi khuyên bạn nên đọc một số tài liệu về nó .
Hành động "nói gì đó"
- Bạn in một cái gì đó trên màn hình
- Bạn muốn thông báo này xuất hiện trong vài giây
- trong "cập nhật":
- thực hiện biến remove_me_after và giảm nó theo thời gian đã qua
- khi biến là 0 Bạn xóa hành động này khỏi hàng đợi hành động
- Bạn cũng xóa đối tượng này (hoặc lên lịch để xóa nó ...)
Hành động "yêu cầu khóa"
- Nó phụ thuộc vào cách bạn muốn thực hiện nó, nhưng tôi nghĩ rằng Bạn tạo một tin nhắn
- trong "cập nhật" ":
- Bạn chỉ cần kiểm tra sự kiện nhấn phím mong muốn
- Bạn có thể cần một số mảng / hàng đợi để tổ chức các sự kiện nhấn phím
- sau đó Bạn có thể xóa nó khỏi hàng đợi hành động và xóa đối tượng
Phương pháp nào để học