top | item 30720259

Show HN: I'm writing an MMORPG game for learning programming

229 points| blindpirate | 4 years ago |bytelegend.com

Hi, I've been developing an HTML5 MMORPG game where people can submit code to play a game, like collect items, destroy defense towers or kill monsters, etc.. I've been working on this for over 1.5 yrs (all my spare time) and now it's ready for preview, does anyone want to try it out? It's mostly opensource (and the rest will be opensource sooner or later)

Please access it with PC, it's an HTML5 game: https://bytelegend.com/

I really want it to expand to more languages, but right now I've only finished Java part. I wonder if anyone can help me with other languages. Besides, I'm not a good game story designer, but I really really want it to be a game with a fantastic story. Any help will be appreciated.

68 comments

order
[+] cl0ckt0wer|4 years ago|reply
No communication between players, what's the multiplayer aspect?

And the programmer NPC in the bar called me "a gay". At least it's an authentic MMORPG culture.

[+] blindpirate|4 years ago|reply
TBH, I don't have a good idea how people do the teamwork. That's why I ask for help here. Ideally, you can click another character to send DMs, and click yourself's character to speak something publicly (which is already implemented but a bit hidden). But what then? People should be able to make a team to fight with something, but I haven't designed how to make it in a programming-learning journey.
[+] davidweatherall|4 years ago|reply
Hey, cool idea.

I didn't find it intuitive when first landing on the site. I think I need to sign up first before I get a character that can walk around?

I think it would be cool if when landing on the site I'm given a character and can walk around like a signed in user, maybe forcing me to sign up if I want to leave newbie village.

[+] 123pie123|4 years ago|reply
>I think it would be cool if when landing on the site I'm given a character and can walk around like a signed in user, maybe forcing me to sign up if I want to leave newbie village.

+1 to this

[+] fallat|4 years ago|reply
Wow, this is sick!

Hide the hints, add more art, maybe some more mechanics to hide the fact you're learning at first: I think this could be effective and a seller!

