Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411496 Posts in 69373 Topics- by 58428 Members - Latest Member: shelton786

April 25, 2024, 07:06:50 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsYou Are Dragon
Pages: [1] 2
Print
Author Topic: You Are Dragon  (Read 3187 times)
SageSingularity
Level 0
**


View Profile
« on: February 06, 2018, 08:24:34 AM »



Hello everyone,

Here's the short version:
- Play as a Dragon
- Player owns pre-built castle, and defends it
- Player can go on "Missions" through the portal within the castle (Consists of separate unity scenes)
- Player interacts with the world through their choice of these missions
- Player has their own minions within the castle that defend it and add a little life
- Combat is physics/collision based, where small attacks build up energy to perform larger attacks (such as sweeping firebreaths)

If you prefer email mailing list for future updates, head over to my site at https://sagesingularity.com/2018/02/13/game-project-you-are-dragon/ and click on the "Follow Blog".

Project Parameters:
I've played many RPG's in my time and have grown tired of the classic roles of <insert_random_humanoid> with <insert_class_mechanics>. I decided to start this hobby / part time project to explore other designs.

This project focuses on a single concept; you are a dragon. It is as of now, my first game (after many small hobby projects). Yes, I do realize there are many memes related to this. Maybe future games (ambitious! already talking about the future..) will involve other creatures.  Wink

I'm the only one working on it, but I am also making use of the Asset Store to augment my weak points.

It uses the Unity3D game engine.

My background involves many years of Software development. I've followed many projects through from beginning to completion in my industry, this is my first attempt to do so in gamedev. This log is part of keeping myself accountable.

I plan on learning a lot, and don't mind constructive criticism! Some of the best lessons I've learned in life are from other folks experience. Feel free to throw in what you think, as I am a singular point of view. Smiley

Social Media:
Twitter: https://twitter.com/SageSingularity
Tumblr: https://www.tumblr.com/blog/sagesingularity
Mailing List: https://sagesingularity.com/2018/02/13/game-project-you-are-dragon/

Unity Store Assets in Use:
For those curious, these are the assets I am using. I will try to include information on how I've leveraged these to save a lot of time and effort, but also ways I've found to modify the assets into something new. This also helps me keep track.

Artificial Intelligence-
Opsive's Behavior Designer: https://www.assetstore.unity3d.com/#!/content/15277?aid=1100l34eH
Opsive's Behavior Designer - Movement Pack: https://www.assetstore.unity3d.com/#!/content/16853?aid=1100l34eH

Third Person Controller (Non-Dragon Controls)-
Opsive's Third Person Controller: https://www.assetstore.unity3d.com/#!/content/27438?aid=1100l34eH

Castle Models-
Arctic Castle: https://www.assetstore.unity3d.com/#!/content/32972?aid=1100l34eH

Dragon Model-
Malbers Dragon: https://www.assetstore.unity3d.com/#!/content/84283?aid=1100l34eH

Humanoid Models-
Dark Fantasy - Protagonist Pack: https://www.assetstore.unity3d.com/#!/content/100030?aid=1100l34eH
Strong Knight: https://www.assetstore.unity3d.com/#!/content/83586?aid=1100l34eH

Terrain Generation-
MapMagic Procedural Terrain Generator: https://www.assetstore.unity3d.com/#!/content/56762?aid=1100l34eH

Progress so Far:
I would have to say my biggest fear starting a project like this was the AI. At least, until I started playing around with Behavior Designer. Initially I was hand coding a lot of AI behaviors on my own in my hobby projects (which I will still likely have to do in some cases), but switched over to making use of a combined third person controller / behavior designer integration. My biggest peeve with this asset was it seemed a bit new-user unfriendly, but putting in time and effort to learn it has yielded results (for me at least). I am a very visual learner/developer so being able to plug / unplug visual widgets containing logic helps.


Gif of AI Knights Attacking Dragon:
https://i.imgur.com/SDvTvBn.mp4
Gif of Knight Wandering, while Small Dragon Follows Him:
https://twitter.com/twitter/statuses/959579946581659648

