-->

  • Game Development with Construct 2 - Chương 3 - Phần 2




    Bài 4. Động cơ và các vụ nổ


    Tại thời điểm này, bạn đã thực hiện xong các chức năng cơ bản của trò chơi Space Rocks. Phần này được dành riêng cho phản hồi trực quan, là điều quan trọng trong việc cung cấp trải nghiệm game chất lượng cho người chơi. Hai tính năng bạn sẽ thực hiện bao gồm một hiệu ứng động cơ, được hiển thị bất cứ khi nào con tàu tăng tốc, và một vụ nổ sinh động, sẽ xuất hiện bất cứ khi nào đối tượng bị phá hủy.


    Đầu tiên, bạn sẽ thêm hiệu ứng động cơ. Trong khu vực layout, thêm một sprite mới có tên là Fire, sử dụng hình ảnh fire.png. Đặt và thay đổi kích cỡ sprite này để nó xuất hiện từ con tàu vũ rụ. Thêm hành vi Pin. Hành vi Pin được sử dụng để gắn liền một sprite này với một sprite khác; khi một sprite di chuyển hoặc xoay, bất kì sprite nào được gắn với nó sẽ di chuyển và xoay y như sprite kia, như thể các sprite là một đối tượng duy nhất.




    Để xác định đối tượng mà ngọn lửa sẽ được gắn, ta cần thiết lập một sự kiện. Sự kiện này cần diễn ra chính xác một lần, ngay khi game bắt đầu, như là “Nếu layout vừa mới bắt đầu thì đối tượng ngọn lửa sẽ tự động gắn vào tàu vũ trụ”. Trong event sheet, thêm một sự kiện mới. Lựa chọn đối tượng System và điều kiện On start of layout. Thêm một hành động, lựa chọn đối tượng Fire và lựa chọn hành động Pin to Object; trong cửa sổ tham số vừa xuất hiện, lựa chọn đối tượng Spaceship. Ngọn lửa chỉ nên tồn tại nếu con tàu tồn tại, chính vì vậy bạn cũng nên thêm một hành động tới sự kiện mà một tiểu hành tinh va chạm với con tàu; trong tình huống này, ngọn lửa nên bị phá hủy. Khi bạn hoàn thành, bạn sẽ có sự kiện như hình dưới đây. Lưu lại và test thử trò chơi của bạn, đối tượng FireSpaceship nên di chuyển xung quanh màn hình như một nhất thể. Tuy nhiên, đối tượng Fire hiện tại luôn được nhìn thấy, trong khi đó ta chỉ muốn nó xuất hiện khi tàu tăng tốc. Vấn đề này sẽ được sửa lại.




    Đối tượng Fire không nên được nhìn thấy khi game mới bắt đầu, do đó bạn nên chọn đối tượng Fire ở layout và thiết lập thuộc tính Initial Visibility thành Invisible. Tiếp theo, bạn cần thiết lập một cặp sự kiện để kiểm soát sự hiển thị của ngọn lửa, khi tăng tốc, ngọn lửa nên được nhìn thấy và khi không tăng tốc, ngọn lửa sẽ vô hình. Hãy nhớ rằng sự tăng tốc xảy ra khi phím mũi tên lên được giữ, và có một sự kiện ở cùng với điều kiện này. Vì vậy, bạn chỉ cần thêm một hành động mới cho sự kiện này, vì vậy kích vào Add action ngay bên duới hành động tăng tốc của tàu vũ trụ. Trong cửa sổ xuất hiện, lựa chọn đối tượng Fire và hành động Set Visible từ nhóm Appearance. Trong cửa sổ tham số xuất hiện, thiết lập chế độ hiển thị thành giá trị mặc định của Visible, cuối cùng kích vào nút Done.


    Để làm ngọn lửa không thể nhìn thấy, sự kiện sẽ là “Nếu mũi tên lên không giữ xuống thì đối tượng Fire sẽ thiết lập sự hữu hình thành vô hình”. Bạn có thể thấy, về cơ bản, các điều kiện trong C2 được diễn đạt một cách rõ ràng, chúng kiểm tra mỗi lần điều kiện xảy ra hơn là mỗi lần điều kiện không xảy ra. Trong các trường hợp như vậy, khi sự phủ định của điều kiện cần được kiểm tra, C2 sẽ cung cấp cho bạn khả năng đảo ngược bất kì điều kiện nào được đưa ra. Một điều kiện được đảo ngược là đúng khi điều kiện ban đầu là không đúng. Như vậy, để thực hiện đầy đủ sự kiện được miêu tả ở trên, hãy bắt đầu bằng cách tạo một sự kiện mới với điều kiện KeyboardKey is Down, và thông qua cửa sổ thông số, lựa chọn Up arrow key, như bạn đã làm trước đó. Khi bạn hoàn thành và điều kiện được hiển thị trên màn hình, kích chuột phải vào điều kiện và danh sách lựa chọn sẽ xuất hiện. Từ danh sách này, lựa chọn Invert và một dấu X màu đỏ sẽ xuất hiện trong điều kiện, cho thấy rằng nó đã được đảo ngược. Việc đảo ngược có thể được diễn tả là “Không phải là trường hợp …”. Sau đó, thêm hành động vào sự kiện này, chọn đối tượng Fire và hành động Set Visible, và trong cửa sổ thông số, thay đổi thiết lập thành Invisible. Khi bạn hoàn thành, bạn sẽ có sự kiện như hình dưới đây. Như thường lệ, lưu và test game của bạn, hãy đảm bảo rằng ngọn lửa chỉ xuất hiện khi bạn nhấn mũi tên lên.




    Tiếp theo, bạn sẽ thêm các hiệu ứng bùng nổ xuất hiện khi có đối tượng bị phá huỷ. Không giống như các hoạt ảnh dựa trên giá trị ở chương trước (bao gồm xoay và thay đổi kích cỡ hình ảnh), đây sẽ là hoạt ảnh dựa trên hình ảnh đầu tiên của bạn, là hiển thị nhanh chóng một chuỗi các hình ảnh, tương tự như trong làm phim hoạt hình. Ở đây, bạn sẽ sử dụng tệp hình ảnh explosiom.png, chứa các hình ảnh nhỏ hơn (được coi là khung của hoạt ảnh) được sắp xếp theo hình chữ nhật. Nếu những hình ảnh đặc biệt này được hiển thị một lần nữa, thì nó sẽ hiển thị như một vụ nổ, thay đổi từ màu vàng cam sang màu vàng đỏ, và cuối cùng là một màu sẫm và biến mất như khói bụi.




    Để bắt đầu, thêm một sprite mới có tên là Explosion tới main layer của layout. Khi cửa sổ chỉnh sửa hình ảnh xuất hiện, thay vì sử dụng cửa sổ Edit Image lớn, bạn sẽ tập trung vào cửa sổ được gọi là Animation frames. Kích chuột phải vào cửa sổ, và trong menu xuất hiện, di chuyển chuột tới lựa chọn Import frames và sau đó kích vào From Sprite Strip. Lựa chọn hình ảnh explosion.png và sau đó một cửa sổ sẽ xuất hiện với tiêu đề Import Sprite Strip. Cửa sổ này được sử dụng để chỉ rõ có bao nhiêu hình ảnh phụ được chứa trong chuỗi hình ảnh sprite. Trong trường hợp này, có chứa 6 hình ảnh ở mỗi hàng, do đó nhập 6 cho số hình ảnh ở hàng ngang (horizontal), và nhập 6 cho hình ảnh ở hàng dọc (vertical). Ngoài ra, lựa chọn hộp kiểm Replace Entire Existing Animation nếu bạn không muốn lưu lại hình ảnh trống mặc định được cung cấp bởi trình chỉnh sửa hình ảnh. Kích vào nút OK và khi hộp thoại xác nhận xuất hiện, kích vào OK. Sau một lúc, bạn sẽ thấy các khung riêng lẻ xuất hiện trong cửa sổ Animation frames (bạn có thể sẽ phải dùng lăn chuột để xem tất cả). Các khung có thể sắp xếp lại bằng cách sử dụng chuột để kéo thả, và các khung riêng lẻ có thể xoá bằng cách kích chuột phải vào nó và chọn Delete; tuy nhiên, bạn không cần làm những điều trên vào lúc này. Để xem trước hoạt ảnh, xác định vị trí cửa sổ chỉnh sửa có tên là Animations; cái này chứa danh sách các hoạt ảnh được lưu trữ cho đối tượng này và hiện tại chỉ chưa 1 mục, được đặt tên là Default. Kích chuột phải vào tên của hoạt ảnh và chọn Preview, một cửa sổ nhỏ sẽ xuất hiện và hiển thị một hoạt ảnh rất chậm. Để khắc phục nó, kích vào tên hoạt ảnh, và trong thanh Properties sẽ hiển thị một danh sách ngắn các thuộc tính liên quan tới hoạt ảnh. Thuộc tính Speed đại diện cho bao nhiêu khung hình sẽ hiển thị trong 1 giây; thay đổi giá trị này thành 20 và sau đó xem lại hoạt ảnh lần nữa để kiểm tra xem nó có mượt mà hơn không. Khi bạn kết thúc, đóng cửa sổ chỉnh sửa hình ảnh. 




    Tiếp theo, trong layout, đặt Explosion sprite để nó nằm trong vùng màu xám. Điều này là để vụ nổ ban đầu xảy ra bên ngoài trò chơi và không hiển thị cho người chơi thấy. Tiếp theo, bạn cần thêm hành động vào các sự kiện trước nơi vụ nổ sẽ xảy ra. Trong event sheet, bạn sẽ thêm hành động khác cho sự kiện mà có liên quan đến việc tàu vũ trụ bị phá huỷ. Kích vào Add action ngay bên dưới hành động này, và trong cửa sổ tham số chọn đối tượng Explosion và sản sinh nó ngay trên Main layer. Tương tự như vậy, hãy thêm một hành động cho sự kiện có liên quan tới việc một tiểu hành tinh bị phá huỷ, kích vào Add action, chọn đối tượng Asteriod, lựa chọn hành động Spawn, chọn đối tượng Explosion và thiết lập nó xuất hiện trên Main layer. Cuối cùng, bạn thêm một sự kiện để bỏ Explosion sprite ra khỏi layout sau khi hoạt ảnh kết thúc. Nếu không, tất cả các vụ nổ sẽ đều tồn tại trong bộ nhớ máy tính (mặc dù chúng vô hình), điều này sẽ khiến trò chơi bị chậm lại, giật lag. Thêm một sự kiện mới, chọn đối tượng Explosion và điều kiện On any finished từ nhóm Animation. Về hành động, chọn đối tượng Explosion và hành động Destroy. Khi bạn hoàn thành, bạn sẽ có một màn hình như dưới đây. Lưu lại và test game của bạn.




    WAITING FOR LUV
    Bạn có muốn cải thiện khả năng thiết kế đồ họa của mình? Chắc hẳn các bạn cũng biết, nếu các dòng code là linh hồn của một trò chơi, thì đồ họa chính là bộ mặt của trò chơi đó. Đồ họa đẹp, dễ nhìn sẽ khiến trò chơi của bạn tăng tỉ lệ hấp dẫn người xem đến 90%. Hiện tại có hai công cụ hỗ trợ thiết kế đồ họa game tiện nhất mà mình biết, đó là Photoshop và Illustrator. Mình sẽ cố gắng tìm kiếm và chia sẻ các đồ họa game miễn phí cho các bạn tại blog này; tuy nhiên, một trò chơi mà 100% do chính mình tạo ra vẫn hơn là đi cóp nhặt hình ảnh từ nơi khác đúng không nào. Tiện đây, mình có chia sẻ một khóa học thiết kế đồ họa Game 2D cho Mobile. Các bạn có thể tham khảo dưới đây để được giảm 40% học phí nhé.


    Bài 5. Sự di chuyển


    Một cơ chế trò chơi nữa được đề cập ở đầu đó là khả năng phi thuyền có thể dịch chuyển tới một vị trí ngẫu nhiên trên màn hình, một phương pháp cứu nguy cho con tàu của chúng ta thoát khỏi rủi ro va chạm. Bạn có thể cung cấp một khung cảnh với một hiệu ứng đặc biệt ở vị trí ban đầu và vị trí tiếp theo của con tàu. 




    Đầu tiên, bạn cần tạo một sprite đại diện cho hiệu ứng đặc biệt. Trong layout, bạn tạo ra một sprite được đặt tên là Warp, đặt nó ở lề của layout. Vì bạn đang tạo một sprite hoạt ảnh, nên quá trình sau sẽ tương đối giống với khi tạo ra hoạt ảnh của vụ nổ. Khi cửa sổ chỉnh sửa hình ảnh được mở, kích chuột phải vào cửa sổ Animation frames và chọn Import frames / from sprite strip. Chọn tệp hình ảnh warp.png, và cửa sổ xuất hiện, nhập 8 cho ô ngang (horizontal) và 4 cho ô dọc (vertical). Kích vào Defaul trong cửa sổ Animation, và trong thanh Properties, thay đổi Speed thành 16 và thay đổi Loop thành Yes. Điều này có nghĩa là các khung hoạt ảnh sẽ được lặp lại, như một vòng tròn. Khi hoàn thành, thêm hành vi Fade cho Warp sprite. Điều này sẽ làm mờ Warp sprite sau 1 giây. Và vì thuộc tính Destroy của hành vi Fade được thiết lập mặc định After fade out nên bạn không cần thêm sự kiện để phá huỷ nó như với Explosion sprite.


    Sự kiện bạn sẽ tạo tiếp theo đó là “Nếu phím X được nhấn thì tàu vũ trụ sẽ sinh ra một đối tượng Warp, con tàu sẽ di chuyển tới một vị trí ngẫu nhiên và tạo ra đối tượng Warp thứ hai”. Để bắt đầu, tạo một sự kiện mới với điều kiện Keyboard / On key pressed. Trong cửa sổ tham số, nhấn nút X (hoặc bất kì nút nào mà bạn thích). Thêm một hành động tới sự kiện này, lựa chọn đối tượng Spaceship, lựa chpnj hành động Spawn another Object, và lựa chọn đối tượng Warp. Sau đó thêm hành động thứ hai tới sự kiện này, lựa chọn đối tượng Spaceship và hành động Set position trong nhóm Size & Position. Trong cửa sổ tham số xuất hiện, có các hộp văn bản nơi bạn có thể chỉ định các tọa độ X và Y của con tàu. Tuy nhiên, bạn không muốn chỉ nhập một số trong khu vực này vì con tàu sẽ luôn di chuyển tới một vị trí cụ thể và sự dịch chuyển sẽ không ngẫu nhiên.


    May mắn thay, công cụ C2 không giới hạn như là chỉ được nhập số. bạn có thể nhập cả các biểu thức, đó là sự kết hợp các giá trị và hàm. Cụ thể, các hàm được sử dụng để biến đổi các giá trị đầu vào thành giá trị đầu ra theo một công thức hoặc phương pháp có sẵn. Khi nhập các hàm vào C2, tên của hàm sẽ được viết đầu tiên, tiếp theo là dầu ngoặc đơn, đầu vào xuất hiện ở giữa các dấu ngoặc đơn, và nếu có nhiều giá trị đầu vào thì chúng được ngăn cách bởi các dấu phẩy. Đây là một ví dụ:

    • Hàm round chuyển số 3.8 thành 4; nó sẽ được nhập là round(3.8).
    • Hàm sqrt(“square root”) chuyển số 25 thành 5; nó sẽ được nhập là sqrt(25).
    • Hàm max(“maximun”) có hai số là đầu vào và trình số lớn hơn trong hai số như là đầu ra; ví dụ max(9, 7) sẽ bằng 9.
    • Hàm random có hai số như là đầu vào và trình đầu ra một giá trị thập phân ngẫu nhiên giữa các giá trị. Không giống hầu hết các hàm khác, mỗi lần hàm này được sử dụng, bạn có thể nhận được một số khác nhau. Ví dụ, random(10, 20) sẽ cho giá trị đầu ra là 14.5333, nhưng lần tiếp theo có thể sẽ là 19.765.



    Đối với trò chơi này, chúng ta sẽ sử dụng hàm cuối cùng mà ta vừa đề cập bên trên, đó là hàm random. Bởi vì layout có chiều rộng là 800 pixel nên giá trị của X có thể nằm giữa 0 và 800. Quay trở lại cửa sổ tham số, nhập biểu thức random(0, 800) trong hộp X. Tương tự, bởi vì layout có chiều cao 600 pixel, hãy nhập random(0, 600) trong hộp Y, và sau đó kích vào nút Done. Cuối cùng, thêm hành động thứ ba vào sự kiện này, giống với cái đầu tiên: chọn đối tượng Spaceship, chọn hành động Spawn Another Object, và chọn đối tượng Warp. Vì các hành động được kích hoạt theo trình tự từ trên xuống dưới, đối tượng Warp thứ hai sẽ được tạo ra bởi tàu vũ trụ khi nó di chuyển tới vị trí mới trên layout. Khi bạn hoàn thành, sự kiện sẽ trông như hình dưới đây. Lưu lại trò chơi của bạn và chơi thử nó để xác nhận nó hoạt động như mong muốn.




    Bài 6. Thắng và thua

    Cuối cùng, bạn sẽ thực hiện vài thông báo cho người chơi biết rằng trò chơi đã kết thúc và người chơi sẽ thắng hay thua. Và quan trọng là cung cấp một hình ảnh kết thúc đẹp mắt. Các sự kiện cũng sẽ tương tự như ở chương trước: “Nếu không còn tiểu hành tinh nào, một thông điệp Congratulations! Sẽ xuất hiện; nếu tàu vũ trụ không còn, thì thông điệp game Over sẽ xuất hiện.

    Để bắt đầu, tạo một sprite có tên là MesengerWin, sử dụng tệp mesenger-win.png. Đặt nó ở giữa layout, thay đổi thuộc tính Layer của nó thành UI, và thay đổi thuộc tính Intial Visibility thành Invisible. Tương tự ta tạo một sprite có tên là MessengerLose sử dụng tệp hình ảnh messenger-lose.png và đặt nó ở giữa layout, thiết lập thuộc tính Layer sang UI, và khiến nó vô hình (invisible). Tiếp theo, thêm một sự kiện với điều kiện System / Compare Two Values; trong cửa sổ tham số, nhập Asteroid.Count ở giá trị đầu tiên, Equal ở phần so sánh và 0 ở giá trị thứ hai. Thêm hành động cho sự kiện này, lựa chọn đối tượng MessengerWin và hành động Set Visible, với tham số Visible. Cuối cùng, thêm một sự kiện với điều kiện System / Compare Two Values; trong cửa sổ tham số, nhập Spaceship.Count cho giá trị đầu tiên, Equal cho phần so sánh và 0 cho giá trị thứ hai. Thêm hành động cho sự kiện này để thiết lập cho tính hữu hình của đối tượng thành có thể nhìn thấy (visible). Lưu và chơi thử game của bạn, hãy kiểm tra cả thắng và thua để đảm bảo nó hoạt động tốt.






    Bài 7. Thêm các thành phần phụ


    Tại thời điểm này, bạn đã thực hiện cơ chế cốt lõi của trò chơi Space Rocks: điều khiển con tàu, tàu vũ trụ, tiểu hành tinh và laser tương tác với nhau; có một số hiệu ứng đặc biệt để đưa ra cách nhìn hấp dẫn cho người chơi; con tàu có thể dịch chuyển ngẫu nhiên; có điều kiện thắng và thua trong trò chơi. Phần này sẽ giải thích làm thế nào để thực hiện một số tính năng tuỳ ý, không bắt buộc để nâng qua trải nghiệm của người chơi. Đầu tiên, trong phiên bản hiện tại của người chơi, con tàu sẽ bị phá hủy bởi một cú va chạm; để thêm một số cân bằng cho trò chơi, ta sẽ thêm một lá chắn bảo vệ cho con tàu, cho phép nó có thể hứng chịu nhiều lần va chạm. Thứ hai, bạn sẽ tạo ra một số bất ngờ cho người chơi bằng cách thêm một vài kẻ địch (UFOs), sẽ xuất hiện ngẫu nhiên và di chuyển qua màn hình trong một đợt.

    1. Khiên phòng thủ


    Để bắt đầu, tạo một sprite có tên là Shields, sử dụng tệp hình ảnh shields.png. Thêm hành vi Pin và hành vi Solid. Vị trí của tấm khiên ở trung tâm và đè lên tàu không gian. Cũng giống như đối tượng Fire trước đây, bạn cần định hình hành vi Pin, gắn sprite vào đối tượng khác, sử dụng một sự kiện. Trong event sheet, tìm một sự kiện bạn đã tạo trước đây với điều kiện System / On Start of Layout. Thêm một hành động khác tới sự kiện này, lựa chọn đối tượng Shields và hành động Pin; trong cửa sổ tham số, lựa chọn đối tượng Spaceship. Sự va chạm với tấm khiên nên dừng sự di chuyển của con tàu. Để triển khai tính năng này, hãy tạo một sự kiện mới. Cụ thể, đối với điều kiện, chọn đối tượng Asteroid và điều kiện On collision with. Trong cửa sổ tham số, lựa chọn đối tượng Shields; với hành động, chọn đối tượng Spaceship và hành động Stop từ nhóm Custom Movement: Velocity. Khi bạn hoàn thành, sự kiện sẽ trông như hình dưới đây. Lưu lại và chơi thử trò chơi của bạn, bạn sẽ thấy khi bạn di chuyển con tàu xung quanh, các tiểu hành tinh va vào lá chắn, và do lá chắn lớn hơn con tàu cho nên điều này sẽ ngăn chặn tiểu hành tinh đâm vào con tàu.




    Tại thời điểm này, tấm khiên sẽ bị phá huỷ, theo nghĩa là người chơi sẽ không thua. Những gì ta cần bây giờ là một cách để “thiệt hại” tấm khiên: sau một số lần va chạm nhất định, khiên cần bị phá huỷ và hơn nữa, ta cần có một hình ảnh trực quan cho người chơi biết nó đã bị hỏng.

    Có một cách để hoàn thành cả hai mục đích đó là sử dụng độ mờ của tấm là chắn như thước đo “sức khoẻ” của nó. Giá trị ban đầu của độ mờ là 100, sau mỗi lần va chạm, giá trị này sẽ giảm xuống theo số lượng cố định. Nếu giá trị về 0 thì tấm khiên sẽ bị phá huỷ và người chơi sẽ thua nếu để con tàu va chạm thêm lần nữa.


    Để làm điều này, hãy tìm một sự kiện bạn đã tạo trước đây với một điều kiện là tiểu hành tinh va chạm với tấm khiên. Thêm một hành động cho sự kiện này, chọn đối tượng Shields và hành động Set Opacity; trong cửa sổ tham số, nhập Shields.Opacity – 25. Điều này sẽ thiết lập giá trị mới của độ mờ của tấm khiên. Vì vậy, sau bốn lần va chạm, độ mờ sẽ là 0. Vào lúc này, bạn nên chỉ định rằng tấm lá chắn sẽ bị phá huỷ (nếu không nó vẫn sẽ bảo vệ con tàu dù không nhìn thấy nó). Để làm điều này, thêm một sự kiện mới. Với điều kiện, chọn đối tượng Shields và điều kiện Compare opacity; trong cửa số tham số, thay đổi so sánh (comparison) thành nhỏ hơn hoặc bằng (less or equal), và giá trị tới 0. Đối với hành động, lựa chọn đối tượng Shields và hành động Destroy. Lưu lại và chơi thử để đảm bảo nó hoạt động như mong đợi.



    2. UFOs


    Trong phần phụ này, bạn sẽ thêm một vài kẻ thù được sinh sản ngẫu nhiên thường xuyên. Kẻ thù này bị động, chúng sẽ không phản ứng với con tàu của người chơi ngoài việc đi qua màn hình. Kẻ thù sẽ xuất hiện ngẫu nhiên ở bên ngoài phía trái của layout và di chuyển sang phải theo từng đợt. Thử thách này sẽ khiến người chơi gặp nhiều khó khăn hơn trong việc tránh né và bắn. Khi thêm một đối tượng mới, có rất nhiều hướng mà bạn phải quyết định. Ngoài các mẫu chuyển động, bạn cũng cần phải quyết định xem nhân vật có khả năng nào, các nhân vật tương tác với mọi đối tượng khác trong trò chơi như thế nào, cách mà các nhân vật có thể làm ảnh hưởng đến điều kiện thắng-thua của trò chơi, và điều gì sẽ xảy ra khi trò chơi kết thúc. Sau đây, mỗi vấn đề sẽ được giải quyết.

    Đầu tiên, Thêm một sprite mới được gọi là UFO với hình ảnh ufo.png và đặt nó ở vị trí như hình dưới đây. Thêm hành vi Bullet cho UFO sprite và ở thành Properties, thay đổi Speed thành 125. Đồng thời thêm hành vi Sine, thiết lập Movement thành Vertical, thiết lập Period thành 1 và thiết lập Magnitude thành 25. Điều này sẽ khiến cho UFO di chuyển như mô tả trước đó.


    Tiếp theo, bạn sẽ thêm chức năng để sản sinh ra UFO ở bên trái màn hình và tự động huỷ ở bên phải màn hình. Thêm một sprite mới có tên là SpawnPoint; cái này sẽ được đặt ở bên ngoài màn hình và sẽ được sử dụng để sinh ra các phiên bản mới của UFO sprite. Các hình ảnh bạn sử dụng cho SpawnPoint sẽ không bao giờ được nhìn thấy bởi người chơi, thế nên hãy làm nó đơn giản thôi và sử dụng công cụ chỉnh sửa hình ảnh của C2 là đủ. Vì ta không nhất thiết phải sử dụng hình ảnh 250x250 px nên hãy sử dụng công của Resize để thay đổi kích thước thành 32x32 px. Khi bạn hoàn thành, đóng cửa sổ chỉnh sửa và đặt sprite đó ở lề bên trái của layout.




    Trong event sheet, tạo một sự kiện mới. Đối với điều kiện, chộn đối tượng System và từ nhóm Time, chọn điều kiện Every X Seconds condition. Trong cửa sổ tham số, nhập 5 cho khoảng thời gian (interval) và kích vào nút Done. Điều kiện này sẽ đúng mỗi 5 giây một lần. Tiếp theo, bạn thêm một vài hành động để định vị ngẫu nhiên đối tượng SpawnPoint và tạo ra một UFO. Kích vào Add action, chọn đối tượng SpawnPoint và từ nhóm Size & Position chọn Set Y. Trong cửa sổ tham số, nhập random(100, 500). Điều này tương tự bạn đã làm trước đó khi tạo sự kiện dịch chuyển, ngoại trừ việc bạn chỉ thay đổi toạ độ Y (vị trí dọc). Ngoài ra, ta chọn số ngẫu nhiên từ 100 đến 500 để tránh sprite được sản sinh ngay mép màn hình (nếu để từ 0 đến 600 rất có thể sprite sẽ được sinh ra ngay ở cạnh trên hoặc cạnh dưới màn hình). Thêm một hành động khác cho sự kiện này, một lần nữa chọn đối tượng SpawnPoint. Từ danh sách các hành động, lựa chọn Spawn Another Object, và trong cửa sổ tham số, chọn đối tượng UFO. Cuối cùng, bạn cần thêm một sự kiện khác sẽ bỏ UFO ra khỏi trò chơi sau khi nó đã vượt qua ranh giới bên phải của layout. Thêm một sự kiện mới, chọn đối tượng UFO, và từ danh sách các điều kiện, chọn Compare X từ nhóm Size & Position. Trong cửa sổ tham số, thay đổi Comparison thành Greater than và thay đổi X thành 900. Thêm một hành động cho sự kiện này, lựa chọn đối tượng UFO, và lựa chọn Destroy từ danh sách các hành động. Khi bạn đã hoàn thành, bạn sẽ có sự kiện như hình dưới đây. Lưu lại và chơi thử trò chơi của bạn để chắc chắn nó không có lỗi.




    Tiếp theo, bạn cần phải xác định các UFO sẽ tương tác với từng đối tượng trên màn hình như thế nào. Dưới đây là toàn bộ tương tác có thể xảy ra:
    • UFO va chạm với một tiểu hành tinh, UFO bị phá huỷ.
    • UFO va chạm với laze, cả hai bị phá huỷ.
    • UFO va chạm với tàu vũ trụ, cả hai bị huỷ.
    • UFO va chạm với lá chắn, UFO bị phá huỷ và độ mờ của lá chắn giảm đi 25.

    Ngoài ra, bất cứ khi nào một UFO bị phá huỷ, một hiệu ứng nổ sẽ được sinh ra tại vị trí của UFO. Những sự kiện này tương tự các sự kiện bạn đã tạo ra trước đây. Hãy tự tạo các sự kiện này nhé (nếu cần bạn có thể đọc lại các sự kiện trước để nhớ rõ hơn). Khi bạn hoàn thành, bạn sẽ có bảng sự kiện như dưới đây:




    Cuối cùng, bạn cần phải xem xét những gì sẽ xảy ra với UFO vào cuối trò chơi, hãy lên kế hoạch cho tất cả các trường hợp có thể. Đặc biệt, với sự bổ sung của đối tượng UFO, nó thật sự có thể kích hoạt cả hai điều kiện thắng và thua cùng một lúc. Ví dụ, người chơi đã mất hết lá chắn nhưng cũng đã phá huỷ tất cả các tiểu hành tinh, và rồi một ngày đẹp trời, trong sự hân hoan chiến thắng, người chơi tự dưng va phải một cái UFO còn đang lơ lửng trên màn hình. Để tránh trường hợp này, SpawnPoint và UFO nên bị phá huỷ khi người chơi đã đạt điều kiện thắng. Ngoài ra, bạn có thể sử dụng hiệu ứng Warp để UFO không biến mất đột ngột, mất đi sự trực quan.


    Trong event sheet, xác định sự kiện chứa điều kiện thắng: khi số lượng tiểu hành tinh bằng 0 (when the asteroid count is equal to 0). Thêm các hành động khác cho sự kiện này: SpawnPoint bị phá huỷ, UFO sinh ra hiệu ứng Warp, UFO bị phá huỷ. Khi bạn đã hoàn thành, bạn sẽ có một sự kiện như hình dưới. nếu không có UFO trên màn hình trò chơi, thì sự kiện này sẽ không có hiệu lực. Tương tự, sau khi phá huỷ đối tượng SpawnPoint, sự kiện tạo ra UFO mỗi 5 giây trước đó cũng bị vô hiệu.




    Chúc mừng, bạn đã hoàn thành phần phụ cho trò chơi. Trò chơi của bạn giờ đã hoàn thiện hơn và đầy đủ các tính năng bổ sung góp phần tăng thêm sự thú vị cho người chơi.

    3. Tự thân vận động


    Như thường lệ, bạn nên tiếp tục thử nghiệm trò chơi của mình để làm cho nó trở nên thú vị hơn. Ví dụ, bạn nên cho một người khác chơi thử để xác định được mức độ của trò chơi (nó quá dễ hay quá khó). Tại thời điểm này, bạn đã chơi thử trò chơi của mình rất nhiều lần, có lẽ bạn sẽ thấy nó dễ dàng hơn với người chơi khác. Do đó, kiếm một người đánh giá game để lấy thông tin phản hồi là một điều vô cùng quan trọng trong quá trình phát triển trò chơi. Để cải thiện sự cân bằng của trò chơi, có nhiều đối tượng và tham số mà bạn có thể điều chỉnh. Với tiểu hành tình, bạn có thể thay đổi tốc độ, kích thước, vị trí ban đầu. Bạn có thể thêm một vài tính ngẫu nhiên cho trò chơi bằng cách thay đổi góc của tiểu hành tinh bằng một số ngẫu nhiên (giữa 0 và 360). Bạn có thể thay đổi độ bền của tấm lá chắn bằng cách thay đổi giá trị của độ mờ sau mỗi lần va chạm. Bạn có thể thay đổi số lượng UFO được sinh ra cũng như tốc độ di chuyển của chúng. Bạn có thể thay đổi một cách cân bằng hơn giữa các đối tượng.


    Ngoài ra, bạn cũng có thể thêm các đối tượng khác cũng như thay đổi cơ chế gameplay. Ví dụ, bạn có thể thêm một sprite chẳng hạn như một mặt trăng, thêm hành vi Solid và đặt nó ở giữa layout. Nếu bạn làm vậy, bạn phải xác định nó tương tác với các đối tượng khác như thế nào. Hoặc bạn có thể tạo ra một sprite mới như là PowerUp có thể giúp hồi phục lại tấm khiên bằng cách nếu tàu vũ trụ va chạm với nó thì độ mờ của tấm khiên sẽ tăng lên 25 điểm. Và những sprite PowerUp này chỉ xuất hiện khi UFO bị phá huỷ. Đây chỉ là một vài ý tưởng dành cho bạn. Hãy thử tự suy nghĩ nhé. Sự tưởng tượng là vô hạn mà. Chúc các bạn vui vẻ.


    Tổng kết


    Trong chương này, bạn đã được học về các hành vi mới (Warp, Custom Movement, BulletPin). Bạn đã tạo hoạt ảnh dựa trên hình ảnh. Cung cấp các hình ảnh trực quan dành cho người chơi như hiệu ứng nổ, dịch chuyển. Bạn cũng đã được sử dụng hàm ngẫu nhiên random(x, y) để tạo ra những sự bất ngờ.

    Trong chương tiếp theo, bạn cũng sẽ sử dụng các kĩ năng này và tạo ra một trò chơi thu thập được gọi là Cleanup Challenge.




    Bản dịch do construct2vn.ga thực hiện
    Ai sao chép hay chia sẻ hãy ghi nguồn và đưa link www.construct2vn.ga vào đầu bài chia sẻ nhé

  • DONATE TINH THẦN CHO BLOG TẠI ĐÂY

    Nếu các bạn thấy blog có ích hãy ủng hộ blog hàng ngày tại đây. Chỉ cần thi thoảng chơi game và tìm bug cho tụi mình là được. Đây là ủng hộ tinh thần, không phải tiền mặt, vật chất và không bắt buộc. Xin chân thành cảm ơn ahihi. Chúc các bạn một ngày zui zẻ.

    TELEPHONE

    02273 7x2 xxx
    02273 xxx 27x

    MOBILE

    0162 x15 xx33