Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[Released] Game Kit Controller: Engine with melee, weapons, vehicles, crafting & more! 3.75

Discussion in 'Assets and Asset Store' started by sr388, Sep 1, 2015.

?

What features/systems do you prefer to arrive sooner for next updates on GKC?

  1. AI behaviors options, able to drive vehicles and fire turret weapons

    25.6%
  2. Armor/cloth system: stats, damage resistances, etc… & character aspect customization (fallout)

    30.0%
  3. Cover System and Climb system based on Breath of the wild and Assassins Creed

    36.2%
  4. Online multiplayer (using mirror as first solution and include others later)

    42.0%
  5. VR integration including 1st/3rd person and locked views

    10.1%
  6. Full body awareness (FBA) to see player’s legs, body and arms in first person

    18.5%
  7. More types of controls, similar to Diablo, MOBA & RTS and similar genres

    10.6%
  8. More tools/creator wizards on the asset workflow (tell about them)

    13.4%
  9. Integrations with other assets (tell about them)

    16.2%
  10. More RPG/Scifi elements/mechanics (tell about them)

    12.3%
Multiple votes are allowed.
  1. JC_LEON

    JC_LEON

    Joined:
    May 20, 2014
    Posts:
    518
    sorry for quote this old post from 2nd of march but i'm reading all thread since i purchased the asset and i saw this fantastic feature (bullet penetration) and about that i would to know if is there an option to make bullet penetrate ceratin material (e.g. wood, glass, ect) and damage enemies of player behind these material and dont penetrate other mateirials (e.g. concrete, stone ect).. is this feature present yet or in on the "to do" list"??


    i installed the asset today but when i load any scene my character wont omve and i have these messages on console

    Controller (XBOX 360 For Windows) Character
    UnityEngine.Debug:Log(Object)
    inputManager:setGamePadList() (at Assets/Game Kit Controller/Scripts/Input/inputManager.cs:1016)
    inputManager:Start() (at Assets/Game Kit Controller/Scripts/Input/inputManager.cs:97)

    No Windows register exists for joystick name "Controller (XBOX 360 For Windows)". Switching to default register!
    UnityEngine.Debug:Log(Object)
    inputManager:logOnce(String) (at Assets/Game Kit Controller/Scripts/Input/inputManager.cs:889)
    inputManager:getKeyString(Int32, String) (at Assets/Game Kit Controller/Scripts/Input/inputManager.cs:814)
    inputManager:getJoystickButtonDown(Int32, String) (at Assets/Game Kit Controller/Scripts/Input/inputManager.cs:692)
    inputManager:getJoystickButton(String, buttonType, Int32) (at Assets/Game Kit Controller/Scripts/Input/inputManager.cs:654)
    inputManager:checkInputButton(String, buttonType) (at Assets/Game Kit Controller/Scripts/Input/inputManager.cs:550)
    playerCamera:Update() (at Assets/Game Kit Controller/Scripts/Camera/Player Camera/playerCamera.cs:226)

    Joystick name "Controller (XBOX 360 For Windows)" not found in default register. Switching to default joystick name!
    UnityEngine.Debug:Log(Object)
    inputManager:logOnce(String) (at Assets/Game Kit Controller/Scripts/Input/inputManager.cs:889)
    inputManager:getKeyString(Int32, String) (at Assets/Game Kit Controller/Scripts/Input/inputManager.cs:827)
    inputManager:getJoystickButtonDown(Int32, String) (at Assets/Game Kit Controller/Scripts/Input/inputManager.cs:692)
    inputManager:getJoystickButton(String, buttonType, Int32) (at Assets/Game Kit Controller/Scripts/Input/inputManager.cs:654)
    inputManager:checkInputButton(String, buttonType) (at Assets/Game Kit Controller/Scripts/Input/inputManager.cs:550)
    playerCamera:Update() (at Assets/Game Kit Controller/Scripts/Camera/Player Camera/playerCamera.cs:226)
     
    Last edited: May 6, 2018
  2. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    The current projectiles pierce throught any type of surface, so there is no restriction, only a number of surfaces the projectile can penetrate before stop. But yes, exactly what you said is planned to add, just a component to specify if a surface can or not be penetrated, to configure it as armored. If a surface hasn't this component added, it means it can be penetrated without problem.

    Along with this, a good idea could be to add a caliber field in the weapon configuration used in these pierce check component configured in surfaces, because a different caliber can break throught surfaces that another caliber can't and viceversa.

    What windows version do you have? Is it windows 10? For some reason (not solved yet), the gamepad doesn't work properly in windows 10, showing this message that input is not recognized.

    If you want, we can use teamviewer to make a quick test, to make sure there is not other reason to this gamepad issue.

    Also, I have planned to add XInput, a library which recognized all kind of gamepads, has more options and configurations and should work without problems.

    Regards.
     
    Mark_01 likes this.
  3. JC_LEON

    JC_LEON

    Joined:
    May 20, 2014
    Posts:
    518
    yes i have win 10 pro 64 bit.. but i dont want and dont needd to use xbox controller..how can i solve?? can i simply disable the gamepad??
     
  4. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    Hi @JC_LEON.

    Sorry for the late reply, I have just woke up some minutes ago.

    Yes, if you have a gamepad connected, just remove it from your pc and the keyboard input will be active again. In a new version of the custom input manager (the current for update 2.4c), the system detects if a gamepad is being used or not, allowing to use at the same time keyboard and gamepad without problem. Also, this new version solves an unity bug which causes unity still thinking that a gamepad stills connected when it has been removed (though this new code version doesn't solve the strange issue of gamepad in windows 10).

    So yeah, just remove the gamepad if you are not using. Also, I can send you the new input code.

    Regards.
     
  5. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    Hi everyone.

    Quick update.

    I have removed almost all the old particle emitters from the asset and replace them with the current particle system. I wanted to do this early, but I have been (and still being) a little ill (just a cold, but very persistent xd).

    I having been thinking and I will upload this update 2.4c before time, to include the particle fix, the new input manager system and all the current systems added into the asset for this version (the hide in free and locked place, locker and closet system, AI improvements, bank inventory, player's weapon state info store, checkpoint, improved save, and many other elements, features and new systems options).

    Some of them are not totally finished, but they are totally functional (except a couple of elements that will be delayed to the next update, 2.4d). You can consider them as a beta update. But of course all of them will be complete in a new update which will come soon after this 2.4c version.

    The update will be finished this week and I want to include on it the corridor demo to show and explain better every feature, and at the same time, this will allow me to make more tests in the meantime.

    Regards.
     
  6. Mark_01

    Mark_01

    Joined:
    Mar 31, 2016
    Posts:
    630
    Take time to get better too. You have been working very hard on this.
     
  7. tgamorris76

    tgamorris76

    Joined:
    Apr 24, 2013
    Posts:
    292
    Get well soon :p
     
    sr388 and danreid70 like this.
  8. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    Thanks, what doesn't kill me, makes me stronger haha.

    Btw, I have been added the functions to save the player's inventory in the save system and it is almost finished and with it, the objects inside the bank inventory will be saved aswell. This save will store the inventory of every player (this is done for multiple players in scene) with an ID to search for every correspondent player's inventory list.

    Also, some improvements have been made to the hide system, for example, if the player has been detected by the enemies, he can't hide until nobody is searching him.

    So just a few more elements to check and update 2.4c will be ready.

    Regards.
     
    Mark_01 and tgamorris76 like this.
  9. JC_LEON

    JC_LEON

    Joined:
    May 20, 2014
    Posts:
    518
    this is a great add...
    great..
     
    sr388 likes this.
  10. joshua_42

    joshua_42

    Joined:
    Jun 23, 2016
    Posts:
    104
    Hey men.
    I can't figure out why the camera's movement is not smoothed when using the mouse (jumps several pixels). In the input script, GetAxis is used for mouse x and y, which adds smoothing, so the problem must be somewhere else.
     
  11. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    Yeah, persistance will be added to all elements needed.

    Until version 2.4b (the current one in the asset store), the camera rotation was applied directly, with the values of the mouse input, like you said, from GetAxis.

    For upcoming update 2.4c, an option to configure a smooth rotation in the camera has been added (working in first and third person), for different smooth values for vertical and horizontal rotation.

    If you want, I can tell the modification needed for this smooth rotation, so you can add it into the code. I want to upload 2.4c update this week.

    Regards.
     
    Mark_01 likes this.
  12. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    Hi everyone.

    Quick progress update.

    The persistance for player's weapons, player's inventory and bank inventory is already working, so all this info is saved/loaded when the player saves the game and of course, the info is relative to every save slot, so every slot contains different info about the game, like any other game (I said this because the first version that I made to save weapons was saved without matter the slot xd, but don't worry, it has been changed for this system).

    Also, there is a debug option to load the info when an scene is loaded without need to open the main menu of the game or the save menu/save station and select the save slot, just configure the slot number and the info is loaded.

    It is very difficult to make gifs for this, so here a video with 3 different save slots storing different game info. In the last part of the video, the game is loaded from the main game menu, instead of using the debug option to load the save slot number metioned above.



    With the system used for this, it will be easy to add all kind of new info to be saved/loaded in new updates (like experience, skills, .....even inventory objects picked in the scene or not to keep them or not in scene when the game is loaded, elements locked/unlocked, elements related to puzzles, etc...).

    Like I said, for now, this system store this info into separated files, using binary formatter, but I think that for a better management of files and info, the best option will be to add json. For those who program, what method do you prefer or think is better, binary format or json?

    Regards.
     
    Wetw0rx and neodotca like this.
  13. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,492
    I wonder how this will play with item persistence toss on the scene across multiple scene or level or open world ... which is a mad problem to have because you don't have a scene structure that cater to all type of scene in games :eek:
     
    Wetw0rx, sr388 and neodotca like this.
  14. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    That is a really interesting element to think about.

    Persistence in games is something relatively new to me (for example, I know how to store differente info, classes and list that will be used into a group of components, but I would like to being able to save literally entire gameobjects with all its component values witht he same state that they had when the game was saved, but I am not sure if this could be done without a lot of time or even possible like that).

    And what you mention is not easy to achieve, being a feature not too much used in videogames (I am sure there are examples, but I can't remember one of them now). So you really need to think if this would be useful/necessary in a project (for example, the game instead of a general save system, it would save also the info of every scene, but what info about the scene do you link to the save? Would you need to save every info of every scene in every saved slot?).

    But again, it is really interesting if it is well implemented. And like always, this thread could be discussed here to find the best way to achieve it, or at least something similar.

    Regards.
     
    neoshaman and Mark_01 like this.
  15. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,492
    Yes it's non trivial, but basically the scene is just another container (or a container of containers, a scene is just a list of data and object after all). That's why I was raising the issue, it's mostly due to the fact you can drop object in the scene with your kit.

    The problem is that, if you toss objects in the scene, save and reload, objects has disappeared, you risk of breaking gameplay. Persistence in scene is basically maintaining a list of all dynamic objects, with their attribute, state, position and transform, and restoring it after loading the static part, possibly only loading saving object that has been dramatically modified.

    How it is handled in game vary a lot:

    1 - skyrim and minecraft save objects per unit of scene (cells), when the cell is unloaded (through streaming) or when saving. They have small unit (50m in skyrim, 32*32 block in minecraft) to allow frequent and painless hitckup. They generally allow object to move from scene unit to scene unit, the object being responsible to subscribe itself from the right unit. Though some game have a cap to how many objects can be in a scene and destroy surplus objects based on their priority.

    2 - some game forbid to toss thing in the scene (they have a discard/delete option), which allow to have fixed data per scene, they generally don't allow dynamic object to cross boundaries of scene, and the scene know all the necessary objects state. Think zelda's dungeon, the key and the chest.

    3 - some game have an event horizon, they save everything that is loaded in the horizon but unload everything outside is lost forever, gta is such a game, if there is an accident, if you save the accident is still there, but move a few feet away, and come back and the scene is reset. Gta does that, zelda botw does this too.

    4 - some game reset the player spawn point, which allow to reset the scene altogether, older zelda does this, they put you at the start of the dungeon and rely on circular level design to allow you to come back to where you were.

    5 - some game force fixed save point location, where it is safe to control what's in the world or not. Majora's mask does this because of the complexity of saving with time traveling (saving at owl statues or by resetting the timeline entirely).

    Objects and data also have different scope for saving, generally you only save important data, and what important vary per game, per objects and per data of the objects. For example:

    - in some game they track which monster (per object state) you killed per scene unit (room, cells, dungeon, or even t horizon, depend on the game) but only store health and position of monster of the current room (per data). SO if you beat some monster in a room, fly away and come back, dead enemy stay dead (per object), but others get their full health back (not per data), mostly happen in game where combat spot are sparse and far enough apart or too numerous (open world). You don't have to save all data, being able to mark which object or data to save, and to specify a type of scene container for them.

    - some game also have "scene scope" authorization, some object are allowed to cross boundaries of scene unit, some aren't and they are destroyed/unloaded/resetted when crossing happen. It also applies to the player.

    - Some object have expiration time, the most visible are dead enemy who have disappearance animation before bing unloaded, this can happen quick (literally after death animation) and are unloaded when out of scene scope immediately, or can happen slowly and has persistence until a timer is out. Some times the timer is simply one or multiple list of obsolete objects, where new objects unload older one (mostly gun shoot decals for example). Object can also have expiration " to their death" in which they are respawned and resetted. Zelda BOTW have the timer based red moon mechanics as a way to reset the world memory, making memory issue a gameplay opportunity, when there is too many changes to the world, it trigger a red moon too.

    - Object have different priority depending on the state of the scene, you don't want the player to save and load to replenish a dispenser of resources, so the active scenes/event radius generally save more aggressively objects state.

    - Object have different priority among themselves too, cosmetic get unloaded pretty fast, boss key might stay permanently where they are, enemy might reset their position but not their status, dropped resources might be on an expiration list.

    So basically :
    A. what is the state of the scene:
    - is it active,
    - is it in the event horizon,
    - is it unloaded

    B. what is the importance of the object:
    - is it cosmetic
    - is it gameplay
    - is it progression critical
    - has it a source that generate them.
    - is it infinitely spawned
    - does it have expiration (what happen on expiration)

    C. what is the importance of the object's data.
    - is it resettable or critical
    - is it important for active scene
    - is it persistent
    - does it have expiration

    This can be implemented in various way, for example, enemy death can simply be a flag, or a stored struct object, when the scene is loaded, the default state is alive, it is compared to the save list and modify every dynamic object to match the save state reference. In this case the object is not what's saved but a proxy holder of the data. Other game use a container for the scene, it is initialize when the game start and the scene is loaded the first time, and only change trigger a save of the container per scene (when state are changed or object subscribed to the scene).

    note:
    For active scene, if we can save in the middle of the battle, you might need to save even the animation frame, whatever to reconstruct the scene with fidelity, and allow seamless continuation of gameplay.
    Note:
    Event horizon is the radius at which object are spawned, below that horizon, games might have different LOD of activity, You might have the distant horizon, where the object are simply spawn, maybe not visible, the visibility horizon where object are seen, and various LOD horizon, with further you are the less update cycle objects received with less complex logic. Object and terrain tend to have different horizon for performance reason. Static would have the furthest visibility, static (background) animated object depend on their importance but generally spawn before dynamic objects that have random state change and AI, or simply heavy (grass), and small cosmetics have the closest, size matter a lot.

    When I was working on scheduling logic for npc and talking about idea for AI above, I realize we can abstract AI in game in basically 3 types of processes:
    1- evaluation
    2- transition
    3- action
    And that they basically correspond to:
    1- data with location in space
    2- animation
    3- variable modification

    Which lead me to cal the concept of "stand", that is basically:
    - spawn points
    - objects
    - locations
    Which can be describe as point in space. Everything we evaluate is basically accessing a stand, a point in space which we read its data, then using some logic to modify the data, which must be seen by the player which mean it's delayed by animation. That's what the logic manipulate, "stand", aka tagged location. If we can express everything as stand, it might help abstract the ai code. Scheduler, behavior tree, decision tree, etc ... all they do is manipulate stands. Even animation is basically actions, it's data that change over time but also spatially. SO maybe there is only two thing, evaluating stand and modifying them.
     
    Last edited: May 11, 2018
    RemDust, TeagansDad, neodotca and 4 others like this.
  16. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    Hi @neoshaman. As always, really good answer with a lot of details. I have a little headache right now, so if you allow me, I will answer to you tomorrow, because I want to make a proper reply for this kind of feedback. See you after some sleep.

    Btw, the puzzle system is in process, here what I have right now:

    puzzle system1.gif

    puzzle system3.gif

    puzzle system4.gif
    It is sensitive enough to play jenga withou problems xd.

    And here the video:



    I will explain more about it tomorrow.

    Regards.
     
    Mark_01, hopeful and neoshaman like this.
  17. JC_LEON

    JC_LEON

    Joined:
    May 20, 2014
    Posts:
    518
    Wow man..great explaination...

    btw i would be very happy if we can have a save system that saves players states variables( health, unger ,thist, ect) position and inventory at the start of a new level/scene and other dynamic objects like, doors opened/closed, puzzles solved, enemeis deads etc in the single level...if could be enough for me..
     
    sr388 likes this.
  18. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,492
    Game kit by itself don't need to handle everything, you can supply with other assets or your own implementation. There just need to be the right interface to do so.
     
    sr388, Wetw0rx and Razmot like this.
  19. HeadClot88

    HeadClot88

    Joined:
    Jul 3, 2012
    Posts:
    736
    But this has a save system. Even says so on the 1st post. :)
     
    sr388 likes this.
  20. JC_LEON

    JC_LEON

    Joined:
    May 20, 2014
    Posts:
    518
    yes i know.. but persistence how neoshaman said would be a great addiction
     
    sr388 likes this.
  21. Razmot

    Razmot

    Joined:
    Apr 27, 2013
    Posts:
    346
    Totally agree !

    Don't' go crazy doing an over engineered framework that tries to cater to all possible use case, that's just not possible !

    The scope of what you can save and how technically you save it depend on the game design, if it's multiplayer or not, the scale of multiplayer, the target platform(s) - for example the WiiU has only 1GB or ram.

    Then technically you can save all your game data in a relational database, or in a giant distributed hashmap server like Redis , or just in local json or binary files.

    To answer the question, use Json because it's way easier to upgrade the data when stuff changes, and stuff will change as GKC is not stable - you add new things everyday ;) , and our GKC based games are even less stable haha !

    Your current design pattern of using little serializable *Info classes like InventoryInfo is perfectly fit, they should contain all the data that needs saving ! Here's what I would do :

    - make those *Info.cs Implement a ISaveable Interface with a ToJson() and FromJson() method (help us to find all the saveable stuff)

    - mark the fields you don't intend to save as [NonSerialized] , for documentation

    - If you can manage to call all the ToJsons & FromJsons from your save manager that would be good for us ( so we can read all the save system code easily, not jump from monobehaviour to monobehaviour)

    - For saving references to other objects, like current target for example, you need an ID system. You can do it the unity way, with a GUID, or the database way with auto-incrementing ints.

    And please, give us customers access to a git repo with your latest version in case you get sick or married or worse, hired by Electronic Arts or something :p
     
    RemDust, sr388, Wetw0rx and 1 other person like this.
  22. Mark_01

    Mark_01

    Joined:
    Mar 31, 2016
    Posts:
    630
    For features i'd humbly ask for melee , bow and arrow, and spell casting to make this kit,
    for all possible use cases, it is so close now to that as is :)
     
    sr388 likes this.
  23. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    Ok, I am back.

    Again @neoshaman amazing reply, very detailed and well explained, also, I appreciate the time spent on it to write it.

    The good part is that there are really different aproximations for the save system and according to the type of game, one is a better option that other. For example the event horizon (btw, love the 90 movie with that title xd) and the system used in skyrim seems like the more "difficult" or maybe complex to make.

    I think the best option now is to combine some of the elements from above for the current save system, to store the most important and necessary info, to make it flexible enough to give the player, gameplay and mechanics a good range of freedom, allowing to set the limit where the developer prefer (inside that range of options). Of course, only the relevant info, stored in list of different classes).

    For now, the info of the rest of elements (player stats, experience, money, unlocked skills, level, etc...) will be stored and then, make the system to store also info about important elements in the scene (objects used or instantiated, enemies killed spawned, inventory elements used in devices and objects, places locked and unlocked, etc....) trying to apply some of he principies you mentioned, which will come handy once these system is started.

    Of course, the objective is to keep everything simple and clean, so for now, only the relevant info will be stored (including what @JC_LEON said ;)), to have the basic-medium structure of the whole save system, good enough to be used in any game.

    But with the time and new updates, this system will be improved and extended, allowing to store much more info, being as quick and low perfomance as possible.

    Of course, once the basic-medium structure is done, some other third party solutions could be integrated, my filosofy is to make it by myself and improve as much as possible. If there are much better solutions or if is almost impossible for me to do it, work on integration with other assets.

    Exactly, for now, I will focus in the main stuff to save and after that, extend its functionality to cover different aproximations for different kind of games, of course without going crazy neither haha.

    Also, thanks for telling me about json, I also think it is a better option and it will even help to store all the info into a single file with all kind of different list of classes without problem to retrieve and overwrite certain info.

    Of course, the save system itself is a couple of scripts, one to save/load and other to manage and configure this info into the scene, I don't like have a bunch of scripts to specific tasks like this (neither concentrate all in just one script).

    Yeah, I have added some ID values to some elements, like for example for save slots, player (used to store different info for every player when the local/split screen arrives, etc...).

    And yes, I still need to check to create a private repo for me and users, where share progress, find bugs, get beta content, let users to show their addons, etc.... With this, I was thinking in create a discord group too, so users can talk more between them too, so they can talk in different threads about anything necessary, like show your project, offtopic, problems in the asset, suggestions, etc...

    About by hired, I think I would only apply for nintendo, some sony first/second party (both of them really difficult haha) or some indie studio. In any other case, I prefer to work for my self, don't need to worry about workers rights...... xd.

    This is planned and will definetively be added. My plan for it is to get the new 3d character for the asset (which is already done) and get new animations for the current system which will improve the player's movements and will allow to have a better control with a remade animator tree.

    Once this is done, new animations for melee combat will be made (I have planned to play dark souls on switch to get the idea of this kind of combat gameplay, though now I have to wait to play it, thanks nintendo for the no sense delay), including also roll, block attacks, different hit/damage animations, swim, climb ladders and surfaces, etc...

    Regards.
     
    Last edited: May 11, 2018
    Mark_01 and Wetw0rx like this.
  24. Wetw0rx

    Wetw0rx

    Joined:
    Jun 30, 2017
    Posts:
    125
    Lmao!!

    Great comments about the whole persistence thing.
    I'm building a game manager container that manages variables like hunger thirst etc. These values are read and applied whenever a scene loads. The manager itself is just a game object with a don't destroy on load and the ability to track ints and whatnot. For an open world game, I'm trying to keep it simple :confused:. The actual serialization can be done a hundred different ways. Json is awesome.
    For me, the hard part will be continuity between scenes. For example, say I'm in a spaceship and this ship is now fully loaded with items from the previous scene or whatever and all the items need to be serialized with their position and status when changing scenes say from a planet to space environment. :eek:
    I bought the Easy save asset during the sale and I'm planning to dive in soon, as this is gonna have to get worked out before I can move on...
    Staying organized and focused is the main thing but building a fallout stlye space game is zapping my brain lol. I've decided to separate interior and exterior into scenes so the manager also has to keep track of where the player came from or at least what door he should appear at in the new scene. Gamebryo kinda does this for you. I think it just saves everything in the scene automatically creating info for every player action. We all know from playing Bethesda games how well that works but the save file sizes are huge and it leads to performance issues.
    I'm almost finished sorting out the little systems and mechanics in my game and I'm starting research for saving, cut scenes and dialog/quests next so any advice in these areas would be greatly appreciated. I've always been the artist/ designer and programming is still not my strong suit. Thanks everyone, great forum.

    Hope u feel better again soon captain!
     
    Last edited: May 11, 2018
    Razmot, sr388 and Mark_01 like this.
  25. Wetw0rx

    Wetw0rx

    Joined:
    Jun 30, 2017
    Posts:
    125
    BTW, dark souls is freaking top ten bro. With a melee system and the stealth stuff, we can build a Tenchu remake! :eek::eek::eek::eek:o_O
     
    sr388 and Mark_01 like this.
  26. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    Yeah, I feel a little better, thank for ask :)

    About your project sounds really interesting.

    I haven't thought the best way to store for the kind of game you are working (yet), like I said, I want to finish the systems which save the more important info first. And then, once this is done, I want to sit down and dessign the best way to do this (especially the management of info for every scene), taking into account the amount of info, its size and the perfomance.

    Of course, I will change the save system to use json, I have already used in a project for unity for the master final project and I really like it more than binary format.

    And as always, any progress/doubt/suggestion/help will be posted here ;)

    Yeah, I can't wait to play it and start to work in the melee combat system and the AI behaviour for it. Also, other mechanics, like the armor management, abilites, skills, etc...

    Btw, I have finished the first type of puzzle system: assemble objects by dragging and dropping pieces, to trigger an event.

    It has a lot of different options but basically, just need to configure where every piece goes, the trigger to detect if the piece is close to its position and if there are pieces that need to be placed before. Then just configure if the piece is placed directly or if needs to have a rotation limit respect the position where it goes of x degress and same for the position, configuring how close needs to be.

    Every piece calls an event to increase the number of pieces placed and once all are in position, the puzzle is solved and calls another event, so like always any action can happens once the puzzle is over. Also, it has options to configure a sound to the solved puzzles and a 3d mesh text as a clue for the puzzle.

    Also, it allows to reset the puzzle again, so the pieces state are reset too and the puzzle needs to be done again.

    It will be improved in new updates, for example, allowing to grab a placed piece again (the only way now is to reset the puzzle), options to use inventory objects on it, etc....

    To make the system, I have used the aircraft as a "lego" set to assemble all the pieces in the correct position and rotation.

    Once all the pieces are placed, the cockpit opens to reveal a key for the inventory. Here the gif:

    puzzle nave8.gif

    puzzle nave9.gif

    The best about this is that the assemble objects system is just one of the different kind of puzzles systems that can be done, other examples could be to press different buttons in an specific order, configure a group of switches in different positions, rotate objects for example for a combination box, combine these and more than I haven't even thought about yet.

    Also, if you have suggestions for different puzzles system, comment them here.

    Regards.
     
    TeagansDad, Wetw0rx, Razmot and 5 others like this.
  27. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,492
    I'm not sure if they are that complex to do, but I have only explain the policy not the implementation, notably I haven't delve into what is a scene, and that's a key part of evaluating if it's hard or not. I have already said that scene are just container, they are list of object and data, basically. They are just a way to organize collection of objects and data, which a save system is too!

    But a scene is also fundamentally just an object, it has:
    - a IDentifier
    - a location
    - data and logic
    Since you have object that has container, you have basically all the foundation to make a scene, or hooks to make scene. And since they are objects, you should be able to put them into a container too!

    The thing is that there may be some obfuscation because in unity we use unity scene, build in the editor and it automate and optimize some part of what data a scene has. We just put object together in the scene and don't think to much about it. When you use the hierarchy, it's basically the inventory right there of the scene.
    However because of habit, I use prefab as scene and unity editor as just an editor to put things together, I instantiate, initialize and destroy custom scene by code.

    So to avoid confusion I will describe scene as UNITYscene for the unity way and GAMEscene as the prefab way.
    In order to organize the "understanding" better, I will categorize type of objects that compose a GAMEscene relative to how game typically works and what's useful save system, we have:
    - Statics, basically objects that don't need to save state, generally scenery, cosmetic or even dynamic like moving platform or simple doors that just open and close with a trigger, even some simple enemy that are not important. to recall these objects you just recall the scene prefab they are stored in, so you need just the ID of the scene.
    - Interactable, they are objects that generally have some important state for gameplay and compose the scene states. They are the flags, trigger, locked door and objects, enemy that don't leave the scope of the scene at all and dead enemy, etc ... there is a subcategory I call dependent, which are important in how we initialize a scene, they are the object that change state depending on another or many interactables, they don't need to be save by themselves, for example doors and light linked to a switch, the switch hold the state, it is the interactable, the light or the door are interactable dependent. Since they are inside the scene, you don't need to store the objects, you just need the scene ID and then initializing the interactable state properly, they are the scene internal data.
    - Free objects, they are basically objects not tied to the scene and can be anywhere on any maps, they aren't tied to the scene descriptions, they are object you toss in the scene or can travel among different scenes. You need to track/subscribe them to the scene they are positioned on. That's when you need to attach an inventory to the game scene to store them in. They can be initialize when a scene is first called or when the game session start, but once they are out of a scene during a session they aren't recalled when the scene is called again by ID. They can saved in the global container too. The container would have a list indexed by scene of free object and when a scene is loaded, it looks for the list to see if there is free objects indexed

    Okay now we have we have category to work on and we know scene are just object and they can have inventory, let see different type of typical scenes handling, and how they impact the the difficulty of saving GAMEscene:
    - Room to room scene. They aren't necessarily rooms, it mean the scene as an object is fully loaded as a unit, and there is generally only one scene at a time, you go through a trigger that initiate (called door, even though they might not be represented as door) the unloading of the scene and loading of the next scene. They can have sub area, that have physical and visual delimitation, which allow to control the active state of the area. Old zelda worked that way, and in fact most old games. Some time there is a big main room, and smaller sub area get loaded and unloaded without unloading the main area (skyrim city and houses).
    - Room streaming. Generally it still has visual blocker between room and work like areas in room to room, which also control the active state, but each room maintains list of links to neighbor (basically just their ID) which are then loaded, the scene where the player is will be the active scene and other scene will be inactive, any scenes linked to only inactive scene will be unloaded. The player move from scene to scene by crossing trigger (doors) without any load time. Some Room streaming don't have door per see, they are seamless, but they have "portal" to control visibility and active state of objects. Other seamless can use a radius, any room that are in the radius become active and spawn non loaded neighbor, this can be checked against a persistent scene manager objects that maintain the list of scenes.
    - Open world grid. They are generally organized into regular fixed spacing, that makes it possible to identify them by hashing position, they work exactly like seamless room streaming, except they don't need to maintain neighbor list, due to the implicit space partition of the hash which load scene around a radius, scenes beyond the visibility radius are inactive. The main scene is decided by hashing the player position, so if a world is 50x50 with 10m cells, the player is at cells playerPosition/10, so let say the player is at position 32,35, the cells position is at 3,3 on the grid and the neighbor cell above is at 3,2. The hash being unique it is used as the ID of the cell in the format XXYY (with as many space given per the range of the size), so the main cell in the previous example would have the 0303 ID and the other cell 0302.
    - Mixed scenes. These different scenes management have pro and cons, and some times they can be mixed, why would do that? Well you can control density of gameplay, data, process and objects happening at the same time, trading them off when necessary. Room to room, allow for the highest density for the least flexibility with space, while open world is more sparse but allow seamless movement and visibility across huge distance, room streaming allow a healthy in between as it need overhead for neighbor room but not more than that. Skyrim have different level of scenes, with houses being smaller but denser in random objects, city allowing to have a huge number of active npc, dungeon having a streaming room to allow for focused action and specific sceneary, and the overworld being sparser, loading happening between all these mode.

    What was the point and implication of explaining the different type of room handling?
    Well the idea is to show that while the management differ, the only relevant part are the ID and the type of objects, the management don't interfere with how a scene saved, since scene are objects they can be treated as such, they can have inventory, state, and be place in inventory too. Add since we already have a system that give object inventory, scene can have inventory too already.

    What matter is how object are linked to scene and provide hooks (component) to them, scene can have management authority on objects, like deciding their LOD (visual or logic), their active status, their states saving, unloading and reset, etc ... which is useful because it gave only one point of entry instead of having all objects managing some state at the same time. Type of GAMEscene objects tells us what kind of hooks are needed:
    1 - Interactables and statics are simply part of GAMEscene, basically that type of scene is just a group of interactables and statics. We can use an object as the hierarchy that check the state of the scene for unloading, update and saving by keeping state of all the subobjects. Dynamic subobjects like enemies are scoped by default by patrol point, action radius, which all would be static part of the scene.
    2 - Free object are a bit more complicated, we need to detect the scene they are traversing and parent them to the inventory of that scene:
    A. for room to room it's generally trivial, they generally don't cross boundary due to how the game is organized, we just register them in the scene they have been spawn on. They are self contained
    B. But some game allow some character to cross room to room, they generally have LOD logic to handle character without loaded scene in a simplified manner, so there is a persistent global scene where objects are simulated in very simple way, it just update the scene ID when the object cross the internal representation boundary. To make thing simpler those objects might not be stored in a scene but in a separated global list that store these object by scene index, when a scene is loaded it look back at the object. The global scene manager manage when these objects are saved and unloaded depending on how it track the state of the scenes. This separation is necessary because the scene cannot be loaded therefore object cannot be on them, they have to be somewhere. It's more likely that object can only go in sub area loaded without unloading the main map (skyrim house).
    C. The problem is simpler with seamless room, object subscribe to scene when they are spawn on them or when they cross trigger.
    D. It pose no problem with open world, they can continually hash their position and subscribe to the room the hash refer to.
    E. Alternative to all cases, while objects still need to detect their scenes, scenes don't have to have an inventory, here we use the same strategy than in B with a separate global container for free objects, which is consulted when loading and unloading.
    3 - Not all scene have data to save.

    Let's address the issue of active state and what they mean.
    Active mean the logic is running, for example enemy chasing you, animation playing etc ... inactive is when the logic is turned off. Object can be responsible to the update or defer (delegate?) to the scene manager, but the scene send the signal of inactive state to save process when the scene is out of view or too distant. Active state might have different degree based on specified LOD level of the scene base on the distance, for example a scene might hide/deactivate some objects until we are close enough, or throttle the number of data needed to be saved in the save system, for example, close LOD level might need to save their precise animation frame to allow continuity of gameplay when loaded, but at a distance they might be less important because the character won't be active toward the player anyway (even though we can still see it doing idling).

    What would be the saving strategy and lifecycle?
    - Well the first thing is that the player typically don't belong to a scene per see, his presence set the main scene and define which scene is active by proxy. Therefore it's data belong to a global manager, the global world state.
    - Player data should be data about the avatar, like position, items, skills, etc ...
    - Some data don't belong to the scene or the player, it's the world state, it collect data relative to the game progression, flags, etc ... it is manage by the global world state.
    - When a scene unload, it first collect its data (if applicable) and create a temporary profile, if the same scene is active again, it use the profile to initialize itself and its objects. This profile is manage by the global world state that maintain all of them in a list.
    - When saving, the world state is saved, then the player, then scene's profiles and finally the loaded scene's states.
    - Some game use autosave as a way to flush the RAM from the temporary profiles toward mass storage (zelda botw), and reuse it when they need the data in returning scene.
    - when loading a scene
    a. load the GAMEscene collection from ID
    b. Initialize the interactable
    c. spawn and initialize the freeobjects
    d. set active state.
    e. spawn the player (if applicable).
    - when unloading the scene
    a. if not inactive, set inactive
    b. collect interactable data
    c. collect free objects
    d. send profile to world state list
    e. destroy scene


    How can we translate that into usable hooks for any game objects?
    1. we need a way to collect important data
    2. we need a way to restore data
    3. we need a hook to assign scene (for free objects)
    4. we need communication between scene and objects (lod level)
    5. we need to find a way to store a snapshot of animation frame and behavior ai for objects, particle and player character
    6. we need to store all the data in a global world state
    7. we need to turn the world state into save file.

    But what about UNITYscenes?
    Unity has internal management of scenes, and allow us to manipulate at runtime its properties. It allows us to access the list of UNITYscenes, their loaded status, their list of objects (at root only), to move an object from one UNITYscene to another, and which UNITYscene is active (where the instantiation happen). But while it has event for when a UNITYscene is loaded, it doesn't seem to have anything for when we unload a UNITYscene to save the data (which can be circumvented by using GAMEscene and have it run code in OnDestroy() ). Unity scene don't have by default container, but that can handled by having an object in the hierarchy holding that function.
    https://docs.unity3d.com/ScriptReference/SceneManagement.Scene.html
    https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.html
    However a big unknown in unity is saving as if the game was paused, we need to access animation frame and blending status, save them, and restore them identically, or else it will create gameplay problem. Unity also manage various system like the navmesh agent, which I'm uncertain how their status can be properly captured. Those element impact the gameplay.

    Conclusion:
    Scenes are not necessarily important, they are just convenient grouping or methodology to organize multiple objects into easier to manage hierarchy for better controlling process, memory, production etc. We can just let every objects control their LOD, obsolescence, etc ... and upload all their data in a global world state, which will be saved to disk. A scene is just basically a collection of objects, when you save active objects and progression you are indeed saving a big global scene. In the Godot game engine every object is a scene for example.
     
  28. motatob

    motatob

    Joined:
    Nov 20, 2012
    Posts:
    11
    Do you Have an email address? I like your asset but I also like to know I can get some email support.
     
    sr388 likes this.
  29. Mark_01

    Mark_01

    Joined:
    Mar 31, 2016
    Posts:
    630
    Last edited: May 12, 2018
    sr388 and Wetw0rx like this.
  30. Wetw0rx

    Wetw0rx

    Joined:
    Jun 30, 2017
    Posts:
    125
    That's really cool man. I can totally use that. I haven't worked on it in a while but I'm still trying to make an upgrade sort of system for the vehicles allowing attachments and enhancements by the player installing parts. I haven't decided how to handle the implementation but this looks interesting.

    Dude, GREAT post. I read it a few times and it really got me thinking. Thank you!
     
    neoshaman, sr388 and Mark_01 like this.
  31. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    This is just amazing stuff, worthy of some video in the GDC channel (no joke). And like @Wetw0rx said, a couple more of readings will help to think more and more about it.

    Yeah, definetively, the use of another "inventory" for the scene itself is very useful and part of the initial idea I had, to save info related to the state of this kind of free objects.

    I like specially the part of saving strategy and lifecycle, very well structured. I will read it a few times more because it is making me think a lot about the save system.

    Kudos for the post @neoshaman and thanks for the time to do it.

    Hi @motatob, thanks for your interest in the asset.

    Of course, in the publisher profile you can find the support email: https://assetstore.unity.com/publishers/14758
    Also, feel free to post any message about doubts/suggestions etc here, by private message or in the support email.

    Thanks for the quicker answer @Mark_01 (I am not a big fan of the new asset store look, structure or way to use it xd. I prefer the old aspect, with way more info, better search options and more). Don't know why they remove the support link from it.

    Mmmm now that you mention the upgrade system for vehicles, it reminds me to the game jalopy, where you make all kind stuff in your old vehicle, maintenance, fixes, change pieces, etc...



    Though due to the number of vehicles, it could be a lot of work make a system like this to all of them, it could be interesting to give a try in a future update, not only for vehicles, but for all kind of systems where use pieces to customize elements or even build objects inside the game, like weapons.

    Regards.
     
  32. joshua_42

    joshua_42

    Joined:
    Jun 23, 2016
    Posts:
    104
    Hey man,

    Yeah, I could do with the code for smooth rotation, thanks.
     
  33. Kevin_Jourdain

    Kevin_Jourdain

    Joined:
    Oct 30, 2017
    Posts:
    4
    Hi ! I just bought the package with the Unity May Sales, but when I import it in Unity 2018.1, I get a bunch of particles error :c When do you think the fix will be released ? :)
     
  34. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    Hi @joshua_42.

    Here the steps:

    In script Player Camera add these variables:


    public bool useSmoothCameraRotation;
    public float smoothCameraRotationSpeedVertical = 5;
    public float smoothCameraRotationSpeedHorizontal = 5;
    Quaternion currentPivotRotation;

    float currentCameraUpRotation;

    To make these variables visible in the custom inspector add this:

    EditorGUILayout.Space ();

    GUILayout.BeginVertical ("Smooth Camera Rotation Settings", "window");
    EditorGUILayout.PropertyField (list.FindProperty ("useSmoothCameraRotation"));
    if (list.FindProperty ("useSmoothCameraRotation").boolValue) {
    EditorGUILayout.PropertyField (list.FindProperty ("smoothCameraRotationSpeedVertical"));
    EditorGUILayout.PropertyField (list.FindProperty ("smoothCameraRotationSpeedHorizontal"));
    }
    GUILayout.EndVertical ();


    In the function OnInspectorGUI, for example after the EndVertical of the Window:

    GUILayout.BeginVertical ("Camera Main Settings", "window");

    Then in FixedUpdate change these couple of lines:

    //apply the rotation to the X axis of the pivot
    pivotCameraTransform.localRotation = Quaternion.Euler (lookAngle.y, 0, 0);
    //apply the rotation to the Y axis of the camera
    transform.Rotate (0, lookAngle.x, 0);

    For this:

    if (useSmoothCameraRotation) {
    currentPivotRotation = Quaternion.Euler (lookAngle.y, 0, 0);

    pivotCameraTransform.localRotation = Quaternion.Slerp (pivotCameraTransform.localRotation, currentPivotRotation, Time.deltaTime * smoothCameraRotationSpeedVertical);

    currentCameraUpRotation = Mathf.Lerp (currentCameraUpRotation, lookAngle.x, smoothCameraRotationSpeedHorizontal);

    transform.Rotate (0, currentCameraUpRotation, 0);
    } else {
    //apply the rotation to the X axis of the pivot
    pivotCameraTransform.localRotation = Quaternion.Euler (lookAngle.y, 0, 0);
    //apply the rotation to the Y axis of the camera
    transform.Rotate (0, lookAngle.x, 0);
    }

    Finally configure the smooth rotation and the values for vertical and horizontal. Tell me if this works or not.

    Hi @Kevin_Jourdain.

    Thanks for your purchase and interest in the asset. Yeah, it was due to use some elements with the old particle system of unity deprecated in unity 2018. They have been removed for the upcoming update 2.4c.

    I wanted to have it ready this update this weekend but due to a nuisance cold and some minor family matters (nothing bad or important), I haven't been able to have it ready yet.

    But it will be finished in the next days, just some minor elements to check and finish and the update will be ready.

    In the mean time, you can try the asset in unity 2017.1 for example (you can install different version of unity in the same pc just by configuring a different path installation).

    Sorry for these issues. As soon as the update is ready, I will tell it here.

    Regards.
     
  35. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    Hi everyone.

    Quick progress update.

    I have almost finished the version 2.4c, just some test to make, update some prefabs and little elements here and there (just a couple of days more to upload it to the asset store).

    Here the full changelog for this update:

    • Improved menu management
    • Added save game window for main menu, so the game can be saved in any moment
    • Added saving game icon option when the player reaches a checkpoint
    • The save system store player’s rotation and camera rotation separately
    • Heal and damage triggers improved and added option to add or remove value at once (for example, to make death triggers for any object)
    • Improved and simplified main menu game
    • Added spring rotation option for locked camera system
    • Added option for the save system to store or not a camera capture when the game is saved
    • Added checkpoint system working with save system, with an easy checkpoint creator and manager to place them easily in the scene. If the player reaches a checkpoint, an extra save slot is added to the save game menu. This slot cannot been used to save in the save menu or being deleted, is just overwritten for checkpoints and it can only loaded
    • Fixed issue on computer devices (not real PC, the computer devices inside the asset with keyboard) where number keys didn’t nothing when they were pressed due to they weren’t added to the allowed key list in the Computer Device inspector
    • Added option in foot step manager to configure a lower step volume when the character is crouching
    • Added vertical and horizontal map camera movement for 3d and 2.5d views
    • Added option to set the player’s collider height when crouch
    • Grab mode addapted to 2.5d mode (needs to set the option Grab in fixed position to false
    • Improved gravity system rotation when a new surface is found, now is much more smoother and the rotation is around the gravity center of the player, instead of the player’s feet
    • Character drop their current weapon if they are damage in a specific part configured in the health system, for example the arms
    • Characters search the closest weapon in the level if they have not weapons
    • Characters already pick the rest of pickups in the level when they are close to them
    • Fixed issue with combat AI moving towards its target
    • Press the horn in vehicles, will make to already found friendly AI to go to the vehicle, with an option to call to not found friends inside a radius in the vehicle position
    • Added closet and drawer system with different doors to open and close and an option to the use devices system to select which elements will activate the interaction button by looking at them
    • The objects placed inside these closets will be manage by them, showing or hiding the interaction buttons of these objects
    • Added option in powers to keep power gravity when the run power to walk on surfaces is enabled or to set the gravity back to the original direction before start to run
    • Added the DPad input to the new gamepad system working with the custom input manager and added again the quick change between keyboard and a new connected gamepad or set the control back again to keyboard when the gamepad is removed, both automatically
    • Added debug and state to the custom input manager to know more about its current state and configuration
    • Added new option to trigger event in the event trigger system for enter and exit, configuring every list of event separately
    • Added controls for map menu window to use the input actions to manage that menu (the rest of menus will have the same type of controls, to being able to be managed by a gamepad)
    • Fixed issue with inventory where the player can pick an object which is not yet in the inventory when there is not free slots available
    • Added inventory bank to manage inventory objects outside the player’s inventory (like resident evil games)
    • It allows to move objects from the bank to the player's inventory by drag and drop every object icon from one list to another
    • There is different modes to manage this. The main part is drag and drop the icon in the top or the botton of both elements list (there is a reason to work like this). There is also an option to move all the units of an object slot at once or configure the amount to move
    • Also, the bank take into account all the limits of the player's inventory, like amount of slots and units per slot
    • When an icon is dropped on top of other icon (the reason that I was talking), so in this case, the objects in the bank and the player's inventory exchange places (also configuring the amount to move from one to another)
    • The inventory bank is similar to player's inventory, allowing to configure an initial list of objects if it is needed from the list of inventory objects configured in the main inventory manager
    • Addded option to drag and drop icons or not to the inventory bank. If the option is disabled, the objects are moved to the other inventory list when they are pressed (at once or by selecting the amount)
    • Fixed issue with rotating doors when they were unlocked using inventory objects and the door didn’t have the variable currentPlayerTransform correctly assigned
    • Fixed issue with inventory when the player uses of them, sometimes, when the player pickup a new inventory object, some inventory message was shown
    • Projectiles with the option to kill from one shoot now sends the projectile owner, so when a character dies like that, its faction system detects who attacked him and check if the factions are now enemies or not (before, this faction check was only done when the character receivers damage, not killed at once)
    • Laser particles smoke and sparks fixed (the texture was missing)
    • Added option for jump platforms to impulse object making a trayectory, setting the target position using an empty transform
    • Added flashlight using the weapon behavior system and the option in IK used for weapons to just use one hand to carry a weapon/tool
    • Fixed bug when the player draw his weapon in first person the first time and then, change the camera to third person, the info about the current weapon wasn’t stored properly
    • Added options to use unity events at the start and stop of aim in any view
    • Added option to set a higher intensity to flashlight then the player aims with it
    • Added noise camera movement when player shoots his weapon in any view. This noise uses a range of amount when a weapon is fired, so along with the configurable shake camera (which only moves/rotates camera), the noise allows to lost the current sight from your target (like weapons from most games), configuring a random range vertical and horizontal
    • Removed a little restriction to change between weapons where the player couldn't change them if he was aiming in third or first person, now he can
    • Added option to change to next weapon with ammo if the current one is empty (no bullets in the clip, neither remaining ammo)
    • Added option to every weapon if the HUD with the info of the weapon is activated or not
    • Added option to configure a smooth camera rotation, configuring the vertical and horizontal speed
    • Added examine object system to inventory pickups, so now, they can be examined before be grabbed or the player can stop to examine them and drop them
    • Added an initial version for a multi axes list to configure different group of actions which are used for every mode in the player according to the current action he is doing, like an axes list only for the weapons, another for movement, powers, menus, examine object, use devices, drive, etc…. Every axes list has the option to configure an action screen showing the current actions that the player can do in that moment and the keys input assigned to every action
    • Added lockers and closets which only open with the interaction button, without need to look at the handers
    • Improved aim assist to detect the current target to look
    • Added camera control type to vehicles when the player is in a locked camera state
    • Added option to allow the player to move or not while aiming in locked camera
    • Added new tool/weapon: a smartphone with an activate camera. This tool has an option to allow the player to take captures of the current camera in the smartphone and manage these captures in the capture gallery, in the menu. Also, the camera can use a zoom with the secondary action system, using the center button of the mouse. The camera has also an option to use a flash
    • This camera can also show elements hidden at sight in the level by just adding another layer to the Culling mask of the smartphone camera. Of course, the screen and the camera of the smartphone are disable if the player is not using them
    • Capture gallery manager to see, expand and delete captures made by the smartphone tool and with another system to make captures in game with options to move the camera freely, disable objects of the scene (like player, npcs, etc…), make zoom, rotate camera, etc…. This gallery manager allows to configure the path where the photo files are stored
    • New options added for weapons to call to unity events when the player draw and keep the weapon
    • Addep option for weapons to disable their mesh when they are kept (for example, if player is using a smartphone, he will keep it in his pocket, instead of carrying in some part of his body like a weapon)
    • Added capslock to the computer device to write passwords distinguishing with lower and upper case
    • Added the system to check if a photo has been made looking at a specific object, position and direction (like in shattered momeries), to reveal hidden elements. It has been really easy and quick to add
    • This system allows to configure the objects that will be enabled and disabled when the capture is made and the unity events that are triggered. Also, it can be configured the max angle to check if the player is looking correctly at the position configured and if there are objects that need to be visible in screen too. Finally, there is a bip sound to show to the player how close to the position for the capture he is currently
    • Added unity event for scanable objects to configure what happen when an object is scanned, for example, to make an enemy to wake up if you scan it, or to open a door
    • Added option to allow to drop or not a weapon. This option is also checked by the pocket system if the player is going to pick a weapon from a pocket already occupied, so in this case, the new weapon is not picked and it can shows a message to tell the player he can’t get that weapon
    • Added option to save/load current player's weapons between games. In the file is saved the state of every weapon: name, index, if it is enabled (in this case, the player can use it), remaining ammo and if it is the current weapon that player was using before. Similar to the input manager, you can select if the weapons at the beginning are the one configured in the inspector or in the list and also, if the weapons file info is save and/or loaded. Also, it allows to save the current weapons list configured in the inspector in editor mode
    • Added option for simple switch to use a turn on and a turn off event to call different functions on both actions. Like this, they can be used for example as a wall switch to turn on/off a light from a room
    • Added rack to be opened and closed (similar to deus ex human revolution), using the waypoint platform system
    • Added elements that will trigger an event when they are fired with projectiles, for example, to open a door by shooting to an object, activate a gate by shooting to a device, etc…
    • Added trigger system to hide any character (player, npcs or AI) in the grass (or any place necessary) from enemies. The AI is able to know where you are but they can't attack due to player is hidden. It allows to configure if the character needs to crouch or not, if the character can’t move to avoid being detected and if the hidden state is temporal and he will be visible again to AI in x seconds
    • This hide system can be combined with probuilder for example to create mesh collider with any shape, so the hide trigger can has any size and shape to fit the place where a character can hide freely
    • In hidden state, if the character attacks to an enemy, the character will be visible until none member from that AI faction has that character stored as a detected target, which is removed when all faction member that have seen him die
    • Also, it has a character state icons in screen and in real world according to camera view, showing the current state of the character (for now, hidden, visible, surprised and wondering, these last two used in the AI), to show the state of the character in every moment, with option to use sounds, like hummm or alert clips
    • Improved faction system, now it manages the current detected enemies of every faction to allow to check a faction target better, so they can attack that target in group, or give the alert in that target to the close faction members. Also, the faction system now removes the dead members of a faction
    • Improved AI with a horizontal range vision angle to detect targets in front of it and make sure that an enemy inside its trigger range is also seen by that AI, with advanced gizmo. This range vision is also used when the AI is checking a threat outside of its trigger radius
    • Added min distance to attack for AI to targets inside the trigger but not seen yet, so if the player moves behind them not discovered yet but he gets to close, the AI will notice him and will attack
    • Added alert option for AI to call other members of the faction when a target to attack is detected or this target attack to one member of that faction. The members called are inside a radius respect the AI who found the target, so this can be used in a similar way to wolfesntein with the enemies that call reinforcements or just to make the AI able to attack in group. Kill a member of a faction without being detected avoids that member to alert to the rest
    • Improved nav mesh for AI, having a rate value to check if the target position has changed or not, to decrease the resources used in the navigation
    • Added hide in fixed places system for tables, lockers, below vehicles, boxes, trash can, under beds….any place you need, where the player hides in a place where he can’t move, making it invisible to AI. In this state, there are options to configure if the player can move and rotate the camera inside a range, with option to use a spring movement to reset rotation and position. This option can be enabled and disable ingame with the right button of the mouse and more actions in this state can be added. Also, it has two events configurable when the player hides and makes visible again
    • The hide in fixed places checks if the player has been detected by an enemy, so if this is try, the player can’t hide until not enemy is searching him
    • Added option to play sound effect when player draws or keeps a weapon
    • Added options in electronic devices (component that manages most of interactuable devices in the asset) to call an unity event on trigger enter, exit and stay, this last one using a time rate option. Also, added option to configure another event if device can’t e used in that moment
    • Improved selection of amount in inventory menu for objects to drop and use, allowing to hold the button and the number will change using a time rate, and a new button to select the total amount of units in the slot selected
    • Added a system which allows to drag and drop objects in a fixed camera place, to make different kind of puzzles
    • Added first type of puzzle system: assemble objects by dragging and dropping pieces, to trigger an event. It has a lot of different options but basically, just need to configure where every piece goes, the trigger to detect if the piece is close to its position and if there are pieces that need to be placed before. Then just configure if the piece is placed directly or if needs to have a rotation limit respect the position where it goes of x degress and same for the position, configuring how close needs to be. Every piece calls an event to increase the number of pieces placed and once all are in position, the puzzle is solved and calls another event, so like always any action can happens once the puzzle is over. Also, it has options to configure a sound to the solved puzzles and a 3d mesh text as a clue for the puzzle. Also, it allows to reset the puzzle again, so the pieces state are reset too and the puzzle needs to be done again. It will be improved in new updates, for example, allowing to grab a placed piece again (the only way now is to reset the puzzle), options to use inventory objects on it, etc....
    • Addded option in examine object system to allow to rotate one object vertically and/or horizontally, both or none of them
    • Added more custom inspector to different components, like move device to camera, closet system and more
    • Improved submenu system for the pause menu system to include events options when the a submenu is closed
    • Added option to draw weapon automatically when the player mode is changed to weapon mode. If this player mode is changed to another mode and the player is using a weapon, this will be kept too
    • Removed restriction to drop a weapon when the player is aiming, in first or third person
    • Starting to add options to allow to manage player’s actions velocity with regular speed for camera rotation and player’s movement. For now, the camera has an option to rotate with the same speed on regular/bullet time
    • Fixed bug on explosive projectiles when these were fired and they didn’t hit any surface, where the explosion was called infinitely
    *Related to 2.5d, it is included in the update and in changelog, but it is not totally finished, there are elements yet to add, but it can be tried and works without console errors or problem.

    In another matter, finally the new 3d model for the asset character is finished and ready to be included in the asset, though this will wait to the update 2.4d which will contain it allong with the new animations that will start soon now that the model is ready to be used.

    Here how it looks (it reminds me a little to fallout suit combined with dead space kind of armor xd):

    scifi_textured.png

    Another good thing is that the armor is divided into legs, torso, arms and head (separated meshes), so with this, the armor/cloth system editable ingame can be already added (I have already planned how to do it) and won't take too much. This system will include all kind of options, like protection amount, power ups and skill for every armor part, durability, etc.... (feel free to suggest elements for this armor system) and along with the health system, it will allow to specify which body part is protected by which armor part. This combined with the accurated damage detection system will be very useful (and cool to use xd).

    Finally, I have been thinking about the dark souls combat system that will be added and with it, a pet AI system will be created. This will be a partner for the player, so he will be able to give orders to his pet and this will help the player in any kind of action, attacking enemies, searching and giving objects to the player, activates devices and elements in the level (some kind of bioshock infinite Elisabeth AI will be very cool to get).

    Of course, these actions will be usable in humanoid AI as well, and these pets will be used by enemies too. I have also thought about give the ability to the player to transform to wolf (and in a future, more animals) and vice versa, and being able to move freely with it, with all its actions avaliable.

    This animal companion system is planned, though before start it, I want to have ready the new animations and animator for the player and have part of the melee combat ready (also, take into account that the arrival of this pet model and its animations will depend of how fast I can get a proper budget for it, after the invesment for the above model and his animations, hope it goes well).

    Regards.
     
  36. motatob

    motatob

    Joined:
    Nov 20, 2012
    Posts:
    11

    Hi, You have a very nice asset especially the mercenaries that fallow you.
    I was wondering if you have a dialog set up so you can interact with them? so you could ask them to fallow you (Like hiring a mercenary) I'm out for a new asset that will have that type of system and hopping you could add that to your asset if you haven't already, Please let me know, Thanks
     
    sr388 and Wetw0rx like this.
  37. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,492
    sr388 and Wetw0rx like this.
  38. Wetw0rx

    Wetw0rx

    Joined:
    Jun 30, 2017
    Posts:
    125
    My god, man! What kind of cold was that? It sharpened your superpowers it looks like, lol.

    I'm having a blast with GKC lately but I feel like I hit a bit of a plateau. I've got a massive prototype with multiple scenes and many systems working but I really want to set up a town with some shops, quests, etc. You're working super fast so I'm not trying to rush you by any means but any idea on a time frame for quests/dialog? I know a lot of the systems being implemented are leading to it. I'm sure there are a million assets that can do it but I grew up in GKC and after picking apart a ton of Unity assets I appreciate your methods more and more (or just got so used to your way of doing things).

    The new character model is lit! Along with an incoming armor system and new animations. It's Christmas every month around here.
     
    Last edited: May 18, 2018
    sr388 likes this.
  39. Mighty183

    Mighty183

    Joined:
    Oct 19, 2016
    Posts:
    4
    Wow. Fantastic job. I don't think I've ever seen a change log anywhere near as big or diverse as that. Can't wait to start using the 2.5d segments.
    I had a play around with your vehicles recently too, and they're honestly much more responsive and have higher quality physics than most full racing game kits on the asset store.
    If I were you I would make a racing demo using some official stock unity assets and advertise gkc as a full racing kit alternative to boost sales
     
    sr388 likes this.
  40. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,676
    @sr388 - I assume when you wrote about version 2.5d, you meant 2.4d. If so, you might want to go back edit that to reduce confusion.

    Aside from that, the new character looks awesome, and I'm looking forward to these updates. :)

    ----------------

    *Related to 2.5d, it is included in the update and in changelog, but it is not totally finished, there are elements yet to add, but it can be tried and works without console errors or problem.​
     
    sr388 likes this.
  41. Razmot

    Razmot

    Joined:
    Apr 27, 2013
    Posts:
    346
    Wetw0rx, sr388, Mark_01 and 1 other person like this.
  42. Razmot

    Razmot

    Joined:
    Apr 27, 2013
    Posts:
    346
    Wetw0rx and sr388 like this.
  43. neodotca

    neodotca

    Joined:
    Feb 20, 2016
    Posts:
    121
    Very nice character model, winter is coming... Jon Snow is in the house.
    Good quality, my favorite part is the helmet.

    For future update, i would add a few more pieces of armor on the boots and the belly. Cant wait to see him in action with new animations.

    Because of a major bug related to the Unity editor, i will have to upgrade Unity soon. Just want to make sure the next update (GKC 2.4c) will work with (Unity.2018.1), thanks!
     
    Wetw0rx and sr388 like this.
  44. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    Thanks @motatob for your interest in the asset.

    The dialog system is not done yet, due to I was searching to make a node editor for this system (and eventually, extend it to use it in more elements of the assets, like missions, AI, etc...).

    Of course, once the dialog system is added, it will allow to hire NPCs or ask them to come with you and all kind of different interactions with them.

    Yeah, I already saw the video of Bioshock Infinite (though I want to see it again, to take notes) and along with it, I will check the rest of videos you have posted (love GDC channel, I have a ton of its videos pending to see). Appreciate you have gathered these videos men.

    I told you, what doesn't kill me, makes me stronger. Haha, thanks for the comment, really great support.

    For the quest/dialog system I would like to know more about node editor, due to I haven't found a good example project (the currently found are a little complicated or doesn't allow to make a proper dialog system without heavy modification) to learn more about it. If I can achieve a simple node editor, it will open a whole world of possibilities for the asset, allowing to use it for a lot of different systems and features with a really easy workflow.

    But definetively, these two systems will be made this year, with or without the node editor (I can always use a temporal system to manage them and then, add the node editor to be used with it).

    Thanks @Mighty183.

    Sometimes I feel bad for getting so much text in the changelogs haha, but sometimes is hard to explain new features without it, and even like this, I would like to tell more about every feature (thank god for gifs to show this better).

    About vehicles, yeah, though I think there is some room in them to improve their responsiveness and also, add new type (I would have like to add the helicopter for 2.4c, but it is not ready yet).

    The race system is planned to do and even the AI for vehicle is already in process along with the track system to define the shape of the track using waypoints (I want to make a mario kart style with power ups and some crazy tracks, and even add gravity segments).

    Also, the 2.5d will be powered for update 2.4d, making sure all the features from regular 3d can be 100% used in this mode too (most of them have been applied already). Also, also, I have been replaying little nightmares in switch (love this game, and can't wait to play inside too in this console) to get more ideas for a semi free 2.5d movement option too, and add similar mechanics, like grab objects with player hands and launch them, push big objects, etc...

    Hahaha, good one, I didn't think about it. I will point that I am talking about movement system, not version name itself.

    Really happy with the model so far, I definetively will ask any model that I need for the artist who made it (like the future wolf for the AI pet system).

    Thanks for telling me about it, it will be useful and a good start point to start to add scriptable objects to the asset.

    Yeah, it is the main objective, to be easy extended without need to code, just by configuring new stats and what they affect.

    .....Do you know that now, I need to add that stat to the armor, right? It is really brilliant hahaha.

    Oh yes. You are right, the armor system will allow to configure all kind of parts, not just limited to both arms, legs, torso and helmet, but gloves, separated limbs one by one, boots, etc....to allow a bigger customization for the character.

    For the current model, in a future more armors and pieces could come, even if the current model has the regular pieces amount, the system will be prepared to manage any amount of parts and configure them.

    About the udpate and unity 2018, yes, I have already test this udpate on it, and it seems to work without errors (and of course, the legacy particles has been removed). For update 2.4c, I will upload the asset in both unity 2017 and 2018.

    Like I said, update 2.4c release will be made sooner that I expected (between the reasons, to replace the legacy particles for unity 2018 and to fix some minor issues), so you can consider this update as a semi gold version (instead of a beta), due to a couple of systems haven't been as much tested as I would like or some options which hasn't been added yet or a couple of systems which are not 100% finished (mostly, 2.5d and the crash/platformer scene). But all the new content is totally functional and none of the systems has any kind of errors or problems so far (and of course, if there is any of them present, they would be fixed in a matter of days).

    So don't worry, this update has a lot of new content, improvements and it is pretty solid.

    Finally, for an ultimate date for this new version, it will be ready this weekend.

    Again, thanks for everyone for your comments and support, they mean a lot for me.
    Regards.
     
  45. Mark_01

    Mark_01

    Joined:
    Mar 31, 2016
    Posts:
    630
    I am not sure if you might want to use this as a basis once you start doing a node editor,
    but one has been developed for unity, it is free open source https://github.com/Seneral/Node_Editor_Framework By Seneral He has been in Unity for a long time, I would
    think he would not mind you using this as a jump pad, for quests/conversations and more options could use this kind of system too. hopefully this could help reduce your work load some.


    I am glad to see you had wrote about Melee in an above post. To be sure more options like,
    the addition of melee, bows/arrows and magic casting, will set GKC on top. Magic casting
    would be the same kind of bar as heath .. To me then GDC will have everything.

    This base you have been working on for a long time .. looks to be coming together very fast.
    Its great!!! :):):)
     
    Last edited: May 18, 2018
    sr388 likes this.
  46. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,492
    Thanks, you are doing a great job, and one thing I learned going independent, is that gathering documentation can be a lot of work, so if I can help by cutting that down, to allow you focus on what really matter, I'm then glad it's helping :)
     
    Mark_01, Wetw0rx and sr388 like this.
  47. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    Yeah, I saw that node editor project some time ago (it was mentioned of this forum too). It is amazing and even has a dialog system sub project and I would like to talk with his developer.

    The only bad part about it, is that the project seems to have been developed from the beginning without take into account to set multiple outputs into the same input (for example to make conversations with different answers, decisions and results), so it would need an important modification of its core to make this work properly. At least, I haven't been able to find a way to make this multiple connection, which would limit a lot the dialog system itself.

    For the rest, the project is pretty good, with a lot of options, easy integration with the hud, save and load in xml. I will try to talk with the other people who make the dialog system (which are other person besides the main developer), due to its scene example has multiple connection, but these can be reconfigured again, which is weird (again, maybe I have something wrong in this example project).

    About the combat system, I can't wait to work on it and try a lot of things :)

    Yeah, in development, you focus so much on it, that sometimes you forget to search for more info, elements or usual solutions for a problem, making your own way for it haha. Thanks again for the help, I can't stress it enough how much I appreciate it.

    Regards.
     
    Mark_01 and neoshaman like this.
  48. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,492
    Speaking of melee system, here is a break down of mechanics:

    edit:
    http://www.gamasutra.com/blogs/Matt...ding_Asymmetrical_Balance_with_Frame_Data.php
    http://gamasutra.com/blogs/EduardoG...nderstanding_the_Street_Fighter_Tier_List.php

    https://breadcrumbsinteractive.com/about-combat-system-design/
    Mike Stout (Ratchet and Clank, Skylanders) has a great talk available for free online at the GDC Vault called “Reaching into the Toy-Chest“. Additionally, he wrote a series of articles on game and combat design focusing on a methodology he calls Trinity ( Part 1 through Part 9). These together were a huge help in getting me to think better about the player’s toolbox and how to design enemies. The combat design is framed as the game asking questions to the player (enemy behaviors), giving him the tools to answer them (player’s attacks) and changing the questions slightly in each instance of the combat (level design, enemy combinations), while keeping everything neatly organized in archetypes, dimensions and choices fields.

    Sébastien Lambottin (Assassin’s Creed, Spiderman, Alone in the Dark) covers The Fundamental Pillars of a Combat System in his article on Gamasutra. The same approach of designing in terms of complementary tools and enemies that support those tools is seen here, plus he goes into more details on risk vs reward of using each player ability and designing complex enemies. On his blog he goes into more details on some topics like interesting enemies, groups of enemies and a few prototypes related to combat design. Update: looks like Sebastien’s blog ( http://immersivegameplay.net ) is no longer online. I’ll leave the links in the text in case you want to read them via the Wayback Machine.

    Enemy Design
    Level and Encounter Design
    Misc articles that don’t quite fit the other categories

    edit2
    it's a shooter but they are explaining how they took inspiration in melee combat design
     
    Last edited: May 19, 2018
    sr388 likes this.
  49. Wetw0rx

    Wetw0rx

    Joined:
    Jun 30, 2017
    Posts:
    125
    So this is a bit off topic currently but any chance that namespaces can be added to the asset to avoid conflict with some other assets? I was trying to get a planet terrain generating thingy to work and I may have to do some renaming/grouping of a couple classes to avoid complie errors. Increasing GKCs ability to play nice with other assets would be a huge plus and a big help. I think someone mentioned it a few pages back. (utils) is a very common class name apparently. Easy fix but it can scare noobs. Shook me up til I figured it out.
     
    sr388, HeadClot88, neoshaman and 4 others like this.
  50. sr388

    sr388

    Joined:
    Jul 22, 2014
    Posts:
    2,890
    Hi everyone.

    Sorry for the time to reply, the last day to upload a new version is almost the most exhausting xd.

    Oh yeah, that seems really interesing and a lot of good homework haha. I keep all these sources ;)

    The last video about doom was already opened in my browser, ready to be seen as soon as the update is finished. Thanks again for all these info, it will be indeed very useful.

    Absolutely.

    I had it already planned for this update, but due to bring forward the release date of 2.4c, I haven't been able to do this. But for 2.4d, it will be done. And yes, I shouldn't have called Utils to that script, I will change that name too (sometimes is hard to select proper names for scripts and variables).

    Btw, the update is almost complete, the demos are being uploading to dropbox and once these are complete, the project will be uploaded to the asset store.

    Regards.
     
    Wetw0rx, neodotca, Mark_01 and 2 others like this.