Jump to content

Recommended Posts

First and foremost Guild Tycoon is a game where a player controls a set of characters, provides them with equipment, and sends them off to fight in dungeons awaiting their hopefully successful return with wonderful loot. Players over decades have seen this type of system in many different iterations from Diablo, to World of Warcraft, to, well…, Guild Tycoon! Personally, I adore games like Diablo and World of Warcraft where players can fight through battles and improve their characters to access forever expanding content within the game. However, I found that I grew somewhat wearisome of the required investment of active time to progress. My thought, and basis for the game, is that players can get similar levels of enjoyment out of an experience that automates some of the tasks that would otherwise need to be controlled directly. I wanted to build a game where players set actions for their characters, game administrators set actions for enemies in dungeons, and a server runs a fight based on a set of rules and returns the result.

1*U-2Ow4k2hjafNwIa5dUINA.png

It's not much to look at yet, but it's taken quite a bit of work to get to this point!

I have since scrapped that original GUI, which was built on DotVVM, for the not-as-popular-as-the-original version of Angular. The server is built using ASP.NET Core, and the information is stored in a Microsoft SQL database. Everything is hosted in Azure.

DotVVM, Angular, and ASP.NET Core are all types of frameworks. I think it's best to conceptualize frameworks as toolboxes. They contain everything you need in order to build a specific type of software. As an electrician needs a different set of tools than a painter, developers need different frameworks specialized for certain purposes. This analogy breaks down a bit as you dive into the specifics since frameworks are usually designed to be fairly malleable.

I started with DotVVM because it is a framework built on .NET. It’s specialty is building GUIs. It uses coding languages I was already familiar with, C#. Since I had never built a GUI before, using a familiar language was a comforting idea. However, I quickly found out that when I ran into issues, I couldn’t figure out how to resolve them. Most of the popular online outlets for help in the software world also had almost nothing on DotVVM. After hours and hours of frustration, I decided I should just bite the bullet and learn a completely new language and a completely new framework that was better supported, had a larger community and was vetted by larger entities that already use the framework for their products. This would be more work upfront, but down the road would eventually pay off.

Before jumping over to Angular, I decided to give another framework a shot. I had heard some good things about Aurelia, and (unless I’m mistaken) it is headed by someone who left the team that created Angular. I was able to stand up the basic example quickly, but as soon as I wanted to add my own authentication system I ran into issues. I looked through the documentation and spent hours online troubleshooting my issue, but I couldn’t resolve it.

This left me to consider two remaining options, React and Angular. I looked at both, but to be perfectly honest, I decided to try Angular because the “Getting Started” tutorial was pretty much my game.

Fortunately, I did not have to go through as much struggle in order to decide on the right framework for the server. My dayjob already uses .NET MVC for our backend, so I knew I could stick with that. The difference is that I decided to upgrade to .NET Core, mainly because it is far simpler to implement a custom authentication system.

SQL databases have been around for decades, and I didn’t necessarily want to spend more time learning yet another system for saving information unless there was a compelling need, so I stuck with the traditional approach. To communicate between .NET Core server and the SQL server I did decide to select Dapper, which is a tool that is gaining popularity over Entity Framework. The difference between Entity Framework and Dapper is that Entity Framework is designed to try to encompass all possible needs for interacting with a SQL server into a single package whereas Dapper takes the approach that each development team should build their interaction with SQL to exactly suit their needs.

It's also completely open source: Front endback end

Link to post
Share on other sites

In Guild Tycoon a set of 5 characters is pitted against a set of 5 enemies. Each unit has a stack of instructions, and when one returns true, it executes that one. If not, it moves on. If you set your character to "Heal allies if health is lower than 70% HP" and none of your allies fit that instruction, it'll move to the next "Hit first enemy with HP greater than 0". I logged each of those actions in a logic, and recorded it for each wave. This is then stored in a database and can be retrieved in the UI.

dUhZ419.png

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...