GoonScape

A multiplayer isometric game inspired by Oldschool RuneScape, built with Go and Raylib.

GoonScape Screenshot

Features

  • 3D isometric world with height-mapped terrain
  • Multiplayer support with client-server architecture
  • Pathfinding and click-to-move navigation
  • Global chat system with floating messages
  • Multiple character models
  • Background music

Prerequisites

  • Go 1.23 or higher
  • GCC (for CGO/SQLite support)
  • OpenGL development libraries
  • Raylib dependencies (see raylib-go)

Installation

Pre-built Binaries

The easiest way to get started is to download the latest release from:

https://gitea.boner.be/bdnugget/goonscape/releases

Choose the appropriate zip file for your platform:

  • Windows: goonscape-windows-amd64-v1.1.0.zip
  • Linux: goonscape-linux-amd64-v1.1.0.zip

Extract the zip and run the executable.

Quick Start

For development:

# Run directly (recommended for development)
go run main.go

# Run with local server
go run main.go -local

Server Setup

The server requires CGO for SQLite support:

# Enable CGO
go env -w CGO_ENABLED=1

# Clone and build server
git clone https://gitea.boner.be/bdnugget/goonserver.git
cd goonserver
go build

Client Installation

Then install or build:

# Install the client
go install gitea.boner.be/bdnugget/goonscape@latest

Or build from source:

git clone https://gitea.boner.be/bdnugget/goonscape.git
cd goonscape
go build

Controls

  • Mouse Click: Move to location
  • T: Open chat
  • Enter: Send chat message
  • Escape: Cancel chat/Close game (it does both of these at the same time so gg)
  • Arrow Keys: Rotate camera
  • Mouse Wheel: Zoom in/out

Configuration

Server connection can be configured using command-line flags:

# Connect to default server (boner.be:6969)
go run main.go

# Connect to local server
go run main.go -local

# Connect to specific server
go run main.go -addr somehost        # Uses somehost:6969
go run main.go -addr somehost:6970   # Uses somehost:6970

Note: The -local flag is a shorthand for -addr localhost:6969 and cannot be used together with -addr.

Building Release Binaries

The project uses Docker to create consistent builds across platforms. To build release binaries:

  1. Build the Docker image (only needed once):
sudo docker build -t goonscape-builder -f Dockerfile.build .
  1. Create release builds:
sudo docker run -v $(pwd):/build goonscape-builder

This will create zip files in the build directory for:

  • Windows (64-bit): goonscape-windows-amd64-v1.0.0.zip
  • Linux (64-bit): goonscape-linux-amd64-v1.0.0.zip

Each zip contains the binary and all required assets.

Development

The project uses Protocol Buffers for network communication. If you modify the .proto files, regenerate the Go code with:

protoc --go_out=. goonserver/actions/actions.proto

Fixing the models

This is a note/reminder to myself. The models and animations are generated with meshy.ai (referral link, give me credits pls). Somehow the bones armature things are not in the same root as the model and it becomes like a weird pudding when using the animation. I had to manually fix this in Blender by doing:

  • Selected the char1 mesh thing
  • Alt + P (the right Alt kek) => Clear Parent and Keep Transform
  • Tried to do the same for Armature, they should both be in the Scene collection as siblings, so straight from root
  • Select char1 and press Ctrl + A => All Transforms
  • Repeat for Armature
  • Select char1 and make sure it still has the Armature Modifier attached (via purple wrench icon), I remove it and reapply it just to be sure

When exporting it, I make sure Transform +Y is up direction is turned off, otherwise my gooner walks on the walls instead of the floor lmao

Description
No description provided
Readme MIT 141 MiB
Languages
Go 97%
Makefile 1.7%
Shell 1.3%