Jump to content

Tips & Tricks - My journey as an indie hobby developer with 0$ budget (2.5 years after starting)


Recommended Posts

Posted (edited)

Hello loverslab!

 

The post is quite generic and does not go into details about the adult content or adult visual novel specifics. If you're interested in developing games and have a 0$ budget, then this post might be helpful to you!

 

Here's a copy of the reddit post:

 

About me

 

Hello all, I'm FlimsyLegs. An indie developer who writes adult visual novels.

I've been developing games since 2022. Currently I have 1 completely finished game, 1 game 95% completed and being released later this year and 1 work-in-progress game.

I'm on Steam and Itch DO NOT OPEN THE LINKS UNLESS YOU ARE AN ADULT:

https://store.steampowered.com/search/?developer=FlimsyLegs

https://flimsylegs.itch.io/

 

Purpose of this post

 

The purpose of this post is to provide you a bit of context for how I approached the games industry as a hobby, what I've learned of Itch and Steam as platforms, and what I've learned of Twine as an engine for developing Visual Novels. I will be providing general tips and tricks, some "do" and "don't", and things to think about if you're considering game development.

NOTE 1: These are my personal experiences and opinions. They may not be universally agreed on, or even best practices. But hopefully this is a useful perspective.

NOTE 2: I will not be diving deep into the adult specific game development. This post will be generic and apply for all games, with a focus on visual novels.

NOTE 3: I will not discuss marketing, as that is an art I have not yet mastered. I will cover some tools for easily generating video game trailers.

 

My background

 

I'm a full-time software engineer who enjoys reading fantasy novels and playing video games. Writing comes quite naturally for me, and I've always dreamt of writing my own books or creating video games. With visual novels, I can combine both of these interests. And by doing it as a hobby on the side, I don't have to worry about where my next paycheck will come from if my ideas turn out to be crap.

 

Introduction - Early days

 

In the very beginning I just knew 2 things: I want to write a compelling story and I want it to be interactive. At first, I began by searching for the most simple tool for creating interactive fiction. I stumbled upon Twine (more about that in a later chapter), and it was good enough for me!

At first, I didn't have art. And in truth, art is still something that I struggle with. My art was so bad it was called "potato" by some players in the first game. I later got around remastering the art for the first game, but the best result is always achieved by collaborating with a proper artist! (unless this is your strength, in that case congratulations!)

When I started, I didn't want to get paid. I just wanted to write for myself, and hopefully for others to enjoy. As such, I didn't even setup payment for any of my games until May 2024, over 2 years after I started. During those 2 years I established myself as a developer, got an audience and following on itch and a lot of feedback on my games that helped polish them. All of this was done by only publishing the game on Itch (more about that in a later chapter).

Tip 1: Focus on your strength. If writing is your strong suite, then focus on the story. If art is your strong suite, focus on that. If programming is your strong suite, then mechanics and systems might be the best focus area for you. And don't hesitate to reach out to other people, the best games are often a collaboration!

Tip 2: Learn git and github. Having a version control system for your project is a must have. Unless it comes built in to the development tool you're using, I would go with github.

 

Twine as an engine

 

The great thing about Twine is that it creates .html files out of your games, and you can then create an archive (zip package) with art, sound, fonts, etc. that the .html file references. This archive can then be used on any machine, and when your players download and double-click on the html file, it opens up in their default browser.

The bad thing about Twine is that it creates .html files... Yes, it's good and bad. Firstly, html is not a format Steam wants (more on that later), and anyone with Twine can open the HTML file to look at the "source code" of your game. You can use html obfuscation tools, but I have not tried these (such as https://github.com/NavpreetDevpuri/HTMLObfuscator). An obfuscation tool essentially scrambles the HTML code so that Twine and a human cannot read it anymore, without altering the logic behind it, meaning, a browser will still show it correctly "during runtime" but the source file cannot be "reverse engineered".

Tool: https://twinery.org/

Documentation: https://www.motoslave.net/sugarcube/2/docs/

Getting started: https://www.youtube.com/watch?v=ZxcN-BQm89Q

I highly recommend using the SugarCube 2 engine in Twine. DO NOT USE HARLOWE LIKE I DID BECAUSE IT IS EASIER! Harlowe engine is a very simple twine engine that doesn't allow you to manipulate the state of the game or the UI very well. This means you're limited to a very basic set of functionality. With SugarCube, the syntax is only a tiny bit more complicated, but you future-proof your project because you can literally do any coding tricks you want. Additionally, SugarCube comes with a built-in Save/Load functionality for your players, which you'd have to code manually into your Harlowe game.

 

Publishing on Itch

 

