[MS:R] Lark's Journal

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
I figured I might as well track MS:R (or any other) progress here too, seems like a quiet-enough spot, but it'll mostly be to post/update milestones and take notes (and stay motivated?)
 
Last edited:

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
Updated the status. Finished rewriting a crude Base Pawn (shared commonalities for all Characters and Creatures, like Health, TakeDamage, Death, etc.) and Base Character (Players/NPCs, implements Collision and Movement by default), with networking. Animations work, but the implementation is the same as before anyway.

I'm also claiming "success" on the Player Controller class for now, since I set up simple inputs (signals to the Character when to move, jump, crouch, etc). While I'm still working on the Camera component for 3rd-Person view, all anyone cares about is 1st-Person, right? Right??

Besides, I already know the Item/Inventory system is going to be a pain, which is why I'm giving it two weeks and getting started tomorrow. But for now, progress!
 

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
Another status update:

The bad news is I had to go back and rewrite the Character and Controller classes to be more Engine-friendly. It was either that, or make it so debugging is difficult, and future UE4 Engine Updates wouldn't affect those particular classes. So I did the smart thing, went back, and rewrote them to play nice with the Engine. However, it did delay work on the Item/Inventory system.

The good news: I added an Ability System that's also Engine-friendly (and natively incorporates great network behavior)! It can be attached to any character/creature and defines Stats like Health, Mana, Stamina, and Attributes that drive the Stats like Strength and Vitality. Additionally, it defines Abilities for just about any in-game actions (active or passive, except for basic functions like Look/Movement), that use Stat/Attribute calculations and/or consume resources like Items, Mana, or Stamina. This includes things like Sprint, Jump, Cast Spell, Use Item, etc.

The better news is the Item/Inventory System didn't take as long as I was expecting, and I just finished testing a basic, working item that is spawned in the world, can be picked up/added to a working inventory, and tossed back out. I haven't finished defining "OnUse" or "Equip" functions yet, but I might do those next. Not sure how much farther I want to go, though, since at this point it starts to get artistic (drawing a pretty UI for the Inventory, etc.)

The best news is that all these updates (theoretically) make game dev work much easier, since they require little/no C++ updates - they can all be done in the UE4 Editor quite easily, and if they need some special scripting, that can be done quickly via Blueprints as well. Once everything's at a good stopping point for all this early functionality, I'll make some demo vids showing how easy it is to create/import stuff.

The terrible news is COVID-19 cancelled my family vacation in April, so I guess I'll be around working on this some more?

Next steps:
- Add "OnUse" and "Equip" features to Items
- Make a quick Equipment panel
- Finish Main Menu features like level selection, Audio, and Video settings.
- Add a Title Screen/Map
- Add a playable Test Map or two
 
Last edited:

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
A quick update: Not much to report. Sadly, over the last two weeks, work took up quite a bit of time, even though I'm on work-from-home status. I've also gone back and redone Items and Inventory a few times now, to make things more modular for all future content creators. I've busted my own timeline, but I just wanted to let you all know I'm alive and well, and I hope you are too.
 

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
So this week was productive: I've successfully implemented an Asset Management system that loads base assets when the game starts up, and can load/unload other assets dynamically at runtime. Right now it just uses the engine's default Asset Manager, but it's not too hard to create a custom class if need be (and very little code would need to be changed since it just fetches whatever Asset Manager happens to be assigned). But this has significant memory management implications, and makes things so much easier for content creators.

But what exactly does this mean? Well, I took the Models and Meshes of two assets so far: A Sword and an Axe (thanks @Age ) and I turned them into Data Blueprints. Example of the Sword Blueprint (yes, I should probably add a Damage value):
Sword_2.png
The Icon is just a screenshot of the Sword mesh rotated on a black background, and it will be what you see in the Inventory until the item is equipped or dropped. So if someone wanted to make items for MS:R, they just need to make a Mesh (in Blender, Maya, or whatever), copy a Blueprint like the one shown above, fill in the values, and you're done. You could even drag-and-drop the Blueprint directly into a Map and make it lootable!

And the best part? It doesn't need to be coded, or added to a Database, or Spreadsheet, or .ini file or anything - the Asset Manager scans the Items folder (in the Editor) and when the game loads, it automatically loads the new item! I'll probably also make a field that allows you to set a loot pool, like "Rare Loot Pool," so it would automatically be added as random in-game loot, too.

