Friday, July 29, 2016

Plugins: An Explaination

In the May post, I mentioned I should talk about the 'plugin-based gameplay' thing I was doing.  I'll talk about that now.

Mega-Risk is not meant to be a static game.  It's intended to have as much community-created content as possible.  Why?  So that there can be as many maps, game modes, and various customizations as possible.

I described the settings system in April.  The main purpose behind that was to allow players to tweak every facet of Mega-Risk possible to make every game a little different.

Along with this, I'm trying to make it easy for people to add their own custom content.  I've already started to plan a content-creator/map editor when(or if) the base game gets 'completed'.

I was having a hard time trying to figure out how to make stuff made in this map creator into Mega-Risk when I found out Unreal has a built-in mod system (Plugins).

I have since decided to use this in the development of Mega-Risk.  Everything outside of the base functionality (territories, multiplayer handling, etc.) will be built as a plugin.  This includes any base maps or other assets that would be included in the main game.  By doing this, players will be able to completely replace the main Mega-Risk stuff with their own.

That's basically all there is to say on that.

Well, there goes summer

I believed this summer would be all about putting Mega-Risk together and getting everything done 80s montage-style.

I was wrong.  I was so very wrong.

For those of you who do not know me personally, I will be moving to Seattle this August to attend the Academy of Interactive Entertainment for the next two years before (hopefully) being trebuchet-ed into the hectic world of Video Game programming where I'll be paid to transmute caffeine into code.

The key word in that statement is moving.
I have never moved before in my life and my parents have not done so in about twenty years.  Furthermore, none of us had any experience finding a home in a major market like Seattle.  We had no idea how much that, as well as all the other things having to do with starting college, would dominate our lives.

So, in between apartment hunting and filing out paperwork and scheduling meetings with school people, I have not had 24/7 to develop Mega-Risk as I had hoped.  Also, to be honest, some days I have spent some of my free time away from the project for good and bad reasons, taking in my last true gulps of free summer before the eternal cycle of adulthood becomes my life.


Anyway, enough about me and my excuses, let's talk about MEGA-RISK.

For the most part, I've been making that 'glue' that I talked about last post, connecting some of my disconnected code bits and adding some more multiplayer implementation.
I've also been reading about a lot of concepts I'm not too familiar with.  Specifically, I've been looking into file manipulation (having the game do stuff with other files, for config purposes mainly), the built-in save game system,  plugins(mods), and a lot of stuff on how to make a multiplayer game run without imploding or breaking immediately(this is the hard one).

Also, for the last month, I have taken a kind-of break from the main Mega-Risk project.  Another IRL Mega-Risk thing is happening over here and The Creator is trying out a Westeros-themed board and ruleset with a ton of RPG-like mechanics.

After realizing how hard it was going to be to keep track of everything, I decided to make a Mega-Risk companion app of sorts that holds tracks stuff like how many territories/continents people own, current diplomatic statuses between players, and (now) all the Westeros-RPG stuff.
I also want to have it do some of the more tedious things like calculating reinforcements or letting us know when to play a special event card.

I've used this as an excuse to try out some of the more abstract features I want in Mega-Risk like save games and diplomacy and config files.

So I haven't strictly taken a break from Mega-Risk, but I have paused work on the main project itself.  I don't want to make an promises about when I expect to be able to add a bunch of new stuff, especially with game school just around the corner, but I do hope to get back to the main game soon.

Thursday, May 19, 2016

CONRAD STARTS HIS BLOGGLES

SO, CONRAD HERE, let me fill you in on what I've recently been doing.

1. TERRITORIES. basically I've been fiddling around with C++ trying to create voxel terrain out of an image. in short, VERY COMPLICATED. Annoyingly, I could not wizard my way into making this work. however just yesterday(?) (the 18th of may) I figured out a way to do this with my specialty. materials. WHOOO and it works. I can generate a terrain out of any (heightmap) image! so I currently have the regular mega risk map, Mata Nui from Bionicle, and some Skyrim map that Shmid sent me. but the skyrim map just died for unknown reasons so I have to redo that :/ but that will take approximately 5 seconds to fix so you can assume that works.

well that's the main thing. me blogs if there is anything new and wizardy happening.

It's time once again for the monthly BLOG POST

I never intend to make one post a month, it just happens that way.  Approximately once a month, a decent development is made.  Every time I end on an optimistic note, saying that I hope I can get to writing about actual gameplay soon.  I suppose last time I did the settings, this time the other major hurdle has been cleared.

I'm talking about multiplayer.

Although all of the functionality isn't there and the whole thing has yet to be tested thoroughly, I can proudly say that I seem to be able to host an online game, get a list of online games (through a 'join game' menu) and then join that game.
If you've been keeping up with us for the entire time, you'll know this is a huge accomplishment for us.  We poked around with the Unreal's limited Blueprint multiplayer support during the prototype, but after a couple of infuriating weeks, we gave up on that aspect with the conclusion that the available Blueprint stuff simply wasn't able to give us what we wanted.

AND NOW IT WE HAVE WHAT WE WANTED.  I really do hope that everything is working as well as it seems.  I also really need to thank roomon1 on the Unreal AnswerHub for being awesomesauce and basically making this happen.  Here's the question-thread that led to this post.

So now that that tremendous headache's out of the way, we can jump right into the fun stuff!  JK, I still have some holes to patch up in the MP system and I have to glue everything I've currently got (a little bit) together.
By that I mean I have to make sure that all of the backbone stuff like multiplayer and settings and the plugin-based approach I'm taking to this (oh right that I have to talk about that too) all work in a cobbled-together way.

But finally I can finally see the part where I'm not working on infrastructure anymore and am making stuff I can take screenshots of.  Hopefully something can be put together before I leave for game dev college in August.  That's somewhat of a mini-deadline for me since I know that after that starts up I'll have school projects to worry about and won't barely be able to put any time into this.  Hopefully I'll have it to the point where my partner Khan can take over.

Speaking of him, he's been doing some really cool stuff recently (and in the past as well).  I should get him to post things here...

Anyway, see you in a month (or less if something cool happens).

Monday, April 11, 2016

It feels like it's been longer than a month

It's time again for another month-apart update.
This time, I am able to say that NOT EVERYTHING IS BROKEN ANYMORE.  I was able to essentially remake Mega-Risk and get everything locked within the vaults of source control.  Over Spring Break, I was able to get a theoretically correct multiplayer setup going, but was forced to stop when, after getting all the code to compile, I could not make the in-game server list show any servers.

So I decided to get a settings system working.  It may not have been made obvious in previous posts, but customization is a huge part of Mega-Risk.  In real-life games, the rules are often tinkered with from game to game (and sometimes mid-game as well).  Everything from the ability to trade territory cards to the number of troops that can be raised in a single turn to existence of unbreakable alliances are all things that are decided upon in each and every game.  As such, I've been trying to figure out a fast and easy way to implement an ENORMOUS amount of game settings, with the ability to add more whenever we need to without any headaches.

My prayers were answered in the form of spreadsheets.  Luckily for me, Unreal Engine supports the use of Excel Sheets to create data tables*.  After a long night of getting the required framework in, I had pretty much created a system in which a central 'Settings Sheet' can be used to hold every single game setting in Mega-Risk.  Even better, I found out I can edit this sheet in-engine once it's been imported into Unreal for the first time.
Actually hooking this data up to a set of variables took a bit longer.  To get into the details, I had to make a set of menus that categorizes all settings into a neat little settings screen and then have every setting correlate to a variable in my GameInstance (basically a place where all settings and game-wide data is kept).

Thankfully, this system seems to be working now and I can try to get multiplayer working.  Well, when I say that I mean I can now help my partner with the problem he's having with source control so he can try and solve the problem because I can't figure it out for the life of me.

All-in-all, Mega-Risk is chugging along at a steady-ish pace and I think we're almost ready to make all the fun, cool stuff like actual gameplay soon. ;D

Monday, March 14, 2016

Progress update: everything is broken

HELLO AGAIN, any and all who read this!  It's been over a month, so I figured I'd give a status update.  As the title mentions, everything is, once again, broken.  How broken, you ask?  Well, let me tell you.

Over the last month, I've learned a very valuable lesson: if you EVER mess around with your UE4 project files using Windows Explorer, there's a good chance you will permanently and irredeemably break your project so bad that it will either never compile again or the project will be unable to load.

After implementing basic forms of all of the infrastructural files in C++, I received some very weird compile errors.  After some searching, the only help I could find was a suggestion that I delete some of the folders in my project, namely Build and Saved.  I'm not 100% sure what these do, but I think Build handles all the files that are generated when the project is built/compiled and Saved is mainly backups and whatnot.

SO, I deleted these two under the impression that it was similar to clearing my cache.

I was very wrong.

On my next build, I got even more errors and suddenly Unreal would not load the project, giving me a minimal crash report for which there was no help.  Frustrated, I deleted the entire project (I hadn't put too much work into it at this point) and started over.

This process repeated itself to some extent over the following weeks.  One time, I was even able to get the Invasion mechanics coded before it flopped and burned.

Over the past two weeks, most of my time has been spent working on a research paper for my history class (school is still a thing that exists) and trying to find some scholarships to apply for.  Mega-Risk was not opened at all during that time.

I'm back now, and I'm going to try to get this puppy stable and not running into a pit of spikes like a rapid Super Meat Boy every ten seconds.

Wish me luck.

Sunday, February 7, 2016

THIS IS STILL A THING

I'M BACK.  It's been exactly two months since the last post.  In that time, winter break has come and gone and now winter quarter is half way done.  In that time I'll admit that I have been neglecting Mega-Risk.  Unreal C++ scares me.

But over the last two weeks I finally took the time to finish (?) a Game Dev Document and start writing a small amount of code.  I'm still very unfamiliar with the UE4 API and at this point I have no idea what is going to work.  The basic plan here is to essentially port the majority of the prototype blueprints (especially the infrastructure stuff) to code and then use Blueprints for some simple stuff.  Thankfully, Unreal has multiple example projects that I've been studying to see how to blend C++ and blueprints.

Since I've already got most of the stuff plotted out, it hopefully won't take too horrendously long to get everything up to the point of the prototype.  I personally would like to see the project get there by summer, but who knows what will happen.

Hope to be back here soon with a good, solid update.


P.S. We finally got source control working!  WOOOOOO