Publishing your game on Itch, assuming you're doing a free release, is very straight forward. Not only can you release your game as an archive file (zip file) built with any tool and any way you like, but you can also host your game as a web game directly on itch. I got a ton of traffic for my games using the web-page mechanism, and I highly recommend it if your game is free and an html game. The threshold for playing your game is much lower when the players do not need to download the game first. (In my experience, easily x10 more players in the browser compared to a free game with a .zip file that players must download).

Link: https://itch.io/developers

The minimum set of things you need to publish your game on itch (free release) is:

  1. The game as a .zip file, a title and a description of what your game is
  2. (Optional, recommended) Some sort of instructions for your players how to run the game (usually this is "unzip the archive, double-click on .exe or .html)
  3. (Optional, recommended) A cover image 630 x 500 pixels
  4. (Optional, recommended) Setting the Genre and Tags

The whole process is completely in your hands and there's no need to wait for itch to approve your game or page. They will check your game at their own pace, and remove it if it violates rules.

Rules: https://itch.io/docs/creators/quality-guidelines

A game update on itch is very simple to do. You can use https://itch.io/docs/butler/ or just upload your new archive (zip) to itch.

NOTE: There's a 1 GB size limitation for games. If your game is a web-game, the size of the "index.html" (which is the main html file in your game) must be below 7 MB.

 

Gathering feedback for my game

 

So, releasing my first game on itch was easy. And there are some players playing it. Great! But are they enjoying it? Why is there so little feedback? These were my questions when I published my game way back in 2022. I got a lot more feedback from reddit and forums, and using that feedback I started iterating and polishing the game.

NOTE: As with all feedback in life, you shouldn't listen to all of it. If something your players suggest sounds like a good idea, and you like the change, then it's probably worth considering. But adding features to your game that weren't supposed to be there, because someone requests them, is not the way to go. It is your game, after all. Make sure your vision for the project isn't influenced too much.

 

Getting paid (Itch)

 

The firs thing you should look into is your country's policy on profit from a "game as a hobby". In my country (Finland) there is no such thing as a hobby that gives profit. This means you must pay tax on all profit you make from your game sales (your personal tax percentage, if you didn't start a company). If your gross revenue exceeds a certain amount (in Finland it is 15000€/year), then you also probably need to pay additional tax on your profits.

Getting paid on itch required setting up a few things. First, your tax identity and secondly a paypal account. Due to how transactions work on itch, where a cut from each transaction goes to paypal and itch ("Payment processor fee"). This is 0.30$ + 2.9%, so don't sell your game for a tiny price such as 1$! If you do that, you're giving 33% of your revenue directly to paypal.

