Jabberwalk: Procedural Map Generation

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

Jabberwalk: Procedural Map Generation

Expert Rating

4.0

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

Complete & Awarded
  • Type SingularityNET RFP
  • Total RFP Funding $100,000 USD
  • Proposals 21
  • Awarded Projects 4
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

Company Name (if applicable)

MLabs

Project details

MeTTa is a new language developed by the OpenCog foundation that aims to help lay the groundwork for AGI by establishing “atoms” of knowledge that can be referenced, modified, and constructed by an AGI system. Because MeTTa is new, however, relatively few code examples exist. This project aims to help bridge that gap and allow for better community adoption of MeTTa.

In this project, we will implement the “drunkard’s walk” algorithm for game map generation (https://en.wikipedia.org/wiki/Random_walk). We believe that this provides a good example for the following reasons:

  1. This algorithm already exists in other languages. This allows a programmer to see an example of how to transfer an algorithm from one of those languages to MeTTa
  2. The output of such an algorithm is inherently visual, allowing a developer to be able to see the product of the algorithm
  3. There is an inherent fun factor due to the game aspect that makes it appealing to analyze

The deliverable will be a MeTTa library for generating game maps, a Python library for visualizing them, and examples of tile sets that can be fed into the algorithm and experimented with. The intention is that the output of this project will be a fun example that developers can analyze to better understand how MeTTa works.

Team

Nathaniel Lane, Senior AI Software Leader and Lead Data Scientist

Nathaniel Lane graduated summa cum laude from Colorado School of Mines with a degree in Computer Science. He went on to get a Master’s in Computer Science from Montana State University by researching how neural networks can be used to predict whether a given peptide has anti-cancer properties. Since then, he has worked at MLabs on a variety of projects, including “Memory-augmented LLMs: Retrieving Information using a Gated Encoder LLM (RIGEL)” from RFP round 3.

Eduardo Granado , Senior Software Developer - Project Software Architect and Data Scientist

Eduardo Granado is a seasoned Software Developer with extensive experience in functional programming, and AI-driven solutions. Eduardo has contributed to cutting-edge projects in decentralized finance, infrastructure development, and computational data analysis. His expertise spans backend development, and AI-powered data solutions. In the realm of AI and data-intensive computing, Eduardo developed DNA analysis tools at the University of Basel, implementing high-performance computational solutions. His AI and machine learning knowledge complement Nate’s skills, he will support Nate in all aspects of the project.

Challenges

As this is a smaller project, we aim to limit the scope to reduce risk. Nonetheless, some challenges still exist. In particular, MeTTa is a new language with few examples or tutorials. Additionally, MeTTa is so new that “best practices” have not yet been established. We aim to help set the foundation for such practices in this project. Our project team members are both highly experienced software architects, both of whom have a basic, but solid, understanding of MeTTa. We can further mitigate risk by calling on the experience of the wider MLabs AI team, and the SingularityNET community.

Open Source Licensing

MIT - Massachusetts Institute of Technology License

Links and references

Website

https://www.mlabs.city/

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

Group Expert Rating (Final)

Overall

4.0

  • Feasibility 4.7
  • Desirabilty 4.0
  • Usefulness 4.0
  • Expert Review 1

    Overall

    4.0

    • Compliance with RFP requirements 5.0
    • Solution details and team expertise 5.0
    • Value for money 4.0
    Interesting proposal from strong team

    Creative proposal showcasing MeTTa’s capabilities. Highlights MeTTa’s ability to represent relationships and apply randomness for practical tasks. Milestones are well-structured, but greater emphasis on MeTTa’s advanced features, such as symbolic reasoning or modularity, would better align with RFP goals. Experienced team, but overall depth of MeTTa utilization could be stronger. Promising as an educational and approachable demo.

  • Expert Review 2

    Overall

    3.0

    • Compliance with RFP requirements 4.0
    • Solution details and team expertise 3.0
    • Value for money 3.0

  • Expert Review 3

    Overall

    5.0

    • Compliance with RFP requirements 5.0
    • Solution details and team expertise 4.0
    • Value for money 5.0
    Developing procedural map generation in MeTTa seems like a good demo and could even potentially be useful for sophiaverse or other gaming applications

    I can see avenues for extending an initial version to incorporate more AGI-ish approaches via reasoning, MOSES etc. ... as later things-to-do building on top of this initial effort...

feedback_icon