-->

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



    Bài 3. Những ngôi sao và điểm số

    Trong phần này, các bạn sẽ thêm những ngôi sao vào trò chơi để người chơi thu thập, một biến toàn cầu để theo dõi số sao thu được, và một đối tượng Text để hiển thị thông tin này. Để bắt đầu, trong event sheet, kích chuột phải và thêm một biến toàn cầu (global variable); thiết lập Name là Score, Type là Number và Description là Số sao thu được.

    Tiếp theo, trong layout, thêm một sprite có tên là Star với hình ảnh star.png. Thêm hành vi Bullet, với Speed đặt là 200 (để khớp với tốc độ của Ground) và thiết lập Set Angle thành No. Đồng thời, để thu hút sự chú ý của người chơi vào những vật thể này, bạn sẽ thiết lập một vài hoạt ảnh dựa trên giá trị. Thêm hành vi Rotate với Speed là 30. Đồng thời thêm hành vi Sine, với Movement là Size, Period là 1 và Magnitude là 8. Trong khi đó ở layout, thêm một đối tượng Text đặt tên là TextScore. Thiết lập thuộc tính Text của nó thành 0, hiển thị số đếm ban đầu. Đồng thời, thiết lập layer của nó thành UI, làm cho hộp văn bản to hơn một chút, thiết lập các thuộc tính căn chỉnh sao cho văn bản được căn ở giữa, và thay đổi kích cớ phông chữ để nó có thể dễ dàng được đọc (chẳng hạn như Arial, cỡ 48). Để khiến cho văn bản trở nên nổi bật hơn, ta sao chép văn bản thành 2 cái, một cái màu đen và một cái màu trắng. Sắp xếp văn bản màu đen xuống dưới rồi đè văn bản màu trắng lên trên một chút, điều này sẽ tạo ra một hiệu ứng đẹp.


    Bây giờ, bạn sẽ thiết lập ba sự kiện liên quan đến đối tượng Star: một sự kiện để tạo ra Star, một sự kiện dành cho thời điểm người chơi thu thập được ngôi sao và khi người chơi không thu thập được ngôi sao rồi nó ra khỏi màn hình sang bên trái.

    Đầu tiên, tạo một sự kiện mới với điều kiện System - Time: Every X seconds, và thiết lập Interval thành 2. Thêm một điều kiện tới sự kiện này là Player - Size & Position: Is on-screen; mục đích của điều kiện thư hai này là ngừng sản sinh ra các ngôi sao khi người chơi thua. Tiếp theo, bạn sẽ thêm một hành động sản sinh ra các bản sao của ngôi sao bên ngoài layout. Các sprite có thể sản sinh từ một sprite khác, hoặc chúng có thể sản sinh từ đối tượng System; ở đây là sẽ thực hiện sản sinh theo System. Trong sự kiện này, thêm một hành động System - General: Create Object. Trong cửa sổ tham số, thiết lập Object to create là Star, thiết lập Layer là "Main" (có dấu ngoặc kép), thiết lập X là 700 và Y là random(100, 700). Hãy nhớ rằng các góc chuyển động cần được thiết lập bởi hành động, chính vì vậy, thêm một hành động được gọi là Star - Bullet: Set angle of motion và thiết lập Angle thành 180.

    Tiếp theo, bạn sẽ tạo sự kiện xử lí những gì xảy ra khi người chơi va chạm với một ngôi sao, đó là ngôi sao bị phá hủy, một điểm được thêm vào biến Score và đối tượng Text hiển thị giá trị score được cập nhật. Tạo một sự kiện mới với điều kiện Player - Collisions: On collision with another object, lựa chọn Star. Thêm 3 hành động tới sự kiện này:
    • Thêm Star - Misc: Destroy.
    • Thêm System - Global & local variables: Add to, thiết lập Variable là Score và Value là 1.
    • Thêm TextScore - Text: Set Text, và tiếp theo là Text nhập Score (không dùng dấu ngoặc kếp để giá trị của nó hiển thị, chứ không phải chính nó - từ score).
    Cuối cùng, bạn sẽ tạo ra sự kiện phá hủy ngôi sao một khi nó di chuyển ra khỏi màn hình. Điều quan trọng là bạn phải xác định nơi các ngôi sao được tạo ra ở bên phải vì bạn không muốn chúng bị phá hủy trong tình huống đó. Tạo một sự kiện mới với điều kiện Star - Size & Position: Is on-screen và đảo ngược (invert) điều kiện trên event sheet. Đồng thời thêm điều kiện Star - Size & Position: Compare X, thay đổi Comparison thành Less than, và thiết lập tọa độ X thành 0. Cuối cùng, thêm hành động Star - Misc: Destroy.

    Khi bạn đã hoàn thành 3 sự kiện trên, chúng sẽ xuất hiện như hình bên dưới. Lưu và test game của bạn rồi xác nhận những ngôi sao xuất hiện trên màn hình mỗi 2 giây và khi người chơi va chạm với ngôi sao, ngôi sao sẽ biến mất và người chơi có thể cập nhật điểm số.



    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 4. Kẻ địch

    Trong phần này, bạn sẽ thêm một vài máy bay địch để thêm sự thách thức cho trò chơi. Như một mức độ được thêm vào, bạn sẽ tạo một tập hợp các biến dùng để tăng độ khó theo thời gian. Tỉ lệ kẻ địch được sinh ra và tốc độ di chuyển của chúng sẽ tăng dần. Điều này rất hữu ích cho người chơi, nó sẽ khiến họ không cảm thấy nhàm chán và kĩ năng của họ sẽ tăng dần; họ sẽ có thể chơi trò chơi nhiều hơn để cải thiện điểm số của họ. Để bắt đầu, trong event sheet, tạo một biến toàn cầu, đặt tên nó là SpawnRate, thiết lập Type thành Number, thiết lập Initial value thành 2 và ở Description nhập Số giây kẻ thù sinh ra lần tới. Tiếp theo, tạo một biến toàn cầu mới, đặt tên là EnemySpeed, thiết lập Initial value thành 300 và Description nhập Được sử dụng khi thiết lập tốc độ máy bay địch mới được tạo ra

    Trong layout, tạo một sprite mới được đặt tên là Enemy. Thiết lập hoạt ảnh của nó như khi làm với máy bay của người chơi. Trong cửa sổ Animation frames, chèn tệp hình ảnh máy bay màu đỏ, quay mặt về phía bên trái, và thiết lập thuộc tính Speed thành 8, Loop thành Yes và Ping-pong thành Yes. Đặt máy bay địch ở ngoài màn hình, thêm hành vi Bullet và thay đổi Set Angle thành 0.

    Tiếp theo, bạn sẽ thêm tổng năm sự kiện liên quan đến kẻ địch vào event sheet. Ba trong số sự kiện đó sẽ tương tự với sự kiện liên quan tới ngôi sao mà bạn đã tạo trước đó: một sự kiện sản sinh biến mới, một sự kiện để xử lí va chạm với người chơi và một sự kiện để phá hủy đối tượng kẻ địch khi ra khỏi màn hình. Mỗi lần một kẻ địch mới được sinh ra, giá trị của biến SpawnRate và EnemyRate sẽ bị điều chỉnh; hai sự kiện còn lại sẽ đảm bảo rằng các giá trị của 2 biến này sẽ nằm trong phạm vi hợp lí.

    Trong bảng sự kiện, tạo sự kiện mới với điều kiện System - Time: Every X seconds, và thiết lập Interval thành SpawnRate. Thêm một điều kiện mới được gọi là Player - Size & Position: Is on-screen. Khi trò chơi kết thúc và máy bay của người chơi bị phá hủy, sự kiện này sẽ không còn được kích hoạt. Tiếp theo, thêm các hành động sau:
    • Thêm System - General: Create object, và trong cửa sổ tham số, thiết lập Object to create thành Enemy, thiết lập Layer thành "Main", thiết lập X thành 700 và Y thành random(100, 700).
    • Thêm Enemy - Bullet: Set angle of motion, và thiết lập Angle thành 180.
    • Thêm Enemy - Bullet: Set speed, và thiết lập Speed thành EnemySpeed.
    Cập nhật các giá trị của biến liên quan yêu cầu thêm hai hành động tới sự kiện này:
    • Thêm System - Global & local variables: Add to. Về Variable, lựa chọn EnemySpeed và với Value, nhập 10.
    • Thêm System - Global & local variables: Subtract from. Về Variable, lựa chọn SpawnRate và với Value, nhập 0.05.
    Tiếp theo, bạn sẽ tạo hai sự kiện mới tương tự với các sự kiện liên quan tới ngôi sao trước đó. Tạo sự kiện mới với điều kiện kiểm tra xem người chơi có va chạm với kẻ thù hay không và hành động tương ứng phá hủy đối tượng Player. Tạo một sự kiện khác với hai điều kiện để kiểm tra xem kẻ địch có xuất hiện trên màn hình hay không và so sánh giá trị X xem nó có nhỏ hơn 0 hay không; đồng thời thêm một hành động tương ứng phá hủy kẻ địch.

    Cuối cùng, bạn cần thiết lập các giới hạn hợp lí về giá trị của các biến. Nếu bạn nhớ thì trước đây bạn đã thực hiện điều này trong trò Space Rock, ở trong sự kiện kiểm tra tốc độ của tàu vũ trụ của người chơi; nếu tốc độ lớn hơn 200 thì nó sẽ bị thiết lập về 200; điều này đã giới hạn giá trị tốc độ của con tàu. Bạn sẽ tạo hai sự kiện tương tự trong trò chơi này. Sự kiện đầu tiên sẽ thiết lập hạn chế tốc độ máy bay địch sinh ra; nếu giá trị của SpawnRate quá gần với 0 thì máy bay địch sẽ được sinh ra liên tiếp, và người chơi sẽ không thể tránh chúng (điều này sẽ không công bằng và ức chế cho người chơi). Để giải quyết vấn đề này, bạn sẽ thiết lập một hạn chế nhỏ hơn 0.5 cho SpawnRate. Để thực hiện điều này, hãy tạo một sự kiện với điều kiện System - Global & local: Compare variable, thiết lập Variable thành SpawnRate, Comparison thành less than và Value thành 0.5. Sau đó tạo hành động System: Global and local variables: Set value, thay đổi Variable thành SpawnRate và Value thành 0.5. Một khi bạn hoàn thành, hãy tạo một sự kiện tương tự kể kiểm tra giá trị của EnemySpeed có lớn hơn 800 hay không, và nếu có thì thiết lập giá trị của nó thành 800.

    Khi bạn kết thúc, các sự kiện sẽ xuất hiện như trong hình dưới. Lưu lại và test thử xem để đảm bảo rằng kẻ thù trở nên nhanh hơn và xuất hiện nhiều hơn khi thời gian trôi qua.


    Khi bạn đã đạt tới thời điểm này thì xin chúc mừng, bạn đã hoàn thành gameplay cơ bản của Plane Dodge.

    Bài 5. Phần phụ

    Có rất nhiều tính năng mà bạn có thể xem xét để thêm vào trò chơi này. Ví dụ:
    • Hiệu ứng động khi ngôi sao được thu thập hoặc khi hai máy bay va chạm với nhau (bạn có thể sử dụng hình ảnh sparkle.png và exploision.png).
    • Nhạc nền.
    • Hiệu ứng âm thanh khi ngôi sao được thu thập hoặc khi máy bay nổ.
    • Điều khiển thay thế, cho phép người chơi sử dụng chuột để điều khiển thay vì phím cách.
    • Thêm một layout khác có nhiệm vụ như màn hình bắt đầu.
    • Các đối tượng khác sẽ xuất hiện khi người chơi thua, chẳng hạn như một văn bản Game Over và một vài nút để người chơi có thể chơi lại.
    Tổng kết

    Trong chương này, bạn đã học cách tạo ra một trò chơi vô tận, sử dụng scrolling background để tạo ảo giác về chuyển động. Bạn đã sử dụng tính chất trọng lực của hành vi Bullet. Để tránh cho trò chơi trở nên nhàm chán, bạn đã tăng tốc độ của trò chơi theo thời gian. Cuối cùng, bạn được gợi ý rất nhiều ý tưởng trong Phần phụ. 

    Trong chương tới, bạn sẽ tạo một trò chơi với góc nhìn từ trên xuống khi bạn tạo một trò chơi đua xe Racecar 500.


    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