The controller and model for the dragon is a key part of the project as well, and since it came with substance materials it is quite easy to modify/customize it as well as include it in AI behaviors (see above gif of the dragon following the wandering knight).

One way to customize things is with post-processing; here's the change when color correction is added (this is using the script from Unity's standard assets):

I will have to explore shaders, decals, and post-processing as methods of further customizing the look of the game. For example, perhaps decals could be used to add scars to the dragon during customization?

Speaking of character customization, currently I just use presets that I've modified myself and then allow the player to switch through them. My goal however is to change this to a strategy of substance manipulation at runtime, to allow the player much greater customization ingame.

Gif of Character Customization:
https://twitter.com/twitter/statuses/958144593320665088

Dragon flight example:
https://twitter.com/twitter/statuses/959421898319900672

I will keep adding as I go, and will try to do more detailed write ups on specific things if folks are curious. Thanks for reading!

As a reward, here is a gif of a dragon punching a knight midair with its wing: https://twitter.com/SageSingularity/status/957020031803588608

Respectfully,
Sage
« Last Edit: February 13, 2018, 11:47:54 AM by SageSingularity » Logged

whistlerat
Level 1
*



View Profile
« Reply #1 on: February 06, 2018, 08:50:02 AM »

I've seen you on Twitter! It's cool to get some more context on what the game is about outside of amusing dragon, baby dragon and knight gifs Wink

