Jabberwalk: Procedural Map Generation

chevron-icon
RFP Proposals
Top
chevron-icon
project-presentation-img
Luke Mahoney (MLabs)
Project Owner

Jabberwalk: Procedural Map Generation

Expert Rating

n/a

Overview

Many video games, such as Rogue, Diablo, and No Man’s Sky use procedurally-generated maps to help build large worlds that offer fresh experiences with every new play-through. We believe that the non-determinism offered by MeTTa can facilitate an interesting approach to this task, and serve as an interesting demo. We aim to write a demo MeTTa program for generating and viewing randomly-generated maps. We believe that this will offer value in the fact that these algorithms are well-established and researched, and so they may offer a good way of comparing MeTTa to other languages. Additionally, viewing the output of a MeTTa program may help people understand the language better.

RFP Guidelines

Develop interesting demos in MeTTa

Internal Proposal Review
  • Type SingularityNET RFP
  • Total RFP Funding $100,000 USD
  • Proposals 21
  • Awarded Projects n/a
author-img
SingularityNET
Aug. 12, 2024

Create educational and/or useful demos using SingularityNET's own MeTTa programming language. This RFP aims at bringing more community adoption of MeTTa and engagement within our ecosystem, and to demonstrate and expand the utility of MeTTa. Researchers must maintain demos for a minimum of one year.

Proposal Description

Proposal Details Locked…

In order to protect this proposal from being copied, all details are hidden until the end of the submission period. Please come back later to see all details.

Proposal Video

Not Avaliable Yet

Check back later during the Feedback & Selection period for the RFP that is proposal is applied to.

  • Total Milestones

    3

  • Total Budget

    $25,000 USD

  • Last Updated

    9 Dec 2024

Milestone 1 - Formulate Method for Representing Atomspace Tiles

Description

Create a system for representing tiles and their relationship to all other tile types. Typically each tile in a game map can only seamlessly integrate with a subset of the total number of available tiles. The first step is to represent tiles as atoms in a MeTTa Atomspace. We can do this with code such as `(tile "Foyer 1")` or `(tile "Tree on grass")`. We can then represent the possible neighbors of each tile type in this same Atomspace. This can be accomplished with code such as `(neighbors (tile "Beach") (tile "Ocean"))` or `(neighbors (tile "Beach") tile "Sand"))`. This will allow us to process the possible configurations for each generated map. For this milestone we will create atoms such as the ones listed above as well as any and all auxiliary functions and expressions needed to represent tiles of a map and the relationships they may have to other tiles.

Deliverables

MeTTa library plus examples for representing game map tiles in an Atomspace

Budget

$2,500 USD

Success Criterion

1. A formal representation of game map tiles is created 2. All edge cases and use scenarios are accounted for

Milestone 2 - Procedurally Generate a Map

Description

Translate pre-established generation algorithms into MeTTa for use with the atoms listed above. In this step we will write an algorithm in MeTTa for generating maps procedurally. Map-generating algorithms have already been well-established and researched. In particular to leverage MeTTa’s inherent use with non-determinism we will implement the “drunkard’s walk” algorithm (https://en.wikipedia.org/wiki/Random_walk). In this algorithm a random point is selected. We assign a tile to that point then move in a random direction. We then assign a suitable tile to that new point. We repeat this for a preset number of steps until we start from a new point and start over. To ensure that the algorithm completes every time we select a new starting point it will be at a new tile.

Deliverables

MeTTa library implementing drunkard’s walk algorithm

Budget

$17,500 USD

Success Criterion

1. The drunkard’s walk algorithm is recreated in MeTTa 2. The code is clean and easily understood, with many comments explaining what is happening

Milestone 3 - Visualization

Description

Visually display the generated map to the user. Once we have generated the maps it would be good to visualize them. We can do this by using existing Python libraries such as matplotlib. We can use Python to generate the Atomspace containing the tiles and what neighbors each can have. We can then integrate this with the functions created in milestone 2 to create a full MeTTa program that can be run in Python’s MeTTa interpreter. We can then take that output and use it to construct an image that can be shown to the user. The user can then determine if the map is suitable or if a new one should be generated.

Deliverables

Python tooling around the MeTTa program for visualizing the output of the random walk algorithm

Budget

$5,000 USD

Success Criterion

1. The output of the random walk algorithm is easily seen and understood by the user 2. The user is able to understand by looking at generated output how powerful MeTTa is

Join the Discussion (0)

Expert Ratings

Reviews & Ratings

    No Reviews Avaliable

    Check back later by refreshing the page.

feedback_icon