core

package module
v0.0.0-...-f4b0e07 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2024 License: MIT Imports: 6 Imported by: 1

README

Go! Tame! Me!

Overview

Go! Tame! Me! is an ambitious simulation project, born from my personal journey with the classic game Ant!Me! nearly 20 years ago. This adventure was not only immensely fun but also profoundly educational, introducing me to the captivating world of simulation games. With Go! Tame! Me!, my aim is to channel the excitement I experienced with Ant!Me! into the modern realm of Go programming. This project, a personal endeavor of mine, is currently in its infancy, where ants are capable of performing basic tasks such as collecting sugar and utilizing markers for communication.

Current Capabilities

  • Basic Ant Behavior: Ants can navigate their environment to collect sugar and return it to their nest. They are also capable of setting markers containing information, facilitating communication among themselves. This forms a simple yet compelling challenge that captures the essence of what made Ant!Me! so intriguing.
  • Advanced Ant Behavior and Dynamic Role Assignment: Ants can now navigate their environment more effectively, with enhanced behaviors enabled by dynamic role assignment. This allows for more complex scenarios and interactions within the simulation.
Role Implementation:

Added new structures and functionalities to support diverse ant roles within the simulation, including adjustments for speed, rotation, load, vision, and more.

Planned Objectives

  • Dynamic Ant Simulation: I am committed to enhancing the dynamics and realism of ant behavior simulation.
  • Multiplayer Functionality: I envision developing an online multiplayer experience that connects players across the globe.
  • Custom Scenarios: I am passionate about providing a platform where players can unleash their creativity through the creation and sharing of unique scenarios.
  • AI Module Development: By introducing an open API for custom AI behavior development, I plan to expand the simulation's boundaries.

Extended Goals

In addition to development and crafting a dynamic ant simulation, one of my core ambitions with Go! Tame! Me! is to demystify the world of open-source development for all participants and users. As a personal project, it's designed to deliver genuine value and nurture learning experiences by leveraging the power of well-established open-source techniques and platforms. While GitHub (with its Pages, Issue Tracker, and Wiki) serves as a primary example, the project also embraces a broader ecosystem including Go (Golang), Git, and other open-source tools and platforms that contribute to an inclusive and educational environment. Here are some targeted objectives to foster this ethos:

  • Broad Open-Source Engagement: Encourage the use and understanding of a wide range of open-source tools and platforms beyond GitHub, emphasizing the versatility and community spirit of the open-source world.
  • Diverse Learning Experiences: Provide opportunities for participants to learn not just about coding, but about version control with Git, community interaction through issue tracking, and knowledge sharing via wikis and other platforms.
  • Community Collaboration: Promote a culture of collaboration and sharing, encouraging contributors to engage with the project in various capacities - from coding to documentation, design, and community management.
  • Open-Source Advocacy: Act as a beacon for open-source values, demonstrating the benefits of transparency, collaboration, and shared knowledge in software development and beyond.

This project is not just about developing a game; it's about creating a platform for learning, sharing, and growing together in the open-source community. By engaging with a variety of tools and platforms, Go! Tame! Me! aims to provide a comprehensive learning experience that showcases the richness and diversity of open-source software development.

Getting Started

Prerequisites
  • Go (version 1.22 or newer recommended)
  • Git (for cloning the repository)
Installation

To install and configure the Go! Tame! Me! CLI, follow these steps:

  1. Install the CLI using Go
go install github.com/gotameme/gtm-cli@latest
  1. Follow the instructions in the README.md of the CLI repository to finalize the setup and begin programming.

Acknowledgments

  • A heartfelt thanks to Ant!Me!, which nearly 20 years ago, not only provided immense enjoyment but also demonstrated the educational potential of combining gameplay with learning.
  • A big thank you to the Ebiten library, which has been instrumental in making this project possible.
  • Gratitude to the Go community for their unwavering support and resources.

Contributing

Your contributions are greatly appreciated! Whether adding new features, fixing bugs, or enhancing the simulation, your support is invaluable. Please consult our CONTRIBUTING.md for contribution guidelines.

License

Go! Tame! Me! is licensed under the MIT License. Further details can be found in the LICENSE file in the repository.

Documentation

Overview

Copyright (c) 2024 Sebastian Kroczek <me@xbug.de>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Run

func Run(options ...Option)

Types

type Configuration

type Configuration struct {
	ScreenWidth, ScreenHeight, TPS int

	internal.GameConfiguration
	// contains filtered or unexported fields
}

func NewConfiguration

func NewConfiguration(opts ...Option) *Configuration

type Option

type Option func(*Configuration)

func Headless

func Headless() Option

func StartImmediately

func StartImmediately() Option

func WithAntConstructor

func WithAntConstructor(antConstructor ant.AntConstructor) Option

func WithDesiredAnts

func WithDesiredAnts(ants int) Option

func WithDesiredSugar

func WithDesiredSugar(sugar int) Option

func WithLayout

func WithLayout(screenWidth, screenHeight int) Option

func WithRoles

func WithRoles(roles ant.Roles, chooseRole ant.ChooseRole) (Option, error)

func WithTPS

func WithTPS(tps int) Option

type Options

type Options []Option

func (Options) Apply

func (o Options) Apply(globalOptions *Configuration)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL