Hello!
I'm super excited to finally start talking about this project, which has been on my mind for a long time. The actual stage of development is still early (about two months of part time work), but it's finally all coming together and I think it's already showing a ton of potential.
You can try out the very rough first prototype at
https://Apachi.gs.
I have also set up a discord server in case you'd like to provide more direct feedback or find people to test with:
https://discord.gg/tU27j2DTechnically Apachi is more of an app than a server, but I've decided to call it Apachi.gs for largely sentimental reasons.
So what is Apachi and what makes it different? First of all, it's not my intention to simply compete with other go servers like OGS. If that was my intention, I would be contributing to OGS instead. Rather, I want to provide something that simply doesn't exist in this form, but that I've always wished existed.
I am calling it a "progressive" go server for two reasons: The first is that it is set up as a progressive web app. That essentially just means that you can fully run it in your browser, but it can also be installed as a standalone app with a single click. PWAs are also fully responsive, so it scales all the way from the tiniest mobile device in portrait mode all the way to a full screen desktop app.
The second and more important reason I call it progressive is that I want to challenge our assumptions of what playing go online can be like. I'm going back to the drawing board on every single feature, so chances are that the result is not what you would expect. Not everybody will like this, but I strongly believe that there is value in having at least one app that does things radically differently and experiments with new ideas. The rest of this introduction will focus on describing the various design concepts, but first:
** Current StatusThere is still a lot of low hanging fruit that would have resulted in a much better first impression if I had delayed the announcement a bit longer (e.g. a unique score evaluator that currently isn't exposed at all since I just rewrote the board view), but I've set myself a deadline and it was important to me to stick with it. My hope is that this early version will create some good feedback already, and that rapid progress will make at least some of you stick around for more. Generally I'm a strong believer in "release early release often" and iterative development.
Right now I am entirely focused on the playing experience, so that is the only thing that is working so far. Basic match making works, but there is no ranking system yet. Don't expect to play solid games on it yet, but you can try out what the experience is like if you find somebody to test with or make two accounts. I expect that all account data will be wiped before entering Alpha state, so feel free to create multiple accounts for testing. There is also a demo board that can be tried without registering, but it will only give you a board view without any match controls.
Some of the major known issues right now are:
- Suicide moves are possible and don't result in a capture, so that's obviously quite broken.
- Scoring isn't really there yet (more on that soon). Since there's also no ranking or stat tracking yet, you can simply "resign" a game at any time to end it.
- There is no email registration yet, so the only way to register is by signing up with Google (for no other reason than that it was the fastest to implement).
- Matchmaking doesn't time out if you forget to cancel it. So you might get a match against somebody who has already left. Just resign and try again if that happens.
- While I've started designing the app for the desktop view, midway I switched to focusing on the mobile view when I noticed the potential for that (also I got convinced that it's easier to build mobile layouts first and then scale up from that then the other way around). Which means that currently the desktop layout is quite silly (in a match).
I'll work on all of these over the coming days. My agenda for the initial alpha release is to fix the above issues, add a solid ranking system, and of course a whole lot of bug fixing and polish.
There has been no stress testing at all yet, so do expect things to fail in the most horrible of ways.
** PhilosophyI've first started thinking about Apachi when I caught myself coming back to Lichess over and over again, even though I had long lost interest in chess at that point. I wished there was something comparable for go, and I wondered if it is possible. Basically, Apachi is my attempt at answering that question.
My goal is to create a place to play go where every moment sparks joy. Something that's accessible, satisfying, fast paced, and that can comfortably be played from any device.
My background is in game development, so I might also be able to bring a different perspective to some things. The last ten years or so I've been working as a freelance game developer, and I've been immersed in game design for much longer than that. So another question Apachi is trying to answer is, what would it look like if I'd design go as a contemporary online game? I genuinely think that there is a huge amount of untapped potential. My plan is to throw everything I've learned about game design best practices at this project and see what happens.
An example of this would be a first class on-boarding experience. Go may be a complex game, but its core mechanics are really quite simple compared to some modern online games. There is no reason why we can't gradually ease a new player into those mechanics while allowing them to have fun from the very first moment. The ultimate end goal would be to create a place that isn't just enjoyable for experienced go players, but also able to create new go players by itself. Realistically a lot of people will take their first steps in go online, and I'd like that experience to be as pleasant as possible.
That said, this is not going to be another batoo or fly or die. People are drawn to abstract games for very different reasons than modern video games, so I believe that any efforts to turn go into a casual game are destined to fail. My goal is to take the opposite approach and double down on go's legacy and competitive appeal, while simply creating the smoothest possible experience around it.
My focus for Apachi is very strongly on competitive real-time matches. While I am not ruling out expanding on the feature set over time, my goal is not to directly compete with servers like OGS on pure features and options.
** The Technical AspectOr: What makes you think you can get this done?!
Maybe the most impactful technical choice has been to use Firebase on the backend. Firebase is a "backend as a service" run by Google which offers a realtime database and much more. This eliminates most if not all potential issues about general stability or scalability of the backend and allows me to focus entirely on the server logic and client app. I initially had some doubts about it, but those have been erased by the working prototype. I couldn't be happier with the results so far, and this really was the missing piece that convinced me that this project is actually doable as a solo developer.
The frontend is based on Svelte 3 for widgets and (2D) Canvas for the board rendering.
It's still a very ambitious project, but by keeping the scope small with frequent iterative improvements, I feel extremely optimistic about it. It's also a perfect match for my unique skill set as both programmer and designer. In some ways I feel like my entire life has prepared me for this project. I know how silly that sounds, but I really do feel that way. If this is what I do for the rest of my life, I'd be perfectly content.
** Business ModelIn terms of financing, I'm completely flexible. I've recently made the decision to switch to web development and coming from game development, I figured that nothing would make a better portfolio piece than this project. This means that even if it is a complete commercial failure and I'm the only one who appreciates its existence, I should still be able to make steady progress working on it in my free time in between jobs.
That said, of course it would be a dream to be able to work on Apachi regularly or even full time at some point, and this would massively increase the potential. So I am going to do what I can to make that happen. I don't plan to add any ads or pay2play features, so it will mostly rely on voluntary subscriptions/donations as usual. However I do have plans to add some elements from free2play games (the good kind) to reward supporters in various ways, e.g. with fanciful alternate board skins and other cosmetic items. Ultimately though I simply hope that if I keep working hard to delight the users, at least some of them will want to reward those efforts.
There is no urgency about funding, but I will have to get a sense of the potential soon to decide my immediate future plans (mainly choosing between getting a full time job in web development or sticking with freelancing).
Honestly I have not been extremely involved in the go community recently, so I have no idea what to expect. Whether I am greeted with complete silence, or a load of enthusiasm, or even attacks. For now I am just hoping for the best and then I'll adjust my plans based on the response I get.
You probably noticed that I haven't spoken much about the actual features (existing and planned) of the app yet. That's not because those aren't the most important, but because I knew I wouldn't be able to condense my thoughts very well, and this post has already gotten pretty long for a first post.
I also need some sleep, so I figure I'll catch some of it now and continue this early tomorrow. Suffice to say there is a lot more to come and there's also more to the prototype than meets the eye. Hopefully some of you will already get a chance to give it a try and get some early impressions before I'll go into a lot more detail tomorrow.
For now, please consider this my "hello world" posting. It is my sincere hope that I will be able to contribute something significant to the (western) go world, but I don't want you to take my word for it. Now that the cat is out of the bag I intend to provide frequent development updates, which should provide you with a much better picture of what to expect from this soon. If I just got your curiosity for now, I'd be happy.
Thanks for reading this far, I'll be right back after some rest!