-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
68 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
--- | ||
title: "A little fight on Discord" | ||
featured_image: /images/infightHeroImage.png | ||
tags: [games, programming] | ||
--- | ||
So I made [a thing](https://infight.io)! I've wanted to build this game for over ten years. | ||
If you look through my [GitHub](https://github.com/ehippy), there're something like six discarded attempts since the early teens. | ||
I was handed some free time over the last couple months, and found my way to picking up my most recent attempt and | ||
actually getting it up and online! Here're some thoughts on where it came from, what it is today, and where it might go. | ||
<!--more--> | ||
|
||
## Tank Turn Tactics | ||
I was enamored by [this talk by Luke Muscat](https://www.youtube.com/watch?v=t9WMNuyjm4w&ab_channel=GDC2025) since I first saw it | ||
all those years ago. The *drama* that ensues in his office as this game took over 20 people's lives is such a fun story. They | ||
eventually shut down game early as it had people betraying one another and plotting against each other. This explosiveness always | ||
appealed to the little stinker in me. | ||
|
||
<img src="/images/oldInfights.png" | ||
style="float:right;width:200px;border-radius:20px;box-shadow: rgba(149, 157, 165, 0.4) 0px 8px 24px; margin-left: 20px;" | ||
alt="Many old false starts at infight" /> | ||
|
||
## Building Infight over the years | ||
|
||
My first version in I attempted in 2017 was attched to Slack, such that there'd be a channel at the office I worked at, and my coworkers and | ||
I could spend some idle-time plotting evil against one another. But the first time or two I attempted this I stalled out at actually | ||
putting a grid on the screen and having players' avatars there to throw down. I started versions in C#, Python Chalice, Express-Dynamo, and then finally a fourth time a couple years ago on VueJS/Express/Postgres. It's a little trip down memory lane to see what I was thinking was the tools | ||
I'd want to use to make something like this happen online. | ||
|
||
I'm mixed on the stack that I picked up this time. This is my first outing with [Vue.js](https://vuejs.org/) and I must say I like it very much. | ||
It's lean and easy to use. There are lots of great plugins and it's fast and reactive. | ||
|
||
For persistence, I'd chosen Postgres with [Sequelize](https://sequelize.org/), and these have proven to be easy. However, I don't like that I'm having to pay a fair amount to run postgres at 99% idle. Starting anew, I'd do something that could scale gracefully to zero like DynamoDB. | ||
|
||
Likewise the Express JS environment has been familiar and easy enough, but something in Python would be more testable, less bug-prone. `Async/Await` is great, but I must have had a dozen instances of missing an `await` statement and having somewhat subtle bugs from that. | ||
|
||
## How it's going | ||
In spite of all that I really enjoyed spending a few weeks really leaning into making this little concept come to life. I've got a couple dozen players online now taking turns pummeling each other in the spare time. | ||
|
||
 | ||
|
||
I'm struggling a bit with how I can get the game to spread into some other Discord servers. There's a steep tipping point: | ||
- Somebody in a discord server has to discover infight | ||
- They need to convince their server admin to add infight to their server | ||
- That person needs to do two authorizations: one for themselves and one for their server | ||
- Then they need to do a couple of Discord commands to finish setting up the bot | ||
- Then a handful of people need to opt in to play it. Then a game can begin. | ||
|
||
Once it's running it's pretty easy for players to drop in/out and get some shenanigans. | ||
|
||
 | ||
|
||
There've been a number of nailbiters and close calls. It's really quite the thing to see this little creation having such fun little interactions and laugh out loud moments. | ||
|
||
I also love how well it works on mobile! By leveraging a Discord channel to announce game updates, you get this awesome mobile experience where you can hop in and do some damage on the road. | ||
|
||
## What needs to change | ||
Tech costs aside, there are some gameplay patterns that I think should be addressed: | ||
|
||
First is that Infight is currently designed to be always on, when one game is won, it immediately starts another. At the same time, the game's set up as a winner-take-all deathmatch where once you're dead, you likely remain dead for the duration. This means most players are dead for most of a day before a fresh game starts. | ||
|
||
Secondly, the original game is very simplistic on the board, relying on social dynamics to make it interesting. Online, alongside a discord, it doesn't hold enough interest to have slow day-long turns. There needs to be more to do, and less sitting-around-dead. | ||
|
||
So I want to take on an expanded game design that's more of a King-of-the-hill style scoring system where there's a designated scoring zone and a player needs to be alive in the zone at tick-time to get a point. Now, when the game ticks and hands out actions, it will sometimes spawn on healing heart. In this new world, I want a few hearts to drop and, crucially, a bunch of action-point clusters to allow for more stuff to be happening. | ||
|
||
Further, I think there should be two new player capabilities: walls and fires. Players should be able to spend an action point to drop a wall in a square making it impassible until its destroyed. Letting them spend an action to start a fire, which would occaisonally expand, make the board way more dynamic and challenging. | ||
|
||
## Will I sustain it | ||
I'm gonna stick with it. Aside from these gameplay improvements above, I really want to make it easier for users to discover it and get playing. If you've got some curiosity, you can join [the official Infight discord here](https://discord.gg/GJ9gbjFj). Or if you want to start a little fight of your own, add it to a discord you hang out in from [Infight.io](https://infight.io). |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.