Code Monkey home page Code Monkey logo

stardewmods2's Introduction

Stardew Valley Mod Development compatible devcontainer

A VSCode devcontainer configuration optimized for Stardew Valley mod development.

The devcontainer has been configured and should fully support Fedora and any other environment that uses selinux.

Quick Start

The TL;DR of below:

  • Make sure you have SMAPI for developers installed
  • Create a symlink to your Stardew Valley installation directory called _gamedirref in the root of your project (ln -s /path/to/stardew-valley ./_gamedirref)
  • Build and re-open project in dev container
  • Build your mod project using the included build script (ctrl+shift+b or cmd+shift+b)
  • Happy coding! :-)

Prerequisites

You'll need to have Docker or Podman installed and set up on your system, and have Visual Studio Code with the Remote Containers extension installed.

In case you're not yet familiar with VSCode's remote container extension, in a nutshell it allows you to develop within a Docker container environment, keeping the project's tool and environment requirements separate from your main machine's environment, and thus free of potential conflicts, version difference challenges, or per-distro tool availability restrictions. Please check out the official documentation here, it does a good job of explaining it in more technical detail.

Getting Started

If you are starting with creating a new mod, you can use the "Use this template" option to create a repository under your own account with the prerequisite files in place. From there you can simply set up your Stardew Valley mod project as you usually would.

If you already have an existing mod and would like to start using VSCode, you can download clone or download an archive of this repository (Code > Download ZIP) and manually copy the necessary files into your existing repository. At minimum you'll want to copy the .devcontainer directory and copy or merge the included .gitignore file with your own. The included .vscode directory also includes a convenient build task which is configured to be the default build task.

Depending on your preferences you might also want to bring over the .editorconfig file, which comes with some sane defaults set, which is used by the EditorConfig extension that is automatically installed within the devcontainer.

Before your first open

Before you can successfully launch the devcontainer, you must first create a symlink to where you have your copy of Stardew Valley with the developer version of SMAPI installed. The devcontainer configuration file expects this symlink to be called _gamedirref within the project directory.

If, for example, you have Stardew Valley installed at ~/.local/share/Steam/steamapps/common/Stardew Valley, you could create a symlink like this:

ln -s ~/.local/share/Steam/steamapps/common/Stardew\ Valley ./_gamedirref

The included .gitignore file is configured to ignore this symlink, so it will (and should not) not be committed to your project.

With this in place, you can now re-open your project using the devcontainer.

Usage

Within the container you should have access to the necessary tools, including msbuild, dotnet, and nuget.

Building your project can be done by triggering the included build task (ctrl+shift+b, or cmd+shift+b) or by running msbuild in terminal. Note that the task assumes your mod resides within a subdirectory called src. If that's not the case for your project, you can modify the build scripts in .vscode/tasks.json to point to the right directory.

The container is set up to automatically run dotnet restore src after building the container image, but you can re-run this whenever you need to of course. If you instead wish to use the nuget restore option, you'll have to either include a *.sln solution file in your project, or have a packages.config file.

Building your mod

VSCode tasks are included to make building your mods easier. By default a debug build will be made when using VSCode's build task (default keyboard shortcut is ctrl+shift+b for Linux/Windows, or cmd+shift+b for Mac). You can access individual tasks through VSCode's Command Palette (ctrl+shift+p or cmd+shift+p by default) to trigger a release build.

Included tools

Some of the included tools that are possibly useful for you to use directly are:

  • msbuild
  • dotnet
  • nuget

Contributing

If you have any improvements or suggestions you wish to share, please feel free to open an issue or pull request. Test reports for different environments will also be appreciated.

stardewmods2's People

Contributors

captncraig avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.