---
title: Luanti | Open source voxel game engine
description: >-
  An open source voxel game engine. Play one of our many games, mod a game to
  your liking, make your own game, or play on a multiplayer server.
title_append: false
image: /media/favicon/194x194.png
layout: default
homepage: true
redirect_from:
  - /screenshots/
---

<section class="section section-home">
  <div class="container">
    <div class="columns is-centered">
      <div class="column is-10 is-9-desktop is-8-widescreen is-7-fullhd">
        <h1 class="title">Luanti (formerly Minetest)</h1>
        <p class="home-paragraph">
          An open source voxel game engine.
          Play one of our many games, mod a game to your liking, make your own game,
          or play on a multiplayer server.
        </p>
        <p class="home-paragraph">
          Available for Windows, macOS, GNU/Linux, FreeBSD, OpenBSD, DragonFly BSD, and Android.
        </p>
        <div class="home-buttons">
          <a class="button is-info is-size-5" href="#features">Tell me more</a>
          <a class="button is-primary is-size-5" href="{{ '/downloads/' | relative_url }}">Download</a>
        </div>
        <p class="is-size-6">
          <span class="has-text-weight-bold">News:</span>
          {% assign latest_version = site.data.release.latest %}
          {{ latest_version.version }} released.

          ({% include format_date.html date=latest_version.date %})
        </p>
      </div>
    </div>
  </div>
</section>

<section class="section">
  <div class="container">
    <h2 id="features" class="title section-title">Features</h2>
    <div class="columns is-centered">
      {% for category_hash in site.data.features %}
      {% comment %}
        The assignment below is required to be able to iterate on the nested hash.
      {% endcomment %}
      {% assign category = category_hash[1] %}

      <div class="column is-6 is-5-widescreen is-4-fullhd">
        <h3 class="title is-size-3 has-text-centered">{{ category.title }}</h3>

        {% for feature in category.features %}
        <h4 class="title feature-title">{{ feature.title }}</h4>
        {{ feature.description | markdownify }}
        {% endfor %}
      </div>
      {% endfor %}
    </div>
  </div>
</section>

<section class="section">
  <div class="container is-max-desktop blog-embed">
    <h2 id="blog" class="title section-title">Blog</h2>
    <iframe src="https://blog.minetest.net/embed_latest/" title="Latest Luanti Blog Post" frameborder="0"></iframe>
    <p>
      <a class="button is-primary" href="https://blog.minetest.net/">
        View more blog posts
      </a>
    </p>
  </div>
</section>

<section class="section">
  <div class="container">
    <h2 id="gallery" class="title section-title">Gallery</h2>
    <div class="columns is-multiline">
      {% comment %}
        Thumbnail file names are inferred from the image name.
        For example, the thumbnail for `foo.jpg` will be `foo-thumb.jpg`.
      {% endcomment %}

      {% for image in site.data.gallery %}
        <figure class="column is-half">
          <a class="image is-16by9" href="{{ image.image | relative_url }}">
            <img
              style="background-color: #ccc"
              src="{{ image.image | replace: ".", "-thumb." | relative_url }}"
              alt="{{ image.title }}">
          </a>
          {% if image.title %}
            <figcaption>{{ image.title | markdownify }}</figcaption>
          {% endif %}
        </figure>
      {% endfor %}
    </div>
  </div>
</section>