Makes me think web programming is the dark souls of programming (I mean Haskell is probably much closer but the sheer amount of what you need to learn for web is what makes that association in my mind - I know it isn't exactly right, as someone who has played all the Souls-like games from Fromsoft) lol.

[+] lanternfish|4 years ago|reply
Webdev is the JRPG of programming - countless barely integrated systems which have compounded over years of legacy buildup into a Gordian behemoth no single individual can truly understand.

C is the Dark Souls of programming - ostensibly simple but with a bunch of unintuitive pitfalls and recommended optimizations. This maps C# and C++ onto DS2 and DS3 pretty well.

[+] ozzmotik|4 years ago|reply
seconding what baash05 said, want help? this sounds like a really neat project and I'm honestly better with helping other people's ideas come to fruition than I am starting my own.

nb: i am homeless so my availability is somewhat sporadic since it's dependent on when I can charge my phone and such. but I got a laptop hiding out somewhere I just never use it out on the streets because it's a battery addict and drains that like an alcoholic does whiskey. also it's a 2006 dell xps m1701 so it's actually just a hefty beast.

but yeah. let me know if interested as well. email in bio etc

[+] planetsprite|4 years ago|reply
This is very cool, but I imagine would be favored by people already well familiar with programming. When the average person sees the "Socket I/O" quest, they have no natural reason to find it interesting besides the small percent of people who will just do any task if it's part of getting to 100% completion. IMO a more enticing premise would be to wrap every task into an internal narrative.
[+] blindpirate|4 years ago|reply
You are absolutely correct. That's why I ask here. I'm a bad story designer, but I really would like it to have a good story to motivate people.
[+] DrBoring|4 years ago|reply
I immediately recognized the Tesla coils from the game C&C Red Alert. Watch out for copyright there.

Some feedback

The game is a bit visually-loud. It's overstimulating for me, I can't immediately figure out what I'm supposed to do to get playing. It took me a while to find the login button.

Perhaps a fix is a smaller field of view with pan and zoom? Take my advice with a grain of salt, I'm no game designer.

[+] datalopers|4 years ago|reply
Oh come on, nobody is going after an open-source project using some 25-year-old sprites. Nearly all his artwork looks to be borrowed from old tile-based games.
[+] blindpirate|4 years ago|reply
Thanks for the reminder and feedback. Issue created here: https://github.com/ByteLegend/ByteLegend/issues/119

I totally understand the copyright risk. The reason I use it was that I love RA2 so much - that's almost the only game I played when I was a child. I'm proud and happy to put the sprite into a game I design and write. If there's any issue from EA, I'd immediately roll them back, sadly.

[+] suifbwish|4 years ago|reply
Should be fine so long as he isn’t profiting. They are in openRA and that’s an open source version of red alert.
[+] mentos|4 years ago|reply
I learned to program working on an emulator for an MMORPG called Ultima Online. Emulator was RunUO made with C# started with it in 2001.

I’ve always thought a cool course would be to teach programming with fun examples extending the game with new weapons , items, NPCs, etc

[+] Tostino|4 years ago|reply
Similar story to me a few years later. I starting out by hosting a Lineage 2 server emulator back around 2005. Slowly got into tweaking a few things, debugging performance issues, eventually writing whole new features. Learned a whole lot about databases from that experience so in 2010 at my first helpdesk job, they found out "you know SQL?!"...so I then was given a ton of reports to write, and quickly a whole lot more responsibilities, launching my career into databases.

While working as a data analyst a few years later, I wanted to improve my programming skills. So as a side project I did a whole lot of work on a ground-up rewrite for a year or so...I had reimplemented: player and npc movement code, npc spawning, a basic AI system (attack, flee, loiter, travel), pathfinding, inventory and equipment slots working, item drops in the world and being able to pick them up, chat (direct and global), and probably a few more things I can't remember!

I was pretty uninterested in the actual Lineage2 gameplay at that point, so I was trying to get the basics working so I could implement a more interesting combat system / skill tree. The game engine had some extreme limitations on what you could actually control just from the server side, but I had a system working that repurposed a news bulletin UI that the engine had in-place to inject some custom HTML based UI's that I could send over from the server. So I was able to disable the existing skill tree UI and inject my replacement system that I was designing.

That project got put on hold when I decided to start my company in 2015. It was amazing for learning, because I was actually interested in it. As I got older, my interest in gaming and gamedev have both waned. No interest at all in going into that hyper competitive market!

[+] dorianmariefr|4 years ago|reply
"Your first challenge is to star our GitHub repository"
[+] staticelf|4 years ago|reply
Looks very cool! Good job!

Interesting to see that you have chosen Kotlin for the client parts as well. I am assuming it's compiling kotlin to javascript?

What do you think of it so far?

It would be nice with an available option not to sign in with Github since it seems like the requested stuff like "act on your behalf" makes me not want to login.

It's too much of an hassle to create a new github just to play a game so that is unfortunately where you lost me.

[+] blindpirate|4 years ago|reply
Hi, I fully understand your concern (because if I were you I might think the same as you). First of all, a GitHub app can only "act on your behalf" in the repository/organization where it's installed (which is only https://github.com/ByteLegendQuest). It has no permission to access any other resources outside.

Yes, it's using Kotlin multiplatform, so I can write code once and use it at both frontend and backend.

Because the game highly depends on GitHub API and GitHub actions (when you submit code answer in the game, you are actually creating pull requests), using a GitHub account would be the best option.

[+] ramesh31|4 years ago|reply
Pretty awesome that making an MMO has gone from something requiring a budget of millions to being something an indie dev can put together with Unity and a few cloud services now. It's impossible to overstate just how far the tooling for game dev has come in the last 10 years. What the OP is describing would have been a silly pipedream in 2010.
[+] criley2|4 years ago|reply
For the record people were making "MMO's" as hobby or academic projects many decades ago. The earliest MMOs were text based multi-user dungeons and folks were programming them by themselves and running them on university hardware in the 80s. The biggest difference is obviously the lack of graphics, but you might be quite shocked at the sophistication of the gameplay mechanics and multiplayer in the MUDs of the 80s and 90s.
[+] pedrosorio|4 years ago|reply
A couple of questions:

- The progression seems to require going to Git island first which is not possible because I lack gold. It hints at going to the chest under the tree which says: "Ask a friend for an invitation code to open this chest". What friend? What does this mean?

- Even though I can't walk there, I seem to be able to click the challenges and do them (I guess this might not be intended, as it allows you to do things completely out of order). I did all of the challenges for "Java Reference and Value" and received only 2 stars on the second challenge. I suppose this means I did something wrong/sub-optimally, but I did not see any feedback on what that was. Did I miss it?

[+] blindpirate|4 years ago|reply
By design, you should be open "IDE" chest to get enough gold to go to Git Island. Didn't you open that chest?

The "invitation code box" is a fallback when people happen to use up their gold.

``` I'm learning programming in a game, come to JavaIsland coordinate (BJ, 94), open the chest with my invitation code 5ZwPT6OWwipmHRG, you and me can both get 500 gold. Join me at ByteLegend https://bytelegend.com ! ```

> Even though I can't walk there, I seem to be able to click the challenges and do them

It's intended. You can finish the challenge there, but you can only get a "key" but can't have the chest open immediately. You have to go close to the chest to use that key to open the chest. The intention is to allow people do challenges without going through the whole story. I'm not saying this is perfect, but this is what current it's designed.

> I did all of the challenges for "Java Reference and Value" and received only 2 stars on the second challenge. I suppose this means I did something wrong/sub-optimally, but I did not see any feedback on what that was.

When you do the challenge, you actually create a pull request on github. There's some comments in the pull request telling you what's the issue in you code. However, I shouldn't have told you this if this is a well-desgined game UI. Thanks for the feedback!

[+] mftb|4 years ago|reply
This is so awesome. It's awesome because this statement is ridiculously ambitious, "I'm writing an MMORPG game for learning programming". Rock on! You've obviously made a ton of progress. Keep going, follow your dream.
[+] gknoy|4 years ago|reply
This looks cool! One thing that gave me pause was, when granting permissions what is the "act on my behalf" that ByteLegend needs?
[+] blindpirate|4 years ago|reply
Hi, I understand your concern. Let me explain.

First of all, a GitHub app can only "act on your behalf" in the repository/organization where it's installed (which is only https://github.com/ByteLegendQuest). It has no permission to access any other resources outside.

When you finish the code challenges, you actually create a pull request on GitHub and trigger a GitHub action (which is opensource and you can examine the whole process). So "act on your behalf" means "invoke GitHub API to create pull request in github.com/ByteLegendQuest organization". The app won't and can't access any resources outside github.com/ByteLegendQuest organization.

I know the permission request looks a bit scary. But I'm an individual developer, using GitHub API/webhook/actions would be the easiest and cheapest solution for me.

[+] Thaxll|4 years ago|reply
MMORPG enterprise edition.
[+] matt321|4 years ago|reply
Very nice work. Amazing what a motivated person can do these days
[+] productceo|4 years ago|reply
What did you use to create the multiplayer experience? (Real-time communication protocol or libraries)

What was this part of experience like?

[+] shmde|4 years ago|reply
Hey, I know its too much to ask. But will there be a Javascript version of this ? This looks amazing btw.