-->

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




    Chương 3. Space Rock


    Trong chương này, bạn sẽ tạo một trò chơi bắn súng không gian được gọi là Space Rock.




    Bài 1. Giới thiệu


    Trong Space Rocks, người chơi điều khiển một con tàu vũ trụ, với mục tiêu là bay vòng quanh và bắn laze để phá huỷ các tiểu hành tinh trên màn hình. Người chơi cũng cần cẩn thận không để tàu bị va chạm với các tiểu hành tinh, vì chúng sẽ phá huỷ tàu vũ trụ. Không gian vũ trụ trò chơi sử dụng là wrap_around, có nghĩa là khi đối tượng di chuyển ra cạnh của màn hình, nó sẽ xuất hiện ở phía bên kia. Người chơi sử dụng bàn phím để điều khiển tàu vũ trụ, có thể rẽ trái hoặc phải, và di chuyển về phía trước – hướng mà nó đối mặt đồng thời bắn laze. Tàu vũ trụ cũng có khả năng dịch chuyển đến một vị trí ngẫu nhiên trên màn hình, rất hữu ích để thoát khỏi một sự va chạm sắp xảy ra với một tiểu hành tinh. Trò chơi này cũng có hoạt ảnh và hiệu ứng hình ảnh đặc biệt, chẳng hạn như tên lửa hay vụ nổ cũng như các tính năng tuỳ chọn bổ sung, bạn sẽ học cách thêm lá chắn để bảo vệ con tàu và thêm các UFO ngẫu nhiên được sinh ra và đưa ra trở ngại khác cho người chơi.

    Qua chương trước, bạn đã có thể thay đổi thuộc tính của layout và project, thêm các layer vào layout, thêm sprite và điều chỉnh thuộc tính của chúng, thêm hành vi tới sprite và tạo sự kiện với các điều kiện và hành động nhất định. Trong chương này, bạn sẽ tìm hiểu về một số hành vi mới, hoạt ảnh và chức năng cho các sự kiện.

    Để bắt đầu, tải xuống tệp .zip chứa đồ hoạ của chương này. Trong các thuộc tính của layout, thiết lập layout Name thành Main, thiết lập Size thành 800, 600 và thiết lập 3 layer tên là Background, MainUI như bạn đã làm ở chương trước. Trong thuộc tính project, thay đổi Window size thành 800, 600 (và thay đổi thuộc tính Name Author như bạn muốn). Trong khu vực layout, tạo một sprite đặt tên là OuterSpace, sử dụng hình ảnh space.jpg, đặt lại và chỉnh kích cỡ để nó bao phủ hoàn toàn khu vực layout. Thay đổi thuộc tính Layer để OuterSpace sprite ở trên Background layer. 




    Bài 2. Sự chuyển động của tàu không gian


    Bước tiếp theo là thêm nhân vật cho người chơi: tàu không gian. Để bắt đầu, thay đổi layer trong bảng layer tới Main. Tạo một sprite có tên là Spaceship sử dụng tệp hình ảnh spaceship.png. Đặt nó ở gần trung tâm của layout. Mục tiêu đầu tiên của bạn là thiết lập các sự kiện cho sự di chuyển của tàu không gian, như được mô tả trong phần giới thiệu của chương. 



    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é.


    Kích chuột phải vào khu vực layout và chọn Insert New Object. Trong cửa sổ xuất hiện, bên dưới tiêu đề Input, lựa chọn Keyboard và ấn nút Insert (bạn không cần đổi tên đối tượng Keyboard). Đối tượng Keyboard cung cấp cho bạn khả năng kiểm tra bất kì phím bàn phím nào và xác định xem nó có được ấn hay không, có được giữ hay không (Bạn không cần thêm đối tượng Keyboard trong chương trước vì hành vi 8 Direction sẽ tự động kiểm tra đầu vào cho bàn phím).

    Sự kiện đầu tiên bạn thêm vào sẽ là, “Nếu phím mũi tên bên trái được giữ thì tàu sẽ quay ngược chiều kim đồng hồ 2 độ”. Có hai điểm cho sự kiện này đáng lưu ý trước khi tiếp tục. Đầu tiên, điều kiện kiểm tra xem liệu nút có đang được bấm; điều này sẽ đúng miễn là người chơi đang giữ nút. Thứ hai, hành động xoay 2 độ sẽ diễn ra 60 lần 1 giây, do đó, tốc độ quay thực sự là 120 độ 1 giây; vì một vòng tròn đầy đủ là 360 độ, tàu vũ trụ sẽ quay một vòng trong 3 giây.

    Để thêm sự kiện, hãy nhấp vào tab Event Sheet và kích Add event. Trong cửa sổ xuất hiện, lựa chọn đối tượng Keyboard và sau đó chọn điều kiện Key is down. Một cửa sổ mới sẽ xuất hiện chưa một nút. Kích vào nút này, và một cửa sổ khác sẽ xuất hiện, yêu cầu bạn bấm phím. Bấm phím mũi tên bên trái của bạn, và tên của phím được nhấn sẽ xuất hiện trong hộp văn bản ở cửa sổ này. Khi bạn hoàn thành, kích vào nút OK, và bạn sẽ được quay lại cửa sổ trước đó, nơi bạn có thể kích vào nút Done. Sau đó, trong event sheet, kích vào Add action bên cạnh điều kiện bạn vừa tạo. Chọn đối tượng Spaceship và sau đó lựa chọn hành động Rotate Counter-Clockwise từ nhóm Angle. Một cửa sổ sẽ xuất hiện nơi bạn có thể điền số độ để xoay, nhập 2 sau đó kích vào nút Done. Việc hoàn thành sự kiện này sẽ cho phép người chơi xoay tàu sang bên trái.




    Tiếp theo, bạn thêm sự kiện cho phép người chơi quay con tàu sang phải. Các bước để thêm sự kiện này khá giống bên trên, chỉ có 2 sự khác biệt: đầu tiên, khi chọn nút ở điều kiện, bạn phải ấn nút mũi tên bên phải, và thứ hai, khi tạo hành động của con tàu, bạn nên lựa chọn Rotate Clockwise từ danh sách của hành động.




    Bây giờ, tàu không gian của bạn đã có thể rẽ trái hoặc phải, bước tiếp theo là tạo sự kiện để xử lí chuyển động tiến lên. Trong khi tạo ra các hành động trước đó, bạn có thể nhận thấy một số hành động trong nhóm Size & Position có thể áp dụng, chẳng hạn như Move ForwardMove at angle. Tuy nhiên, trong trò chơi này, sự di chuyển có phần tinh tế hơn: khi người chơi nhấn phím để kích hoạt con tàu, điều này sẽ khiến con tàu di chuyển nhanh hơn, nói cách khác là từ từ tăng tốc đến giá trị lớn nhất. Hơn nữa, khi người chơi thả phím này ra, con tàu không dừng lại ngay lập tức, thay vào đó, nó vẫn di chuyển theo cùng một hướng, cùng tốc độ, rồi mới dừng hẳn. Điều này rất có ý nghĩa trong bối cảnh này vì ở ngoài không gian không có lực đối lập (ma sát) để làm chậm tàu vũ trụ. Cách duy nhất để người chơi giảm tốc độ đó là xoay tàu vũ trụ theo hướng ngược lại và kích hoạt tăng tốc để chống lại gia tốc.


    Để thực hiện phong cách di chuyển này, bạn sẽ tạo một sự kiện “Nếu mũi tên chỉ lên được nhấn, thì tăng tốc tàu không gian với tốc độ 100, theo hướng mà tàu vũ trụ phải đối mặt”. Tăng tốc không phải là thuộc tính mặc định có sẵn cho các đối tượng, chính vì vậy để tạo hành động này, bạn phải thêm một hành vi đầu tiên mà cung cấp chức năng này. Lựa chọn đối tượng Spaceship trên layout và thêm một hành vi được gọi là Custom Movement. Sau đó, ở event sheet, tạo một sự kiện mới, lựa chọn đối tượng Keyboard và điều kiện Key is down, và lựa chọn Up arrow key. Tiếp theo, thêm một hành động tới sự kiện này, lựa chọn đối tượng Spaceship và hành động Accelerate toward angle trong nhóm Custom Movement: Velocity. Một cửa sổ sẽ xuất hiện, nơi bạn sẽ nhập giá trị cho hành động này. Trong hộp văn bản Acceleration, nhập 100. Ở hộp văn bản Angle, nhập Spaceship.Angle. Đặc biệt, đừng quên dấu chấm ở giữa SpaceshipAngle; dấu chấm chỉ ra rằng các chương trình nên sử dụng giá trị của thuộc tính Angle thuộc các đối tượng Spaceship (trái lại với các thuộc tính Angle của các đối tượng khác). Khi kết thúc, bạn sẽ có màn hình như hình ảnh như sau:




    Một cơ chế gameplay khác mà bạn có thể dễ dàng thêm vào lúc này đó là wraparound; khi tàu vũ trụ di chuyển qua một cạnh của màn hình, nó sẽ quay trơ rlaij màn hình ở cạnh đối diện, như thể các cạnh đã được kết nối. Để thực hiện tính năng này, lựa chọn đối tượng Spaceship và thêm hành vi Wrap.


    Bây giờ là thời điểm tốt để lưu và test dự án của bạn. Sau khi lưu lại (thông thường, tệp .capx là định dạng được ưu tiên), kích vào nút Run layout trong thanh tiêu đề của C2. Hãy chắc chắn ràng các phím mũi tên phải và trái và xoay tàu sang trái hoặc phải tương ứng, và mũi tên lên sẽ tăng tốc độ cho tàu về bất cứ hướng nào mà nó đối diện. Khi bạn kiểm tra các điều khiển, bạn có thể nhận thấy rằng bạn có thể tiếp tục tăng tốc tàu với một tốc độ cực kì flash, khiến tàu vũ trụ chớp nháy hoặc di chuyển quá nhanh khiến nó xuất hiện ở nhiều nơi cùng 1 lúc. Chúng ta sẽ giải quyết vấn đề này bằng cách tạo ra một sự kiện mà cưỡng chế tốc độ của tàu vũ trụ nhỏ hơn một con số nhất định.


    Sự kiện tiếp theo sẽ giới hạn tốc độ của tàu vũ trụ ở mức 200 px/giây và có thể hiểu là “Nếu tốc độ của con tàu lớn hơn 200 thì thiết lập tốc độ của nó về 200”. Ở event sheet, thêm một sự kiện mới. Chọn đối tượng Spaceship và điều kiện Compare speed từ nhóm Custom Movement; trong cửa sổ tham số xuất hiện, thay đổi Comparison thành Greater than, và thay đổi giá trị của Speed thành 200. Thêm một hành động cho sự kiện này, lựa chọn đối tượng Spaceship và hành động Set speed từ nhóm Custom Movement: Velocity; trong cửa sổ tham số xuất hiện, thay đổi giá trị của speed thành 200, và kích vào nút Done. Khi bạn kết thúc, bạn sẽ có event sheet như hình dưới đây. Lưu và test lại dự án của bạn để xác minh nó hoạt động như mong đợi.




    Bài 3. Laser và Rock


    Trong phần này, bạn sẽ tạo ra các đối tượng bổ sung cho trò chơi Space Rocks: laze mà tàu cũ trụ có thể bắn ra và các tiểu hành tinh mà người chơi phải cố gắng bắn ra phá.


    Trong khu vực layout, chèn một đối tượng mới: một đối tượng tên là Laser. Đặt nó ở trên layout, trong vùng màu xám (off-screen) và sử dụng tệp hình ảnh tên là laser.png; điều chỉnh kích thước nếu cần thiết. Hầu hết chức năng của đối tượng laser có thể được thực hiện bởi hành vi. Đầu tiên, thêm một hành vi được gọi là Bullet. Hành vi Bullet sẽ khiến đối tượng di chuyển theo đường thẳng. Sau khi hành vi này được thêm vào, bạn sẽ thấy trong bảng Properties có tốc độ mặc định là 400 px/giây; bạn có thể điều chỉnh giá trị này sau này nếu muốn. Ngoài ra, thêm hành vi Wrap vì laze di chuyển qua cạnh bên của màn hình sẽ xuất hiện ở cạnh đối diện, giống như trường hợp của tàu vũ trụ. Tiếp theo, thêm hành vi có tên là Fade. Hành vi Fade sẽ khiến đối tượng mờ dần hoặc đậm dần sau một thời gian trì hoãn và có thể thiết lập để tự động phá huỷ các đối tượng sau khi chúng mờ hết 100%. Bạn phải sử dụng hành vi này, nếu không các laze sẽ quay mãi xung quanh màn hình cho đến khi nó trúng thứ gì đó. Trong bảng Properties bên dưới nhóm Fade, thay đổi Wait time thành 1, thay đổi Wait out time thành 0.5 và thiết lập After Fade Out Destroy.


    Tiếp theo, bạn sẽ thêm sự kiện bắn laze “Nếu phím cách được nhấn thì tàu sẽ tạo ra một laze”. Để bắt đầu, thêm một sự kiện mới vào event sheet. Về điều kiện, chọn đối tượng Keyboard, bạn cần chỉ định một phím, theo đúng các bước như trước, lựa chọn phím cách (space). Điều kiện này đúng chỉ khi phím cách được nhấn; mỗi lần phím cách được nhấn, chỉ một laze được phép bắn ra. Tiếp theo, thêm hành động tới sự kiện này, lựa chọn đối tượng Spaceship, và lựa chọn hành động Spawn Another Object (trong phát triển game, tạo một đối tượng trong suốt gameplay được gọi là sản sinh đối tượng). Trong cửa sổ tham số xuất hiện, kích vào và lựa chọn đối tượng Laser; trong hộp văn bản Layer, nhập Main (bao gồm cả dấu ngoặc kép). Kích vào nút Done và sự kiện của bạn đã hoàn thành. Chú ý là không cần thiết lập vị trí hay góc của laze được sản sinh bởi vì những giá trị này được tự động thiết lập khớp với các giá trị của đối tượng không sinh sản (trong trường hợp này là tàu vũ trụ). Giờ là thời điểm tốt để lưu và kiểm tra trò chơi. Đặc biệt, khi chơi trò chơi của bạn, hãy chắc chắn rằng nhấn phím cách sẽ bắn laze và xác minh rằng laze nằm trong xung quanh màn hình và biến mất sau một khoảng thời gian. Nếu bất kì tính năng nào hoạt động không đúng, hãy kiểm tra lại các hành vi và đảm bảo các giá trị được thiết lập một cách chính xác, và các sự kiện chính xác như dưới đây:




    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