As for memory management: The game loads details about every item when it first loads, but doesn't load the icons or meshes until they're actually used, on a per-client basis. So if I open my inventory, my client will load and cache the icons for my inventory, but doesn't force every other connected player to do the same. And for meshes, which are the most cost-intensive, they're only loaded when seen/equipped, and unloaded otherwise. For instance, see the screenshot below:
Axe_2.png
All I did was drag-and-drop the Axe blueprint into the map, and the game didn't load the Axe mesh until the map was loading. I also checked to see if the Sword mesh and icon were also loaded, but they were not - proving assets are only loaded when needed.

The next step is to add another Axe to the map and see if my Pointers work for identical assets. Scenario: If 4 players are all wearing a Leather Cap, does it load one Mesh into memory and point to it 4 times, or load 4 Meshes? If it's the former, that's wonderful!

Yes, an Asset Manager wasn't on my to-do, but when I learned about it, I wanted to tackle it early and fast. Sometimes development feels very much like "one step backward, two steps forward" each week, as I discover something I want to rewrite or something new I want to implement, but it will be worth it in the end. Right?
 
Last edited:

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
Another update. I keep looking at my original proposed timeline and cry, but c'est la vie. I've found a thousand ways how not to make a lightbulb; a few thousand more and I'll be on par with Edison.

