Jump to content
Site Stability Read more... ×
  • Advertisement
Sign in to follow this  
  • entries
    5
  • comments
    13
  • views
    840

Entries in this blog

 

Game Design Document 2nd Draft

I've spent the last month trying to flesh out the design document some more.  I also spent the better part of the last month playing other games that had a similar theme to what I'm aiming for.  I looked at games like Ultima Online, Legends of Aria, Conquerer's Blade, and even Elite Dangerous.  Each of these games have a common theme, and that's open world sandbox, with a, somewhat, player driven world, which is what I'm looking to do.  I looked at the mechanics of these games, considered what they do well, what they don't do well, and what each of them has unique, and it made me think about what I would like to have unique about this game. I settled on a few things. The first unique concept I applied is that items and equipment are unique.  Too often do you see that multiple players can have the exact same equipment, exact same look, same exact skill build, etc and the only thing that really separates them is the player behind the controller/keyboard.  There's no uniqueness to the characters themselves, which, to me, is a core requirement to RPGs and especially MMORPGs.  Players create these characters to be unique, to stand out, to be individualized, it makes the world they're playing in feel more real.  For me, this is a major necessity, so naturally, crafting and treasure hunting are major focus areas. The second unique concept is the idea of land ownership.  Unlike most other games, a player is not limited to the amount of land they may own.  This doesn't mean that one player can just go around and purchase all of the land, however, there are constraints to owning land, such as taxes, upkeep, cost to purchase, etc.  This isn't a piece that I've added to the document yet, but it will be in the next draft. The third concept is the ability for the players to affect the game world.  This idea takes a lot from many different games and simply mashes them together.  For example, the player base can and will affect the world around them, whether it's by causing a certain species of animals to go extinct, to taking an action that could cause two cities to go to war with each other, the players aren't just spectators or participants in world events, they're dictating world events.  Out of everything, this is easily the most ambitious concept I have for the game. As I continue on with my document, I'm realizing more and more how ambitious this project is and it's exciting and frightening at the same time.  There have been numerous attempts at making a game like this by more knowledgeable and skilled developers than I, but I'm not going to be discouraged.  If I fail, I fail, but I'm going to learn tons either way. Once again, I welcome any and all feedback. GDD 2nd Draft.docx

RobbyT15

RobbyT15

 

New Update - Design Document Draft

It's been a few months since I've made an update to this post, but I haven't forgotten about it.  I decided I needed to take a step back and try to figure out some things bout the game I'm trying to make and what I wanted to get out of this project.  I also realized that I needed to get some more knowledge, as far as concept and best practices, in the programming language(s) I'm going to build the project in. On this internal reflection, I realized that this is potentially something I may want to push forward with, and possibly work with a team on to make an actual viable product.  To do that, however, I would need some kind of document to guide me/us.  So, I started on an actual design document.  At this stage, it's simply a draft, there is much more work to be done, formulas to figure out(I suck at math so this is easily the most challenging part for me), concepts to flesh out, etc. Right now, the draft is focusing on player combat, however, I do have some more material that looks at things like crafting and gathering, which I'll include in my next post. If you read it, please, feel free to comment on it.  If you think there's something that can be done better, let me know.     Design Document.pdf

RobbyT15

RobbyT15

 

Update

I haven't made an update in a week or so and that's because I haven't really had the chance to do so.  Besides, the goals I set for myself in my last post still haven't been met, again, I haven't had the chance to do anything with the project.  I did, however, have the chance to look over some things and realize that what I was doing as far as the animal randomly moving to different points, was very ineffective and would run into some issues.  For example, the animal would only move in a positive direction, meaning it would only move west(right) and north(up), never east(left) or south(down). Why was this happening? This was happening because of how I set my random point positioning.  I always set it to start a 0 for both my X and Z positions.  For the purposes of my previous demonstration, it was fine since the animal would always start out at that position and since it was the south west corner of my terrain, but what if I had set my animal's starting position somewhere else, say, in the middle of the terrain or in the north east corner?  Since it would only move in a positive direction, it would potentially not move at all. What did I do? So I fixed this by resetting the random point to the animal's position each time the animal stopped moving, then when the idle timer hit zero, I set an negative value of the minimum position for the X and Z positions as long as the resulting value for each position is greater than zero.  If not, then the X and Z positions would be zero. What else could go wrong? Halfway through writing about this fix I made another realization, the positive values for X and Z could potentially lead the animal off of the terrain.  This isn't a big deal if I were to do a spherical world with endless terrain(which I intend to do) but for a terrain that ends, this could be a problem.  So to fix this, the maximum X and Z positions will have a check to see if they are the same as the maximum terrain width and depth.  Another issue that is going to come up is, what happens if the terrain drops below a certain height or rises above a certain height?  Some animals can't climb, after all and avoid things like trenches, or cliffs.  This leads me into my next issue. Rugged terrain issue Terrain isn't flat and animals can move over terrain, climb and walk down hills, etc.  The current setup I have for my animal is assuming that the terrain is flat, which means, there are no hills or valleys.  Once I begin sculpting the terrain, there will be random points that are on hills or in valleys.  With the way I have it now, The point will actually set correctly, however, the animal will 'float' above a lower point in a sunken terrain and 'sink' under a higher point on a raised terrain. How do I fix? My instinct says that I need to sample the terrain's height on each frame while the animal is moving and set the animal's position and rotation equal to the sampled position and rotation.  However, logic tells me that the great minds over at Unity have a way for me to do this without having to worry about brute forcing the animal into behaving the way it needs to behave when dealing with rugged terrain, and that's with the NavMeshAgent.  So my current task and goal is to restructure my entire animal and make it behave as an agent on a nav mesh.  Which means, the script that allows my animal to move around is going to change drastically in order to accomplish this. Impediments The only issue I'm constantly running into is setting the random point.  Currently, I'm working with a flat terrain, so I have no need to change the height(Y) for the point, but once I sculpt my terrain, that will change.  Again, my instinct tells me that when I set my random point to start the animal moving again, I'll need to sample the terrain height and allow that to be my height(Y-value). What's coming? Winter....... No...well, yes, it is, but.......anyway. I'm going to restructure my animal so that it behaves as a navigation agent. I'm going to allow my random point to change its height based on where it's at on the sculpted terrain. Once I have the performance right for a single animal, I'm going to add additional animals, which means I'll have to start considering what behaviors will occur when the animals interact(collide). At the very least, expect to see the movement behavior done right in my next post, as well as seeing it perform on multiple animals.  I will also have a sculpted and designed terrain.  Hopefully I'll be able to get that done by the end of the weekend, if not, it'll definitely be done by this time next week.

RobbyT15

RobbyT15

 

Starting out: First pieces of life in the world

I have an admission to make, I had already made some progress prior to creating this blog, it wasn't too substantial though and what I've done so far definitely requires some cleanup, modification, and improvements. So what have I done? Since I'm building my world first, I figured I would start with something that will exist in my world, animals.  Since there are many types of animals that will exist, I decided that an abstract class or an interface would be needed to declare the common functionality that each animal would share, Walking, Running, Eating, etc., along with common properties, walk speed, run speed, etc.  Once I did this, I made the specific animal class.  In my case, I just made a cow, and inherited from the Animal class.  Within the animal class, each animal will have a Wander function, which basically tells the animal to wander around the world, stop periodically for a random amount of time, then wander some more.  This is a very simple function right now, but it will become much more complex later on.  All it does is checks if the animal has reached a random point, sets a new random point, and then moves the animal to the new position once it's done waiting, it also rotates the animal towards the new random point to give the animal the appearance that it's turning while walking. Impediments and Issues There was a very small issue I had with the cow class.  Originally I had the random point set up to change within the parent Animal class, but I quickly realized that this would cause each animal to move towards the same point , then move off into random directions.. One issue I've noticed I'm having is that occasionally, if the animal reaches the edge of the terrain, it'll 'skirt' the edge, meaning that part of it will hang off. On startup, the start wait time is always what I specify it to be in the editor, I need it to change to be a random value.  However, When I set it to a random value in the start method, it triggers some conflicting animations and functionality when moving to the first random point. Fixes I moved the random point within the individual cow class which allows the cow to set its own starting direction, rather than using a generic one. This issue is nothing more than correcting the bounds in which the animal can move.  Changing the minimum values from 0 to 1 fixes it. It's likely nothing more than moving the function call to the right place in the code, or creating the random value in the wrong place.  This will need to be investigated. What's upcoming Naturally, for functionality like allowing animals to wander around, I would give the responsibility to a manager, rather than the instance itself, so I'll be building an animal manager and attaching it to the world, to handle an animal's behavior.  I'll also be adding more animals to the scene to make sure that the functionality works on each animal, rather than one, and giving them behaviors for when they run into each other.  Finally, I'm going to form my terrain, which will show that the animals can move over hills, walk around trees, etc. Wait, what's that? If you're looking at my code for the animal class, you may notice that there's some properties and a function that are commented out and some hidden points in my scene.  My reasoning behind this is, eventually, I would like to give regions to each animal type.  In the real world, certain animals are native to certain areas.  You're not going to see a herd of cattle wandering around the desert unless they're severely lost, they're going to be closer to vegetation and a water source.  So this functionality will allow for that.  What would be fun, is to eventually give the animals the ability to get lost, which would then trigger the functionality to wander the entire world. Asset Credits As I mentioned, I'm using models, animations, audio, etc that others have created as I have no ability in these fields. Animal pack deluxe made by JANPEC Zombie made by PXLTIGER Fantasy Monster - Skeleton made by TEAMJOKER   IAnimal.cs Cow.cs Animal.cs Unity 2018.2.13f1 Personal (64bit) - SampleScene.unity - New Unity Project - PC, Mac & Linux Standalone_ _DX11_ 10_26_2018 10_34_19 AM.mp4

RobbyT15

RobbyT15

 

Why I'm doing this

I recently opened up the Unity Editor for the first time in a couple years and decided to get myself back into game development, partly because I've always wanted to make a game, partly because I'm bored at work, and partly because, it's a great learning experience, even if you fail miserably at it.  Like just about everyone else, I've always been advised that I should start small and work my way up, which makes perfect sense.  However, since I've messed around with the Unity engine in the past and actually made a few smaller games like Roll-a-Ball or Space Shooter, it never really felt like I was making something I wanted to make.  My dream has always been to make a game that I would want to play.  I grew up playing games like Ultima Online, Final Fantasy 7, Dark Age of Camelot, etc.  Games that pull you into the world and story, sink their hooks in, and hold on. So when I opened up Unity this time, I made a decision.  No tutorials, no starting small and working my way up, I'm jumping in the deep end and either sinking or swimming.  So I settled on making an RPG that I would want to play.  Sure, there are some things I'm not doing myself, I'm neither an animator nor a graphic designer, so many of the visual and audio components I'll be using will be from the asset store.  However, the functionality, game play, GUI, will all be done by one person, me. Yes, an RPG is a momentous task to undertake, even for a large team of people, and I fully expect to crash and burn, hard.  However, I can think of no better way to truly learn the art of game development.  If nothing else, I'll learn more than what I already know and become a better developer for it. So what's my process going to be?  Well, like any developer, I'm going to think about the big picture but focus on individual tasks.  Rather than doing what most learning tutorials tell you to do, I'm going to build my world first.  this means that I'm going to focus first on how animals and creatures behave, build my world out, create my weather, and then, I'll focus on adding my player, story, quests, missions, etc.  My reasoning behind this is, I already know what most of my world will behave and operate. Each week I'm going to post screen shots and video clips of the functionality I've completed.

RobbyT15

RobbyT15

Sign in to follow this  
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!