Itch share is pre-configured to be 10%. Steam, for example, takes a 30% (but doesn't have payment processor fees). On itch, you can set the share to anything between 0% and 100%, it's up to you. Note that the profit itch gets is used to host the platform itself, so you might consider not putting this to 0%. Keep it at 10% to get great value, while giving itch a share.

Link: https://itch.io/docs/creators/payments

When you put your game for sale, you should not bother with the donation mechanism. Players generally tend to not donate money when downloading a game. I got 1 donation in a month, but when I switched to straight up payments, I got 30 sales in a month. (For an early work in progress game).

NOTE: When setting a price for your game, make sure to TURN OFF the "Set a different price for this file" for your game. If you set a different price, you're essentially selling that package as a "one time download" for your players. This is bad, because players who bought your game will not get the update for free! The only time you should consider turning on the "Set a different price for this file" is for an art book or some other thing that is never going to be updated.

 

Moving to Steam (Store Page)

 

Ok, so up until now all development I've been doing has been free. The game development tools were free, itch allows hosting for free, and I have not spent a single $ of my own money on this hobby. But I heard Steam is much larger than Itch, so it makes sense to publish my game there, right? With this in mind, I finally began looking into how Steamworks (works).

The first thing you need to know is that Steam takes a 100$ up-front fee called "Steam Direct Fee". (Steam no longer uses the "Greenlight" system, since a few years back). This 100$ cost is given back to you only if "Your product has at least $1,000 USD Adjusted Gross Revenue for Steam Store and in-app purchases." As an indie developer, I hesitated to pay this because I didn't know if I'd even make enough sales on Steam to even get my money back. However, I started on itch, and the revenue I got from there was enough to pay the steam direct fee, so we're still within the 0$ budget!

Link: https://partner.steamgames.com/

Getting started: https://partner.steamgames.com/doc/gettingstarted

Tutorial (Store page): https://www.youtube.com/watch?v=lU1SFAa3QqM

Graphical assets guide: https://partner.steamgames.com/doc/store/assets

With Steam, things got a lot more complicated than on itch. However, I'm a software engineer, so for me the technical stuff wasn't too tricky. However, here's the things you need to know about:

  1. You need to take a picture of yourself and your ID card when you register for Steam as a developer, as part of their "Know Who You Do Business With" policy. As with itch, you need to setup your tax identity there.
  2. Your store page needs to be approved by Steam (until on itch). And it can take 10 days getting feedback for approved/denied, and you might have to go back-and-forth between Steam a few times.
  3. The same is true for your build. Steam checks that it follows the rules, and actually runs on their systems, before they approve it.
  4. Steam has a verify specific set of "graphical assets" you must create for your game, with specific pixel sizes.
  5. You need to create a video trailer for your game.

Things to keep in mind that I have heard multiple developers say, but cannot confirm myself:

  1. You get a big visibility boost when you launch. Most sales (for an indie game) happen during the initial launch week of a game.
  2. You should aim for a lot of wishlists before release. Don't rush your release: Allow your store page to get visibility over time, so that your release is as bombastic as possible.
  3. If you manage to get 10 reviews within 10 days, you get a one time "Disovery Boost" which further gains visibility for your game.
  4. Steam Curator's may or may not be a scam. Some take your game key and sell it on third-party sites, while others might actually review your game and get visibility for it.

 

HTML to Executable (Required by Steam)

 

So my game at this point as .html, which Steam does not like. Essentially, an html file is something a browser can open, so now I need to bundle my game in such a way that a browser comes built-in to an executable, and that executable opens automatically my game's html within its process.

For me, this worked out very well: https://github.com/lazerwalker/twine-app-builder

It allows me to build by HTML into an executable. For MacOS, it created an archive (zip) file that I can simply unzip/unarchive into the steamworks SDK's "content" folder (more about that below). For Windows, it creates an installer. I can install it locally, then copy the installed game into the steamworks SDK's "content" folder.

 

Moving to Steam (Build Process)

 

Steam does not allow you to just upload an archive file. The format of your game must be:

  1. Your windows build of your game must be an executable. No exceptions.
  2. Your macos build needs to be a valid package (a folder with the .app ending)
  3. Most likely an executable on linux as well (I have not confirmed this).

Uploading your game to Steam is also different than itch. You can no longer just "drag and drop" a zip package to the platform and be done with it. Now you need to setup what steam calls "Depots", "Builds" and "Packages"

Tutorial (Build system): https://www.youtube.com/watch?v=SoNH-v6aU9Q

Steamworks SDK: https://partner.steamgames.com/doc/sdk

Here's my personal checklist that I use when I create a new game on Steam and setup the build system. It may or may not be helpful to you. Do check out the tutorial links above, they helped me a lot!

NOTE 1: The checklist below is my release process for a "twine to executable" workflow, which then puts the package to steam. Ignore the parts with the [T2E] prefix and replace that step with your specific game's build approach.

NOTE 2: For Linux, simply multiple the Windows + MacOS steps below.

NOTE 3: This guide assumes your PC is a Windows machine.

One time operations:

  1. Open the "Installation" -> "General Installation" under the "Technical Tools" -> "Edit Steamworks Settings" for your game.
  2. Define "Launch Options" for all operating systems. For windows, it should be enough to set the fields "Executable" to the name of the .exe file of your game, "Launch Type" to "Launch (default)" and "Operating System" to "Windows"
  3. Do this for all operating systems you support. For MacOs the "Executable" is <name of the game>.app, in other words the folder name of the game.
  4. Ensure "Install Folder" to not have strange characters
  5. Open "SteamPipe" -> "Depots"
  6. Modify the single depot to be "Windows" by editing the name, and setting the "Operating System" field to "Windows"
  7. Add a new depot for each additional Operating System you support
  8. Go back to the main steamworks page of your game and open "View Associated Items" -> "All Associted Packages, Demos, DLC"
  9. Go back to the main steamworks page of your game and open "Store Packages, Pricing, & Release Dates" -> <your package appears in a table below, click on it>
  10. Under the "Depots Included" ensure all the depots you've created are selected.
  11. Ensure the section "Promotional or special-use packages" "Beta Testing" and "Developer Comp" packages includes all depots of your game.
  12. Under "Edit Steamworks Settings" -> "Publish". This must be done before you build your system if you've added or removed depots. Otherwise the depot build phase will fail.
  13. Create your .vdf files
  14. Put your .vdf files under [path to sdk]\sdk\tools\ContentBuilder\scripts

A VDF files is Steam's way of mapping an application and depots into a build. These files exist on your PC, where you'll execute the steamcmd.exe. Steamworks SDK comes bundled with examples for this. These are the ones I use:

Filename: app_build_ROOTID.vdf

"AppBuild"

{

"AppID" "ROOTID" // Your AppID

"Desc" "Name of my game and version number of build" // internal description for this build

"ContentRoot" "..\\content\\" // content root folder relative to this script file

"BuildOutput" "D:\\build\_output\\" // put build cache and log files on different drive for better performance

"Depots"

{

	// file mapping instructions for each depot are in separate script files

	"DEPOTID1" "depot\_build\_DEPOTID1.vdf"

	"DEPOTID2" "depot\_build\_DEPOTID2.vdf"

}

}

Filename: depot_build_DEPOTID1.vdf

"DepotBuild"

{

// Set your assigned depot ID here

"DepotID" "DEPOTID1"

// include all files recursivley

"FileMapping"

{

	// This can be a full path, or a path relative to ContentRoot

	"LocalPath" ".\\windows\_content\\\*"

	// This is a path relative to the install folder of your game

	"DepotPath" "."

	

	// If LocalPath contains wildcards, setting this means that all

	// matching files within subdirectories of LocalPath will also

	// be included.

	"Recursive" "1"

}

}

Filename: depot_build_DEPOTID2.vdf

"DepotBuild"

{

// Set your assigned depot ID here

"DepotID" "DEPOTID2"

// include all files recursivley

"FileMapping"

{

	// This can be a full path, or a path relative to ContentRoot

	"LocalPath" ".\\macos\_content\\\*"

	// This is a path relative to the install folder of your game

	"DepotPath" "."

	

	// If LocalPath contains wildcards, setting this means that all

	// matching files within subdirectories of LocalPath will also

	// be included.

	"Recursive" "1"

}

}

NOTE: Ensure you've put the depot ID correctly for the Operating Systems. (see LocalPath in the .vdf files).

Every update I update my game:

  1. [T2E] Run your github pipeline and create a Setup.exe
  2. Set Steamworks application settings OS to "Windows" and "Mac"
  3. [T2E] Install the Setup.exe in your PC
  4. [T2E] Open the %localappdata%\test_electron_forge directory where the game is found
  5. [T2E] Remove all "*.log" files from the game directory
  6. Copy the content of your game into [path to sdk]\sdk\tools\ContentBuilder\content\windows_content
  7. Repeat step 6 for MacOS and Linux (macos_content, linux_conent)
  8. Modify your .vdf files with new version names (modify app_build_ROOTID.vdf "Desc" field)
  9. Open CMD on windows (just type cmd into the search)
  10. Copy the full path to there the "[path to sdk]\sdk\tools\ContentBuilder\builder" directory is
  11. Run: "cd <paste the path from step 10 here>"
  12. Run "steamcmd.exe"
  13. Run: "login [username] [password]"
  14. Under "Edit Steamworks Settings" -> "Publish". This must be done before you build your system if you've added or removed depots. Otherwise the depot build phase will fail.
  15. Run: "run_app_build ..\scripts\app_build_[APP ID].vdf"
  16. If build succeeded, open https://partner.steamgames.com/apps/builds/[APP ID]
  17. From there, open "Edit Steamworks Settings" -> SteamPipe -> Builds
  18. Select your build from the list and "Set build live on branch..." -> "default"
  19. Press "Preview Changes"
  20. Press "Set build live now"

When your Store Page and Build are ready, you must mark them for review. Steam will then take X days to check them, and this is a slow process. Be patient.

 

Creating trailers

 

Creating a video trailer for my games was intimidating. I just don't have the skills to graphically make something interesting. But I've not created two video game trailers for my games. I'm not saying my trailers are the best, or that the tool I used is the best, or that my approach is the best. But here's what I did:

  1. Write the initial idea (scene by scene) for your trailer
  2. Decide where to put sound effects and music. You're essentially creating a script.
  3. Downloaded "Shotcut" https://shotcut.org/. It's free! (Fits into our 0$ budget!)
  4. While editing, keep in mind that text should be visible for a certain amount of seconds for people to have time to read it. (read it out loud twice is a general rule of thumb)
  5. Do not make a "powerpoint presentation", i.e. static slideshow. If your game doesn't have animations (like a visual novel with just images), then create movement by zooming in/out or moving the image. This makes the trailer visually more interesting.
  6. Don't use the default text font when adding text objects. Use something that is interesting and appropriate for your game.

Shotcut, Getting Started: https://www.youtube.com/watch?v=ehysOpY-lj0&t=28s

Things to know about:

  • "Filters" allow you to modify objects in Shotcut (images, videos, text, sound)
  • "Keyframes" are an important concept in Shotcut when changing object filters over time! (move an object's position, modify size, etc.)

 

Final thoughts

 

My first game will soon release on Steam, and once it does, I'll know more about "post release".

Let me know if you have any questions! I'd love to discuss these topics with you. If I'm straight up wrong about something, let me know in the comments!

 

My last "TL;DR" type summary for a 0$ budget, developing games as a hobby and still seeing some profit:

  • Start on Itch. It is fast and easy and free.
  • Learn git and github. Version control is important!
  • Gather feedback. Polish your game.
  • Get enough sales (100$) to pay the Steam Direct Fee.
  • Create a stunning trailer.
  • Publish your store page publicly. Gather a lot of wishlists before you release on Steam.
Edited by FlimsyLegs

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...