Progress:
- Commented the shit outta the code
- Properly abstracted/encapsulated variables, using accessors and mutators only as needed
- Load item icons for YOUR inventory (and no one else's) into memory for quick access.
- Made it difficult to spawn/duplicate items outside the editor, even as the host
- Interactive objects in the world (except hostile creatures) are outlined when looking at them (at certain ranges) and provide limited information about them
- Most text that appears in-game is stored in a String Table that can be easily localized for any language
- Nativized some slow HUD/widget functions
- Created simple Character save/load functionality

Next Steps:
- Finish up basic HUD functionality
- Add four Abilities: Run, Jump, Drink Potion, and Normal Attack
- Create a test/demo map
 
Last edited:

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
Wow, it's been almost a month since the last update, but I'm still alive.

Work's been busy, but I'm still getting about an hour in a day on MS:R. I'll post some progress screenshots in the MS:R forum soon, still plugging away at various and sundry.
 

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
Well, finally got to a good point to post a public update in the MSR discussion forum, and updated the timeline here as well.

Getting a good grip on UE4 C++ takes some time, but I feel like I'm finally getting somewhere with it. I can debug quickly without scouring the net for answers, and until I start testing net play, I think I've got some momentum now.
 

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
Most of my updates have gone in the MS:R Discussions forum, but I thought I'd do a quick update here too.

I've just finished the first "Initial commit" into the MS:R GitHub repo, so if my PC explodes, at least we don't lose everything.

I'm currently focusing on building an aesthetic for the game. On top of looking at Player Character models, I'm making a test map that incorporates a few different climates, but is somewhat small-scale so it doesn't take too long to load. You've all likely seen the UE4 default First-Person map with the white cubes I've been using, and I'll continue to use that one because it loads fast. But this new map will be used for larger-scale testing and to see if new concepts fit with the environment.

For anyone curious, I'm trying out heightmapped landscapes - either from a real-world location from Tangram Heightmapper, or by generating one through QuadSpinner Gaea - and then laying down some terrain materials. I'm interested to see how it goes.

I have a feeling it could take a while to build this map, on top of having to focus more heavily on work for the next few weeks, so it might be a while before the next update. We'll see.
 
Last edited:

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
Quick update: Still playing with landscapes. Work was busy, but I got a few days in on UE4 last week. I'm not really getting that artistic - most of it is procedurally generated (heightmap, grass, foliage, etc) - but it's somewhat entertaining to see what weird environments are produced.

- Created a Landscape Master Material, which is instanced for each new landscape in any environment. As much as I hate tweaking materials, this was pretty much required in order to remove the horribly obvious tiling look, setup layer blends (dirt/grass), set roughness, and more. I basically spent a few days learning how to do landscaping.

- Created two small biomes for the test map: Desert and Hills, which were fairly easy. The next two will be Tundra/Mountains and Forest, the latter of which might take some time to tweak.

I'm not a mapper, and I don't (didn't?) want to dive too far into environmental design, but I feel like this is important to create an (initial) aesthetic and eventually help other people get started with mapping.
 

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
Hi all,

I've been mostly absent for about a month now, mostly due to a family issue that popped up. I'm planning to dive back into UE4 once I've caught up on work, but I wanted to let you all know I'm not dead.
 

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
So I updated the first post to remove milestones because, frankly, they're just embarrassing at this point.

That being said, between the last few extremely busy weeks, I've found a couple hours here and there to keep plugging away. I've added some crude sliders for video/audio settings and still adding to my test level.

I know it's been slow the last couple months, but I'll be sure to continue posting updates and show some progress.
 

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
I'm back! But, I did exactly what I told myself I would never do and I went on a long hiatus without posting an update. So feel free to throw shade my way, I earned it.

Most of that had to do with getting fed up with UE4 crashing on my old rig more frequently due to running out of VRAM. So unless I saved every couple minutes, I would lose work and get aggravated. But no more!

PXL_20210116_205753639.jpg

This is my new rig, obviously missing the case (that's been in the mail since 27 December...), but everything else is there, and it's running perfectly so far. I even fired up UE4, ran a compile and lighting build, and ohh man is it fast!

So I'm back in action, and I'll keep you all posted. I'm still getting everything set up, but expect an update with some progress by next weekend.
 

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
I spent a good amount of time this last week adding animations to my new standard Knight test character. And even though he has a couple dozen animations now, not all of them work/blend cleanly. I envy the dead - and animators everywhere, because thus stuff is tedious.

Took me a while to keep weapons from swinging in my face while running in 1st Person, and then the arm was unnatural-looking in 3rd person, but I think it's someehat-better looking now. The problem is that was a couple hours work for only a couple animations - and more need work!

However, I really want to get to the goal of having another playable demo before long, so I might move on and come back before the demo release.

I still need to tie in the Gameplay Ability system properly, maybe add a few cool effects, and add some audio and creatures/lootable objects in too, and I think it will be ready. That could take a couple weeks - realistically probably a month - but the sooner I start, the better. Once the demo's ready, I think that will help in the recruiting effort.
 

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
My job picked up a bit this week, but here's some quick MS:R highlights:
  • Worked on the GameplayAbilitySystem a bit more, which required some refresher reading from a few months ago. It links with GameplayAttributes, which already controls stats, but I'm adding a simple test "Swing Down" attack ability. If all goes well, this will make it easy to add future abilities like spells, skills, etc.
  • Just finished writing a MS:R Coding Standard rules and guidelines document. This is in preparation for a potential new dev joining the team. It largely follows the UE4 Coding Standard, with some notes.
  • Currently reviewing/updating the source code to make sure it all falls in line with the coding standard as well (like const correctness... ugh), before reestablishing a new master and dev branch on GitHub. This will also clean up some assets that probably shouldn't be there anyway (like some test 8K textures).
Monday will be busy, but I expect to dive back in after work.

EDIT: Here is a link to the initial coding standard doc, if anyone cares to take a look.
 
Last edited:

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
February was a busy month. Made a lot of changes, a few of them gameplay-related, but we've been making progress as a team. Shout out to @CrashWolf, @Age, and @Kermit for lots of conceptual ideas both put on paper and (some) brought to life. And Jon for assisting with getting a new Git repo up and running properly.

One of the mistakes I made early on was using Static Meshes for all items. While it's okay for most weapons, it's terrible for equipping flexible armor, like pants. So we're in the process of converting items to Skeletal Meshes, and (most) sockets to pre-defined skeletal components. This will take a bit as it involves rewriting the Equip functions as well. So that's where we are now.

At least our Source Control repo is up and running, so we can collaborate more effectively (especially with more members in the future). Development's really picking up, even if it means taking a step back for a moment, but I feel like we have some good momentum going now.

Oh and random shout outs to @zeus9860 and @Lucifer Majiskus too šŸ˜˜
 

Lark

Old Skool Apostle
MSC Developer
MSR Developer
Lead MSR Developer
Joined
Dec 30, 2009
Messages
96
Reaction score
103
Location
Oregon
Well it's been a month, so I'll add a quick update. I was able to successfully install an independent GitLab instance (finally!), so we've moved the repo from Gitea to GitLab. This allows us to do cool stuff like improved Project Management and CI/CD, so we'll probably stick with GitLab unless a significant conflict rears its ugly head, in which case we'll revert back to Gitea.

I was busy with work last week, but I'm still getting around 8-12 hours a week on the source code, which is nice. I wish I could get to the all the sexy stuff we want to implement, but in order to get to adding GameplayAbilities, I had to fix Item/Equip functions, which has been the focus of the last ~3 weeks.

We've added a few new members to the team, though, so once we get rolling, I think we will see a significant ramp up in production. Here's to hoping this is the last solely "mechanical" update for a while.
 
Top