Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Cover image for Bevy Minesweeper: Introduction
Qongzi
Qongzi

Posted on

     

Bevy Minesweeper: Introduction

Check the repository

Hello, in this tutorial we will introduce game development in Rust usingBevy, a free and open source data-driven game engine.

The final result of this course is a cross-platform minesweeper you can test in thislive version:

Demo

Disclaimer

The tutorial focuses on the following goals:

  • Breakdown basic Bevy features and the ECS making a minesweeper
  • Using development tools such as the inspector gui, the logger, etc.
  • Developing a generic bevy plugin making good use of the state system and resources
  • Having Web Assembly support

The programming choices are not the most efficient but allow to fulfill the goals. For example, you may notice that the uncovering system has a 3 to 4 frames delay:

  • frame 1: click event read and tile trigger event send
  • frame 2: tile trigger event read and Uncover component insert
  • frame 3: Actual uncovering

There are better ways to do this but this way you learn to receive and send events, place components in order for asystem to query it, etc.

A decent understanding of the Rust language is a prerequisite.

Note that this is my first Bevy project, there may be improvements so trust the latest version of the code.

Technologies

Why an ECS?

I have experience in game development usingUnity3D component system using C#.
It is very user-friendly, but I think Object-oriented programming is getting obsolete, and I wanted to try an Entity component system.

Unity made an ECS, why not use it?

Unity is taking the leap towards ECS, but looking at thedocumentation I found it very complex and honestly, bad.
Maybe they were forced to compromise with the existing core but it doesn't stand the comparison with Bevy's ECS.

Why Rust?

I love the rust language, I love game dev, I wanted to try the combination.
Also, since I wanted to experiment with an ECS which is the incarnation of theCompound VS Inheritance pattern in game dev,
using Rust is very natural.

Furthermore, I find garbage collection to be a critical issue in game dev and Rust completely wipes it away.

Resources

We will be using the 0.6 version of theBevy engine:

Some resources I used that you should check out:

The assets I used are not mine, they are all free for personal use, please check thecredits.

I suggest you follow the tutorial using a modern IDE, like Jetbrains CLion or VS Code with theRust plugin.

ECS

So what's an Entity component system?

The Unitydocumentation has a nice graphic explanation of ECS:

ECS Infographic

It's a data-oriented coding paradigm using the following elements:

  • Entities: representing an object via a simple identifier (usually a classic integer)
  • Components: structures that can be attached toentities, containing data but no logic
  • Systems: functions usingComponentqueries to apply logic

The point is to apply identical logic to allHealth components instead of applying logic to a complete object.
It is more modular and makes it easier to manage in threads.

The final element would beResources which are data shared acrosssystems.


Next Chapter


Author: Félix de Maneville
Follow me onTwitter

Published byQongzi

Top comments(1)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss
CollapseExpand
 
kapaseker profile image
PangoSea
  • Joined

Good job

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

  • Joined

More fromQongzi

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp