|
Post by Admin on Oct 28, 2014 2:33:34 GMT
Template Log #1: Previous WorkHello! Late start tonight, but I was able to make some progress on the game at least. But first here are some tidbits about things that are already implemented in the game!
Loot!
Here is the aftermath of a couple of test fights. Many sticks of placeholding and gold...
Loot currently has a procedural framework set up to drop varying types of armor and weapons. It is designed to roll first on number of drops, then varying levels of types of drop. From there it goes through a creation system that mixes and matches various meshes and vfx of that gear type, as well as properties that are inherent in those pieces, creating a whole. I have not specified what types of power-ups are associated with each type of gear, but that is more of a content issue than a framework one. All content types will be designed to fit the Template character.
Loot in the world is an example of an interactable and abstracting the interface for it is on the to-do.
Enemies
Enemies are created in a manner similar to loot (meshes mixed and matched based on core types, with properties added on with RNG), except that each zone will be given a set number of types, and that zone will have markup for which part of the zone they belong to. Each type of mob in the zone has a varying level of spawn occurrence (there is inherent rarity in some mobs). The first part of this work is finished. Mobs have mesh and metadata information generated on zone creation. However, the terrain system is not up to snuff at the moment, so world markup data is not in yet.
Spawning
The original idea was to spawn enemies Kingdom Hearts style in certain arrangements in front of you, but this felt weird after a few iterations of the game. I'm considering going two ways with this. Either an "Ambush" sequence where the enemies will come in from the edge of the screen in some formation and won't let you escape until it has been won, or just having them exist in the world... but I'm not inclined for the latter... Maybe both. Having them in world does allow the world to feel more populated... maybe getting too near to one instigates an ambush, similar to newer FF games. hmmm... I'm also considering having a further out camera angle for the world map, and then zooming in for combat and dungeons.
Collectible Mobs
The collectible mobs part has not been fleshed out yet. Designs exist, but the gameplay has not been tested. The first step is to write the system for storing those creatures. Combat needs to be proven out with having them in the field with you. We'll see how that works. Major To-Do.
Gameplay
So far in the gameplay sector, I have a simple rig and animations for a humanoid as well as for an arachnid creature. These just serve to prove out the initial gameplay, which is fast-paced action. The player currently has a basic 3-combo sword attack. I'm considering having a standard rig for types of weapons, with higher level weapons of those types unlocking more combos (5 hit instead of 3 for example). A big part of the gameplay is procedural skills, which have not been iterated on at all. It is designed to be a modular system, but the framework for this just hasn't made it yet. Tonight's work consisted of adding a dodge roll so that I can move out of the way of enemies quickly. This helped the game feel quicker and more dynamic in its gameplay. An iteration success for the night I would say.
Damage calculation on the scale of Diablo is currently in place. Everything from a weapons speed to the players crit chance and dmg are calculated with appropriate UI numbers.
Enemy AI
Enemy humanoid AI is currently relatively simple, the enemy state machine consists of loitering about until the player comes within range. Upon doing so, it will run until it reaches an intermediate range in which it becomes cautious and move about slowly, occasionally coming in for an attack. There are different states for aggresive vs passive, but currently there is no dynamic behavior shifts for lower health or anything like that. There is also no boss AI yet.
Loadout
The player has an equipment loadout and an inventory, but no associated UI for them yet. The interface for the loadout is also currently non-robust and requires some real iteration.
Zones
Zones are not in yet. I had a system for procedurally making zones and terrain, but since iterating on the gameplay, I have decided to rewrite it. The new system will more closely align to the changes in design that have come about. A streaming system for this will also need to come, but that is a bit down the line.
Aesthetic
Aesthetically, I have been playing around with different color schemes. The only biome I am iterating on at the moment is a "Field" or "Forest" biome. The character is currently yellow, but this character was quickly made without a second thought in the editor with primitives. A higher quality mesh of the same design will come later. The above shows the iteration so far.
Towns
I've fleshed out a design for functional requirements of towns, and made a test layout for a single core town type, but I believe it needs some major work done on it.
Game Save
Hah, game save... I have the start of a system for this, but it isn't up to snuff yet.
Audio
I have an audio manager written with some dictionary caches used by various gameplay systems. This has been working out pretty well. Other than that I just picked out some music from a few free sfx sites to get a feel for the game. I have some skills in audio production, and if it comes to it, I will attempt a score myself.
Content
Since I am very much at the prototype level of the game, I have not looked into professional assets. Currently I am using whatever free assets I can find to lend to the aesthetic needs until I am at a point where content creation takes priority.
Agenda for the rest of the week:
- Base Interactable Interface (for dem chests and NPCs)
- Mutable Content Interface (breakable pots, cutting down bushes, etc.)
- Procedural Terrain Engine Design
- Beginning on procedural skills framework
- Beginning on some friendly AI
Until next time,
Template Dev
|
|
|
Post by Admin on Oct 30, 2014 2:17:05 GMT
Template Log #2: Update
Quick update on what has been up the last two days. Yesterday afternoon I spent a bit of time iterating on aesthetics, mostly environment aesthetics and trees. Today was spent finishing up some aesthetic work from yesterday, got some new assets to help prototype the theme, and iterating on core combat, as well as test out some prototype hit vfx. The game "feel" is something I will often come back to in between bouts of architecture design, such as how it feels to hit an enemy, etc.. I tend to iterate on the game as a whole this way actually. I generally jump from code to design to art to audio then back to code, depending on where I feel the most need for improvement is and what I just generally feel like working on.
Anyway, back to work. I'll update this post when I finish working for the night.
Update: Welp, got about an hour of aesthetic work done before Level-5's Fantasy Life finished downloading. Naturally, no work got done after that. Pretty solid game. Great case study for my own aesthetics.
Template Dev
|
|
|
Post by Admin on Nov 1, 2014 22:29:27 GMT
Template Log #3: Weekend Combat Iterations
Weekend update:
Much of today has been spent refactoring core enemy movement. Specifically tweaking how they move when they are hurt. For melee, I want enemies to feel like they are interlocked with the player, in a way similar to Kingdom Hearts and other hack-and-slash games of this type. A lot of this will come down to good animation, but for now I need to prototype that feeling enough to move on.
After that, a lot of performance tuning. Managing to barely stay above 40 fps with 30 enemies on screen, without VFX. The hit and blood effects can get it chugging if I hit a large group of them at once, though... That'll require some more work, but I'm not greatly worried about it yet.
Identified some more work with enemy AI that needs doing. Specifically, to make AI a bit more lazy in their follow. Currently, they look directly at the player when chasing. This isn't ideal because many AI will eventually cluster. I may have a more robust AI system where the AI keeps track of nearby AI in an attempt to give each other space, or make the chase angle lazier until the AI is within a certain distance. I'll likely do the former as there are many cases that I would want the AI to stay away from each other.
I also need to revisit some audio handling. Hitting many enemies at once will need to equalize the volume so that it doesn't get louder than it should. Depending on whether I switch my attacks to be specific and collision-based or time-based. Either way, something will have to be done for this.
I'm now going to start on interact-able objects, since I don't think it'll take very long and I'll need them in for many of the features coming down the line.
Update: Alright, interactables are in. Let me tell ya, nothing is more satisfying than a bug where coming within the vicinity of a chest causes it to open and just pour loot out until the game crashes. #BestBugEver Might make that one a feature ;] (except for the crashing part...)
Update 2: Aaaaand a base mutable object class is in. This for basically any non-enemy that reacts to the player hitting it, such as pots or other things. I might be able to generalize this even more if I make all animations based on the same parameter.
Template Dev
|
|
|
Post by Admin on Nov 3, 2014 0:30:19 GMT
Template Log #4: Terrain Design
Starting to flesh out the design of zones. The idea is to start with a flat square base and build off of it. The current design takes into account the following steps:
- Define zone properties such as biome information, enemy types, etc. Create a terrain of a certain height and do an initial paint.
- Create edge splines. Specifically, this is the spline that goes from corner to the edge of a zone out area. This serves the purpose of keeping the player in the zone as well as defining the area to scatter the associated border prefab (trees or cliffs in the case of a field)
- Place elevated elements. These elements are convex (you will see why) prefabs with a second terrain object that sit on top of the terrain to create a terrace effect, as well as offer ways of ramping in and out. The material of the base will match the terrain.
- Generate road splines from zones to a defined crossroad point in the map. Making the terraced terrain convex makes this easier as we can quickly create a spline to the ramp out area without worrying about going off of it. Paint the terrain(s) along the spline as ground textures.
- Place cities within a padded area. These cities will be zoned into, not "open world". It will have to check that it is completely within or outside of any elevated region splines.
- Place dungeon set pieces. Same checks as cities.
- Generate road splines for dungeon and cities to crossroad. Same as zone edges. Paint.
- The hard part. Generating scenery markup in the world. Not quite sure how I will accomplish this. It places markup so that it can be streamed in and out, but I'll have to be creative in my rules for how to place. Something like set pieces of certain radii outside of a certain distance of each other, with a density measure. Will be complicated, that's for sure. A lot of tweaking will be needed to see what feels good.
But anyway, that's the plan, Stan. We'll see how it goes when I start implementing.
Template Dev
|
|
|
Post by Admin on Nov 8, 2014 4:18:40 GMT
Template Log #5
Weekend update. I've been working out the details of the terrain system and started implementation. Particularly trying to prove out how the aesthetic will fit and how I can modularize it and keep it looking good. I'll update this as I make progress on it.
Update:
Alright, got a decent start on this system. The road painting by spline is working, albeit a bit slow. I'll have to look at making it faster but I'm happy with it as a first pass. This resolves some previous unknowns that will help make this work faster.
Template Dev
|
|
|
Post by Admin on Nov 11, 2014 3:51:53 GMT
Template Log #6
Quick update before bed. I wanted to see how many enemies I could get on screen after some recent optimizations and I was able to fill the screen quite nicely and stay above 60 fps. Not exactly detailed enemies, but it's pretty solid. I really need to do something about that UI text though.. works good for individual mobs, not so much for hordes.
Template Dev
|
|
|
Post by Admin on Nov 15, 2014 17:46:24 GMT
Template Log #7
Weekend Update: I have been busy gathering assets and creating a procedural asset graph rulebook. This is something that the terrain system will look at in order to place things correctly. Essentially, it uses rules to base what assets look good with each other and in what way in order to place them in the world. So I have been getting some more assets to help define the theme for the Field biome. Once this rulebook is built up sufficiently, the terrain generation system will throw markup down for each asset in the world according to the rules. Hopefully, at the end of the day I have a nice looking composition to play around with.
I'll keep this updated through the weekend
Update
Have been doing a lot of aesthetic testing. Realization that terrain generation will be heavily impacted by quests and story has led me to more strictly define what those are. After writing a few standard rpg quest types down, I realized they will not keep a player interested for long. This led me to try and identify what it is that makes a good quest. What made FFIX, FFXI, DQVIII, Ni No Kuni so powerful for me? It wasn't just gameplay. It was character, mostly. I was invested into the characters and their world. Their struggle. I think this is the core of what makes a good quest. Narrative. Now, being a procedural game, narrative isn't exactly the easiest thing to accomplish. I can make procedural characters, but actually giving them "character" is much more difficult.
I've realized that the way many games have attempted to solve this is by making their games community-driven. Play the stories thought up by other people! Seems simple enough. Given a modular game like mine, it would be simple to just plug in other peoples zones with their own storylines and characters. The biggest issue with this is either lack of community drive to do so, or the tools just aren't there to fit the rest of the game. I do not believe there has been a game with this type of zelda-esque/fantasy setting that has asked players to place their own creativity into it. If the tools are crafted in such a way as to help the player elicit quality fantasy game cinematics and feeling into their quests, it may spur some good gameplay. We'll see how that goes, as creating a strong narrative tool will have to be very carefully crafted. to allow for people to really customize it as much as they need. I need it to be as good enough to make my own story with.
Anyway, these are just passing thoughts and not a full commitment or anything. There are plenty of other things to work on first to turn this into an actual game. I'll be thinking about it more in the future. I certainly don't need to do all the things for this iteration of the game.
Template Dev
|
|
|
Post by Admin on Nov 20, 2014 1:21:08 GMT
Template Log #8: Terrain, Style, and Goals
The last few weeks have been spent trying to identify player goals and how it ties into world construction. I've got a good list going but more need to be added to make this a fully featured game.
I'm now coming back to world generation and looking at it from a different angle. The original idea was make to make a large area where the player can run into small discoverable gameplay features, some of which are short term and some of which are long term. Throw in towns and dungeons. I still want to do this, but the base was never more than a flat plane with some terracing thrown in. In order to make this a full fledged adventure, I need to spend a bit more time on the aesthetic of the terrain itself.
So, I have been researching good fantasy terrains to help build a ruleset I can follow.
Lets start with inspiration #1: Dragon Quest VIII
Lessons learned:
DQVIII has a style that I am very much after for the field biome. It has some rolling hills and is terraced to a degree. Of particular attention is the layout of the tree-beds. They always seems to wrap around and attempt to encircle large areas. This helps to give the player a nice backdrop. They also spawn in clusters. Another thing to note is there is a few surrounding the road, a focal point for the scene. The designers assume the player will use the road more than other more open areas and so a few trees to flank the sides keeps the foresty feel in there. Now, my game is a top down game, so the distance isn't really an issue... but it does still give a good ruleset for how to layout treebeds.
Inspiration #2: FF IX - musical and cinematic queues
No visual could show why FFIX was a good game. Because it was the music that really sold this game.
Skipping around this guy: www.youtube.com/watch?v=ZhD8iCf5QyY will give you a good idea of why good music and cinematics can sell the shit out of your art, even if it isn't amazing.
Lesson: Great musical choices can sell your environments.
Inspiration #3: Zelda: The Wind Waker
Lessons learned:
Wind Waker had a lot of terracing and slight rolling of the environment similar to DQVIII. Wind Waker could also get away with very sparse trees by piling on the vegetation (especially around edges) and making sure the terrace sides were attention-grabbing.
Inspiration #4: Zelda A Link Between Worlds
Lessons Learned:
This Zelda is much closer to the game I'm making. Although the entire game is "flat", they cheat a bit by taking advantage of the fixed camera angle to make it look like the player is on overhanging cliffs. They at least try to give the player the sense of being on a terraced environment. Zelda also uses dense tree beds to denote the edges of the map. Often the inside of the map will have very few trees. Or only a couple of larger ones. It is important to note that in the view of the camera, there are often either large forest areas, cliffs, or heavy vegetation in view. They rarely have huge areas without some of this. They try to constrain players along paths to some degree.
Inspiration #5: Ni No Kuni
Lessons Learned:
Again, Ni No follows the cardinal rule of fantasy environments.... Slight rolling and terracing of the ground. You may notice that large mountains can often go right through an area to block off the path, or to segment large areas. tree beds are often in small patches and usually near terraced elements or along the inner edge of mountain ranges.
The above are not to be followed like a bible, but the ideas are useful to keep at the back of the mind when designing environments for the current game.
Update
After about an hour of work, I'm currently seeing the following results in my field design.
Compared to the inspired scenes, I think it does a decent job with space, but the scene is over-saturated with the same color a bit. I need to look into adding more color variation to the floor and trees.
I have learned a very good rule to apply by doing these tests: Making three assets in triangle fashion can create these three-way paths that are enjoyable to move through. It gives the world a sense of depth. In fact, "walking" these types of edge assets in a semi-random way may yield a nice pathing system.
Template Dev
|
|
|
Post by Admin on Nov 21, 2014 3:14:30 GMT
Template Log #9: Layout Calculation
I've decided to try and lay out the world using a voronoi diagram as a guide to place points of interest and scenery prefabs. The voronoi diagram will define a spline which the terrain painting system will use to paint (after applying bezier smoothing)... connecting verts of the diagram will be places to put cities. Other points will be places to stick points of interest. I've come to the decision by prototyping how the environment assets look in a voronoi-type layout, and it feels pretty good. Of course, this will be applied to an inner-area of the zone. The outer rim is reserved for edge assets (trees/mountains/etc).
Certain large areas will need larger-scale context decisions made for it, however. If an area is a lake, there should be lake-like environment assets surrounding it. Each zone is separated into these over-arching environment-types. Having enough of these will hopefully give the game enough varied environments to keep a player playing. So basically, the goal is to pick a number of areas, and to divide the voronoi diagram by that number for context assignment. There will be a fixed number of environment contexts per biome (e.g. lake for field, ruins for desert, etc.)
Template Dev
|
|
|
Post by Admin on Nov 22, 2014 21:15:23 GMT
Template Log #10: Weekend Update
Quick update. Spent a bit of time today writing some terrain deformation tools. Specifically, to make lakes, I want to be able to just create some splines and have the system automatically deform and paint the terrain appropriately. I've got that all working, no thanks to Unity's terrible terrain documentation. I'm a bit disappointed in its performance at the moment. Ideally, it would only have to run this the first time the player goes into a new zone, after batching all the lake metadata... but I don't want it to take forever. I may need to precache a strong handful of zones on ship so player experience doesn't suffer.
Anyway, next thing is to implement that voronoi layout system and a method for streaming things in and out.
Update:
Alright, so after spending way too long on it. I got all of my edges under control. Extremely efficient and takes into account neighbors and future neighbors. Now that I have barriers for my scene and a defined inner padding, I can work out the logistics of the voronoi.
The plan for voronoi is to generate a random seed of "site" points. These are the points that voronoi will generate edges around. In order to make sure these points are never too close, I will be generating the sites by first generating a grid. From this grid, we nudge the points randomly within a fixed radius. This ensures we get a random-looking diagram but without making anything too close to each other.
Update 2:
I realized that I have a cool scattering system that can place objects within a certain distance of each other. So I decided to try and see how well the game can run if the whole world was populated with assets... and that led me to start working on some better streaming solutions. After all, how can I test a good world layout if I'm hitting 5 fps? Currently, I've gotten it to run pretty smoothly with a simple trigger-activate system. 10000 prefab instances and no hitches. However, I am getting weird spikes whenever a prefab is activated. This is a fairly large concern so I will probably be spending the rest of today looking into it.
Turns out it was just a bottleneck in the cpu caused by some weapon effects. The streaming was just tipping the scale. Now the game is running rather smoothly... still some small hiccups, but not breaking at this point. The game feels rather good to explore currently, even though there is only one asset being spawned with random rotations. The world is starting to feel populated.
Here is a pic of the whole world with content triggers... My character wouldn't even show up without the gizmo to identify it. Compared to the camera view, this scale is pretty large.
Final Update:
So I've got procedural road splines connecting cities/dungeons/zone exits. It looks a bit funky from a high end, but a player playing at such a low level honestly can barely notice. Template Dev
|
|
|
Post by Admin on Dec 3, 2014 3:27:02 GMT
Template Log #11: No, I'm Not Dead
Just a quick update: I'm still alive. Went home for the holidays and didn't bring any work with me. But now that I'm back, I'm ramping back in to Template!
Tonight I'm spending some time on perspective in order to create a sweet spot where I have the top-down view but still get enough of the world to get a feel for its vastness.
This has proven difficult up until now, with earlier screens showing the character either very far away such that it loses your connection to the character or very close up without much ability to show off the world. The only way to combat this with the close perspective was to cram assets closer to each other... which I need to avoid. So I've decided to bump it out just a bit and give it more of a long-range perspective. throw some fog in the distance to help sell the depth of the plane, it's looking pretty decent.
Here is a screenie of the perspective so far. I expect this will change several times, but I'm quite happy with where it is for now. I will need some kind of foreground shading to add to the atmosphere a bit, but I like the angle. It's almost starting to feel like a real game
But anyway, work is still continuing on this.
Template Dev
|
|
|
Post by Admin on Dec 6, 2014 4:25:45 GMT
Template Log #12
Long week at work. But now I can finally sit down and get some done on this game! I just wrapped up the content spawn system which is working pretty well. There is a sparseness issue around roads currently but I want to leave some room for custom road-specific content, such as posts and the like. Still, there will need to be some spline work there at the end of the day.
Now that I have a defined world that populates with custom content and has some defined landmarkers, I can move on to some other systems. The content system will have to be revisited once I design some specific key content to be placed, such as cities and the like, but for now I'm happy with its current iteration. There is also the markup information that needs to be specified for the world, but this can be down the road a bit.
For now it is time to revisit combat. Specifically reworking how it feel to hit enemies, how they react when hit, and most importantly: the procedural ability system. The ability system is extremely important to the fun of the game, so design work on this is first and foremost. I know it is going to be a composition system based on mutually independent attributes, and these need to be better defined.
I won't give away too much in terms of the specific kinds of abilities, thats for my internal documentation ;] But I'm gonna try and make them over the top.
Template Dev
|
|
|
Post by Admin on Dec 7, 2014 6:12:18 GMT
Template Log #13
Finished a first pass at the procedural ability system. Content lists still have to be made for it among other things, but it is in and working as a first pass.
System-wise, the game is coming along. A large thing to get on is enemy placement, streaming, and capturing. I hope to finish those things tomorrow. After that, I'll need to take a pass at UI as I have very minimal amount of it currently and there will need to be some work done there if I wish to move on to content creation. Finally, saving the world information out has to be done still. After all those are completed, I should be able to move on from the prototype and start iterating on actual content.
Update
I'm now working on the capturing of enemies. Currently, the design calls for the ability to target enemies in a clockwise sweep from the players forward. I wrote all the systems to handle the data representation of these collectibles and I just finished the targeting system. Next is to test the actual capture mechanics of a single mob.
Update 2
Alright, all of the capturing mechanics are working from a back-end... Just need some prototype content to represent it.
Template Dev
|
|
|
Post by Admin on Dec 10, 2014 7:31:04 GMT
Template Log #14
The last two days have been spent designing some mockups for the UI and putting those in game. I've stayed away from heavy programming as I've been busy at work and the last thing I've wanted to do at home is write more code. UI design is a refreshing change as I can just throw my creativity into photoshop and make whatever I want. Plus I'm going to need some heavy UI support if I want to move forward with visualizing all of these systems I've written.
I'll update the art page with some UI concepts some time soon.
Update
I posted some mock ups over in Art. I like the menu quite a bit, though the in-game UI is a bit lacking. Will probably bring the in-game to match the menu a bit more.
Had a 15 hour binge at work today, so I only managed to get the backend for the menu done today. But at least now I can scroll around, which is nice considering my game barely had any UI before this.
But I'm dead tired, so I will continue sailing the game dev seas tomorrow.
Template Dev
|
|
|
Post by Admin on Dec 15, 2014 3:02:45 GMT
Template Log #15
This weekend has been spent setting up a loadout and functionality for equipping weapons/armor to the character. The system is in but there are no hooks in the UI yet. I need to design a UI item listing system so I can list those weapons/armor and let the player decide which to pick. Until that is done, equipping won't be possible for the player.
After finishing the loadout stuff, since I wasn't feeling up for making that item UI quite yet, I moved on to generating enemy species in the world and designing ways to stream them. How it will work is that each streamable content prefab will have markup for spawn transforms. Each area in the world has a list of species, and a spawn chance for each. A content area could be within multiple of these "mob" areas, so each content prefab will hold a list of the species it can spawn and weight them accordingly. When it streams in, it will spawn the enemies and on stream out it will clean them up. Eventually, I will need a bit more control such that you could specify a spawn point to always spawn a specific type of enemy.
So hopefully after I get the above working, we will have a world full of guys to kill. I'm still unsure as to how I want combat to feel. Having them just chill in the world was the original intent, but I'm pushing for fighting large numbers of enemies at once, so I'm leaning towards if you get within a certain distance, they will signal for an ambush of enemies to appear at the edges of the screen and "rush" you. We'll see. Baby steps. Lets get some in the world first.
Update:
Cool, so enemies now spawn throughout the world according to their area. Up next to add species generation and species habitat/area generation to the world building system instead of my test area. So the world will feel a *bit* more organic.
Update 2
Before bed, I had to improve my framerate a bit, so I added another layer to my streaming system to split my world content triggers up so only a small factor of them get loaded. Key note if you do procedural in Unity... I use rigidbodies in the larger triggers to pull the smaller triggers into it. However, if you set a gameobject with colliders as active when the parent has a rigidbody, it will create dynamic colliders for them, which is very expensive. Since I only need the rigidbodies on world load, I could use them to have the triggers identify each other, then delete the rigidbody of the parent trigger. That way when the player comes waltzing in, it will create static colliders which are extremely cheap to make. And with that, I'm back to 60 fps easy . Hurrah
Update 3
Today I decided to take another pass at the camera work. Before it was a 1:1 follow, but I tried out a spring implementation and I quite like it. Everything is much smoother. It's starting to really feel like a game now.
Template Dev
|
|