I LOVE all of Malber's animals and am so jealous you get to play with that wonderful dragon. It's interesting to see a game here using the asset store so heavily for the visual side of things (zero judgements here, I've got a game idea myself which would do just that) and it'll be good to see how you make it all 'your own'. Toast Right
Logged

Wilson Saunders
Level 5
*****


Nobody suspects the hamster


View Profile WWW
« Reply #2 on: February 06, 2018, 09:03:18 AM »

I like where you are going with this idea. You probably have an idea of what features you need to implement in what order (ground movement, flight movement, ground to flight movement transition, ect). Could you post them? It is always nice to see how a developer breaks down their game's systems and will give us an idea of how the project is progressing.
Logged

Play my games at http://monkeydev.com/
SageSingularity
Level 0
**


View Profile
« Reply #3 on: February 06, 2018, 09:10:39 AM »

I've seen you on Twitter! It's cool to get some more context on what the game is about outside of amusing dragon, baby dragon and knight gifs Wink

I LOVE all of Malber's animals and am so jealous you get to play with that wonderful dragon. It's interesting to see a game here using the asset store so heavily for the visual side of things (zero judgements here, I've got a game idea myself which would do just that) and it'll be good to see how you make it all 'your own'. Toast Right
Small world on twitter! Malbers creations are <3. And yeah, visuals are my big weak point; however, they also really help to motivate me. I'm hoping to dig into Malber's use of substances and the models bones a bit in the future to really expand on the customization aspect, it seems like there is quite a bit of potential there Smiley

Good luck with your game idea!

I like where you are going with this idea. You probably have an idea of what features you need to implement in what order (ground movement, flight movement, ground to flight movement transition, ect). Could you post them? It is always nice to see how a developer breaks down their game's systems and will give us an idea of how the project is progressing.
Roger that, I'll try to add more detail along these veins in the future. This has also been tricky when dealing with the AI. For example, currently I have the hostiles load the dragons position when they become aware of the dragon dynamically. This gets tricky when dealing with state transitions though as you have to be able to unload the dragon from the AI's focus if it's unreachable and in the air. Smiley
Logged

SageSingularity
Level 0
**


View Profile
« Reply #4 on: February 09, 2018, 09:59:12 AM »

Just as a quick note, I will try my best to post each Friday.

Gif of Fighting Minions
https://i.imgur.com/5BFQDCW.mp4

- Minions can recognize when other minions are enemies, and track them while in field of view. The moment the minion loses sight of the enemy, the target object is unloaded. The goal here is dynamic targeting so that even if the player moves up into the air the minion won't get stuck targeting the player, and closer enemies are prioritized.
- Minions can path to and attack other minions, but slow down and sometimes get stuck on ragdolled minions; TODO: Fix minions getting stuck on ragdolls.
- Dragon no longer gets bounced around when trying to walk over minion ragdolls (the IK was able to see the minions layer and was reacting to it), adjusted the layers. Dragon still kicks ragdolled minions like soccer balls, much to the delight of the hatchling dragons.
- Setup damage so that it is incurred by sending an event from one minion to another, which turned out to not be the brightest idea. This is because the minion receiving the event would delay its own death by the time it took for the logic to reach the "I received a death event and should ragdoll". Considering an interrupt/collision instead.
- Setup a squad spawner object that I can move around using a single game object, in order to make adjusting spawn points and formations easier.
- Setup a scene-level corpse finder and cleaner upper. The castle janitors were complaining that too many ragdolled corpses where being left everywhere. Currently operates on a timer, TODO: Possibly operate it more intelligently to prevent problems caused by mounds of corpses.

Behavior Tree's Abound
My focus for the past week has been behavior tree's and setting up minion AI; more specifically pathing, attacking, and death. I succeeded! But it looks terrible. That being said, I am making progress on making it not look terrible. The issue is I am trying to control the animations in the behavior tree itself, which is making things look quite mechanical. I am thinking I will switch to a new scheme where the behavior tree gets the minion roughly into position, before the character controller takes over for attack and block animations.

Dragon Logic
Today I experimented a little bit with some ideas on controlling the AI dragons. Currently Malbers dragon model supports basic AI that uses navmesh to walk/run toward a target. The target is a public game object that is a variable on a custom Malbers script. This doesn't play nice with Behavior tree's in my opinion, because you have to do boring things like access the Malbers script component and set the variable. Instead, I am thinking I will create an empty game object that is loaded into the script once, which can be "moved" to the target location. This way I can load it into the editor for the Malber script AND have it be controllable by behavior tree relatively easily.

Top Image: AI Dragon is Selected, with target game object shown on the left.
Middle Image: AI_DragonTest_Alpha_Target is the game object the AI dragon uses to determine where to go, but it is also available to the high level logic of the behavior tree.
Bottom Image: Behavior Tree logic that moves the target object to a new position, based on whatever the Target Object is set to.


The behavior tree takes over at this point and performs the high level logic of determining the location the dragon should navigate to. One question you might ask at this point is "But Sage, what if the location the dragon needs to move to is in the Air, such as a situation in which an evil dragon is attacking the player?" Why my good reader, we can move the target game object up into the air along with the player and have a separate tree of logic depending on how far above the ground the game object is. If it's in the air, have the AI dragon lift off and switch over to a flying mode. If it's on the ground, use a weighted sum that determines if it would be more worthwhile to walk/run to the destination or if it makes more sense to take into the Air. An example of this is if the ground destination is 10 feet away, versus halfway across the map and over a few walls.

Once the dragon itself is within a certain range we can switch over to a combat style of AI, or that which is needed.

Goals for Next Week
Unfortunately I have to work this weekend, so progress will be slightly slower, but I am currently planning to revamp the minion AI and see if I cant get the dragon targeting ground enemies and moving about intelligently. Thanks for reading! Smiley
Logged

Wilson Saunders
Level 5
*****


Nobody suspects the hamster


View Profile WWW
« Reply #5 on: February 09, 2018, 10:17:34 AM »

I like how the dragon's head is tracking where the camera is pointed. How did you do that?
Logged

Play my games at http://monkeydev.com/
SageSingularity
Level 0
**


View Profile
« Reply #6 on: February 09, 2018, 10:21:23 AM »

I like how the dragon's head is tracking where the camera is pointed. How did you do that?

This feature comes along with Malbers model, however I've done this personally in the past by using Final IK. You can use inverse kinematics to rig up the neck and head of the dragon to track an empty game object that is attached a certain distance out from the camera. It takes a bit of playing around with the distances and also limiting the rotating so that the model doesn't look awkward.

Here's a video showing what I mean:



Hope that explains it alright Smiley
Logged

Wilson Saunders
Level 5
*****


Nobody suspects the hamster


View Profile WWW
« Reply #7 on: February 09, 2018, 03:27:38 PM »

Thanks a bunch, that was helpful.
Logged

Play my games at http://monkeydev.com/
Modog
Level 0
***


Rogue Knight Mage


View Profile WWW
« Reply #8 on: February 10, 2018, 08:47:39 PM »

You have a pretty good project here!  Noir
Logged

Finding what I can do better
SageSingularity
Level 0
**


View Profile
« Reply #9 on: February 12, 2018, 08:44:44 PM »

You have a pretty good project here!  Noir
Thank you kindly Ninja
Logged

SageSingularity
Level 0
**


View Profile
« Reply #10 on: February 15, 2018, 10:30:30 PM »

[Dev-log #2] 2/16/2018
Hello all!  Gentleman (It's technically Friday now, 12:13 AM  Coffee )

In case it remotely interests you, have a link to where you can find a mailing list thing that will bug you each I post one of these logs. It's below the giant over-sized picture of a dragon that's obviously enticing you to follow this dev-log, on the right hand side:

Mailing List
https://sagesingularity.com/2018/02/13/game-project-you-are-dragon/

This post is themed "Making the Good guys and the Bad guys Smrt", because they are getting there but still a ways to go!  Since last week the following was worked upon:

Short Version
- Dragon AI can now path-find / fighting (Gif below)
- Swordsmen and Enemy Swordsmen AI's have achieved Piranha levels (Gif below)
- Game Concept/Design ideas & Progression Thoughts are Gelling

Long Version
- Dragon AI can now path-find / fight somewhat intelligently while on the ground. It will randomly choose an attack animation between left claw swipe, right claw swipe, and bite when in range. It's head tracks it's current destination, OR its current target (if there is an enemy). Destinations on the map can be given to it and it will more or less find its way there.

Dragon AI Demo Gif
https://twitter.com/SageSingularity/status/962539632037638144

- Swordsmen and Enemy Swordsmen AI's have achieved piranha levels. They swarm, they chew things apart, but they more or less just slap each other and flop about. There are still instances of friend katana fire, I'm looking at you Swordsmen Clone (9).

Swordsmen AI Demo Gif
https://twitter.com/SageSingularity/status/964363441598210048

- I worked out some more concept/design ideas until I came across something that makes sense given my current capabilities (for the game as a whole). Instead of trying to explode tackling a full open world, I instead am considering going the route of independent Unity3D scenes that are each semi-procedural generated (At least the terrain. I'm way too busy to hand craft too much terrain). More on this below.

Overall Game Concept
How should you deliver a modular, easy to add content to, yet procedural game? This was a question I found on my mind often this past week. Making a game completely open world could be possible, but would take a load of work; how do you add content? How many things break when you add that content (Nav-mesh's, AI unit interaction, dragons landing on things and breaking them, etc.)? What if you bork a setting somewhere that breaks the entire Unity3D scene? How hard would it be to test a big place with lots of moving parts?

My (current) answer was, why not break the world out into many modules that are small and independent. Scenes, if you will, that represent content; easily testable, micro settings that represent encounters.

This also brought me back to an Asset I was working on a few months ago that still needs a little bit of work to shine, but is currently functional: My procedural world tile map generator.


Procedural World Tile Map Generator
https://forum.unity.com/threads/2d-tile-based-procedural-map-generator.502583/

The idea behind the current concept is you are a dragon, and you also have access to a portal inside of your "Home Castle". Accessing other worlds could be a matter of generating new world tile maps, having each world tile map have procedural properties (i.e. "Undead Infestation", "Castle", "Potential Dragon Egg") which in turn manipulates a corresponding 3D Unity scene that the player can "Travel To" and explore. The 3D area itself could be either a constant/hand-made area that spawns different situations/encounters or I could do a little bit of procedural manipulation and make use of a Dynamic nav-mesh to change it up a little. The encounter however would be dynamic (i.e., "Player successfully finds dragon egg, but it is guarded by 15x skeletons. The player has 6x Swordsmen that they can bring along for help, and 1x AI dragon. Because a tile bordering this tile contains a castle with an enemy faction, there is a 50% chance that that faction will send a small army to attack the player."). Also, the tile itself would be reflected in the 3D environment; tundra terrain consists of snow, pine tree's, rocks, etc. while plains terrain is flatter and friendlier.

In this manner, new areas could be added in over time as possibilities for the player. I.e., there could be 1 initial Unity3D scene for each terrain type, and once those are completed/tested, you could then expand out the number of scenes that "could be" chosen once a player selects a world tile in the 2D world map. In other words, the player selects a "plains" tile, and a random number generator picks a terrain for the encounter to happen on that fits the theme.

Progression!
Progression in a situation like this could be handled a couple ways:
- Build up a flight of AI dragons, whom occupy your main castle and are able to join you on some of your adventures through the portal. Maybe you can talk to them?
- The "home castle" could be upgraded for the eventuality that someone decides to attack you, as well as upgrades for soldiers etc.
- Your character levels up, gaining scars/armor/glowing lines reflected on the main character.
- Build up a hoard of magical items looted from worlds explored in the 2D world map with special properties that aid you somehow. This is a little more interesting than just "kill x number of skeletons, gain level and select ability".

Just some thoughts, feel free to comment/suggest/inform me of my illogicality as needed. The learning experience continues!

This weekend/next week I think I will focus on building up some basic waypoints/patrols for the AI swordsmen to follow, and get some rudimentary AI dragon flying going on. Also might take a look at the procedural world map generator and polish it a bit to potentially finish and post to Asset store if folks are interested. Smiley
« Last Edit: February 16, 2018, 09:13:37 AM by SageSingularity » Logged

Wilson Saunders
Level 5
*****


Nobody suspects the hamster


View Profile WWW
« Reply #11 on: February 19, 2018, 09:35:40 AM »

Your idea for using portals to load level instances for mission sound like the old Stargate TV series. I was a big fan of the show back in the day and would love to see stargate with dragons. Since your character can fly and you don't have to attempt a smooth transition between different biomes you have the opportunity for really out there level designs. Floating islands, Giant forests(trees 100meters tall), Cave systems, Kitchen of the Gods (a literal domestic kitchen supersized so the player is the size of a salt shaker). Keep being awesome.
Logged

Play my games at http://monkeydev.com/
SageSingularity
Level 0
**


View Profile
« Reply #12 on: February 19, 2018, 04:04:41 PM »

Your idea for using portals to load level instances for mission sound like the old Stargate TV series. I was a big fan of the show back in the day and would love to see stargate with dragons. Since your character can fly and you don't have to attempt a smooth transition between different biomes you have the opportunity for really out there level designs. Floating islands, Giant forests(trees 100meters tall), Cave systems, Kitchen of the Gods (a literal domestic kitchen supersized so the player is the size of a salt shaker). Keep being awesome.

Exactly! I've seen almost every episode of Stargate myself and enjoyed that show alot. I think it is great from a system/design point of view when it comes to delving into the "discovery" aspect of gaming, as well as really helping make content modular and more testable. If someone says they have an error only in a single level, that really narrows down the field of bug possibility compared to open world games where so many systems are running at once. And like you said, really opens up the possible variety of level design. Thanks for the encouragement!
Logged

Jesse Ko
Level 1
*


L7 Dev


View Profile WWW
« Reply #13 on: February 20, 2018, 12:03:05 PM »

An ambitious project, but some promising things so far! Will most of the missions focus on the defense of the castle? Or are missions separate from the castle defense gameplay?
Logged

SageSingularity
Level 0
**


View Profile
« Reply #14 on: February 20, 2018, 03:46:44 PM »

An ambitious project, but some promising things so far! Will most of the missions focus on the defense of the castle? Or are missions separate from the castle defense gameplay?

My current thoughts are that the missions would be separate from the castle defense itself; they would take place in a 3D scene which is "loaded" based on the parameters of the mission, and missions would be randomly generated. So for example, if the mission takes place in a desert then a desert scene is loaded and enemies/minions/player/objects are brought in.

The castle's primary purpose on other hand is to remain constant/display progression and impacts of choices. It's also the "Hub" between missions, allowing for non-combat interactions.

I totally agree, I knew it would be slightly ambitious; it's been quite inspiring though in terms of pushing me to learn more, so maybe I will have a monstrosity that is kinda sorta eventually playable, but will have grown along the way  Tongue
Logged

SageSingularity
Level 0
**


View Profile
« Reply #15 on: February 23, 2018, 07:14:38 AM »

[Dev-log #2] 2/23/2018 Firebreath and Runes
Hey everyone! I posted this weeks log here:
https://sagesingularity.com/2018/02/23/dev-log-3-2-23-2018-runes-and-firebreath/

Highlights include:
- Firebreath!
- Glowing Runic Symbols
Logged

Wilson Saunders
Level 5
*****


Nobody suspects the hamster


View Profile WWW
« Reply #16 on: February 23, 2018, 11:59:50 AM »

Nice update.

I am unfamiliar with how that AI tree works, looks like fun though.

I take a different approach to projectile weapons in my Unity games. I made a script called HitTaker that contains a damage value and some other meta data about the damage (like force vector, faction, or damage type if it is relevant). I attach HitTaker to all colliders in an object I want to take damage. When ever Physics.Raycast, Physics.Spherecast, ect returns a collider I GetComponent<HitTaker>() and increment the HitTaker's damage value (and appropriate meta data). The object controller script (the soldier AI) is responsible for polling its HitTaker and computing the total damage the object has sustained then reacting accordingly.

By using HitTaker as an intermediary between objects that do damage and objects that take damage I don't need to worry about checking the relationship between every damage type and every destructible.
Logged

Play my games at http://monkeydev.com/
SageSingularity
Level 0
**


View Profile
« Reply #17 on: March 02, 2018, 11:34:40 AM »

Hey everyone! Unfortunately the Tigsource "post" page has really started lagging me out (starting with the last devlog), so I started just posting the URL to the devlog on my site.

https://sagesingularity.com/2018/03/02/dev-log-4-3-2-2018-rune-pack-under-review-docs-and-game-concept/
Logged

SageSingularity
Level 0
**


View Profile
« Reply #18 on: March 17, 2018, 08:33:43 AM »

Hello All!

Thanks for your patience; still working on this but was suddenly deluged with new
stuff to do at work. Due to the additional hours I may be delayed for updates. That being said
the next thing I am planning on completing is the world map generator code (that uses procgen
and square tiles to create "worlds"). It's about 70% of the way done.

Oh also Wilson, that sounds like a cool idea; I hadn't thought of that yet. I'm still working
out strategies for addressing ranged attacks, but I think my melee attacks are getting closer
to where I want them.

Also the AI tree is from an asset and contains a lot of pre-canned scripts that can be very
useful. Part of my time has been spent learning how to implement these pre-canned scripts
effectively!

Best wishes,

Sage
Logged

Pixelologist
Level 1
*


View Profile
« Reply #19 on: March 17, 2018, 09:34:25 AM »

Doesn't the title "You Are a Dragon" sound better? Right now it just sounds like a bad English translation to me. Secondly, don't dragons usually live in caves? It seems a bit off that one would live in a castle, but that sounds like it could make for an interesting story for the player to uncover.
Logged
Pages: [1] 2
Print
Jump to:  

Theme orange-lt created by panic