Search Unity

[RELEASED] Fury Framework - RPG/RTS Creator

Discussion in 'Assets and Asset Store' started by andorov, Dec 23, 2011.

  1. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    Its just as easy. Everything should be easy!

    ISpeed is a speed multiplier. So if you set your unit to move 2units/per second (in unit config), and you return 3f for your value, your unit will move at 6 units per second. You can also slow your unit down by returning a fractional value; 0.5f will make the unit half as slow. Returning 0f will force the unit to stand still.
     
  2. Drewbie

    Drewbie

    Joined:
    Dec 22, 2010
    Posts:
    25
    so with a few tweaks having to do with camera movement and the HUD interface this could be ported to iOS and android correct?

    what GUI system is the demo using? and would it work with NGUI out of the box or would it require some tweaking?

    is this package suited and built to support a TD with multiple players (in terms of FPS/syncing/data being sent from client to host) or would it be more geared towards solo play?

    have you heard of anyone combining your framework with ulink and their suite of multiplayer services?

    I'm going to test it out this weekend when I get some more time, but based on the documentation/tutorials/reviews/and the support you provide 100 bucks seems like a complete steal compared to the work you put in....
     
  3. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    Correct.

    The demo uses standard OnGUI calls, and is contained entirely within InventoryManager.cs and SimpleHUD.cs. These files are NOT part of the core framework; the core framework is UI agnostic and you can implement any third party solutions you see fit.

    Its not focused on one or the other; all native functions support multiplayer but by nature also support single player. You write the same code for both types of functionality. For single player, you can take "shortcuts" like storing values in external variables that won't be synced.

    Not yet; it wouldn't even be possible without purchasing it as the source code is not included in the evaluation versions. Since the source code was only released a week ago, It will probably be a little while before someone tries uLink integration.

    Thank you!
     
  4. Mikie

    Mikie

    Joined:
    Dec 27, 2011
    Posts:
    367
    Past the first tutorial. I am using Win7, indie. Can't get the character to follow the path. Is there any chance you could let me have the source that works at this point? Created with indie. I have imported AStarNavAgent. Thinks look good no errors.
     
  5. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    You can download this project created by murteas (who is using Indie): http://db.tt/Gu4qiHFc

    Open Scenes/Test, you will see a character there that you can control. You can continue from there.
     
  6. Mikie

    Mikie

    Joined:
    Dec 27, 2011
    Posts:
    367
    Androv, thanks. I just got mine to work. So when are you going to have Fury ready to sell? The biggest problem is doing it with Indie and Win7 and you are using a Mac.
     
  7. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    Em..

    1) The framework is already available for sale on the asset store.

    2) I use Win7 and 99% of the framework was programmed when I only had Indie. Indie users will always have to implement a custom path finding solution (even if they buy it from the Asset Store)
     
  8. Mikie

    Mikie

    Joined:
    Dec 27, 2011
    Posts:
    367
    Testing Win7. Did a build on your tutorial and mine(very simple). Mine does not work at all. Your tutorial seems to run OK. But can't exit without alt-crtl-del. I have you tried to produce an .exe file or web.
     
  9. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    I've produced both a web player and executable. Others have tested it on iOS and Android. You can see the web player in action at http://www.dreadware.com/fury/ when you click "Play the demo."

    I'm not sure why yours doesn't work; nothing in the Fury framework would prevent an executable from not closing. If you send me the project, I can take a look at it. The one thing I can think of is that the tutorial locks the mouse and the escape key may not work. This is simply a UI issue; you need to build the appropriate menus for your game.
     
  10. Mikie

    Mikie

    Joined:
    Dec 27, 2011
    Posts:
    367
    Here is a link to my simple file http://pirsqrt.com/Unity2/WebPlayer.html as you can see the character just keeps walking. The zipped file is large. Uploading to my site. Could you give me your e-mail and I will send you the link.
     
  11. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    You can PM me the link using the form or send out an email at ali@dreadware.com
     
  12. bravery

    bravery

    Joined:
    Mar 26, 2009
    Posts:
    270
    Hi andorov,

    I can see you are doing a good progress with you framework.

    I'm coming from tower defense background and I like to build a tower defense game using your framework, so I have a couple of questions about:

    1- I can't see how your framework can build towers and give them the ability to attache the players? Can you please explina that?
    2- How can I upgrade / sell my towers using your framework?
    3- How can I spawn enemy waves and make them follow a specific path?
    4- How can I constrcut the building of towers only in specific places?
    5- What about Menus (maun menu, and meus in game) can you framework support that? or can it integrate with other GUI framework like NGUI for example?

    Thanks in advance.
     
    Last edited: Mar 23, 2012
  13. Zhosay

    Zhosay

    Joined:
    Dec 12, 2011
    Posts:
    98
    In the Demo is a Tower. Instantiate on runtime is a unity command. You should start with this two.
     
  14. AlerZampi

    AlerZampi

    Joined:
    Dec 25, 2011
    Posts:
    27
    How i can extend Fury.Behaviours.Unit class? I want make attributes system like rpg (stats, armors basic/magic and more..)
     
  15. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    You don't extend the Behhaviors.Unit class.

    You want to extend its properties, so you extend Fury.Database.Unit, then create custom definitions off your extended property class. This is explained in the tutorial where I create the Dummy. You can open DummyLogic.cs to get an idea of what I mean.
     
  16. AlerZampi

    AlerZampi

    Joined:
    Dec 25, 2011
    Posts:
    27
    Do you can make some API References Documentation? I can't use function "Go to Declaration" in Mono like Studio, because receive error:
    Code (csharp):
    1.  
    2. Decompilation failed:
    3. System.IO.FileNotFoundException: Could not resolve: UnityEngine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
    4.   at Mono.Cecil.BaseAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference name, Mono.Cecil.ReaderParameters parameters) [0x000ed] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/contrib/Mono.Cecil/Mono.Cecil/Mono.Cecil/BaseAssemblyResolver.cs:155
    5.   at Mono.Cecil.BaseAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference name) [0x00000] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/contrib/Mono.Cecil/Mono.Cecil/Mono.Cecil/BaseAssemblyResolver.cs:111
    6.   at Mono.Cecil.DefaultAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference name) [0x0002b] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/contrib/Mono.Cecil/Mono.Cecil/Mono.Cecil/DefaultAssemblyResolver.cs:57
    7.   at MonoDevelop.Projects.Dom.DomCecilCompilationUnit+SimpleAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference name) [0x00000] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Dom/DomCecilCompilationUnit.cs:178
    8.   at Mono.Cecil.MetadataResolver.Resolve (IAssemblyResolver resolver, Mono.Cecil.TypeReference type) [0x0002d] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/contrib/Mono.Cecil/Mono.Cecil/Mono.Cecil/MetadataResolver.cs:53
    9.   at Mono.Cecil.ModuleDefinition.Resolve (Mono.Cecil.TypeReference type) [0x00000] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/contrib/Mono.Cecil/Mono.Cecil/Mono.Cecil/ModuleDefinition.cs:535
    10.   at Mono.Cecil.TypeReference.Resolve () [0x00013] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/contrib/Mono.Cecil/Mono.Cecil/Mono.Cecil/TypeReference.cs:285
    11.   at ICSharpCode.Decompiler.CecilExtensions.ResolveOrThrow (Mono.Cecil.TypeReference typeReference) [0x00000] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/contrib/ICSharpCode.Decompiler/CecilExtensions.cs:193
    12.   at ICSharpCode.Decompiler.Ast.AstBuilder.HidesByName (IMemberDefinition member, Boolean includeBaseMethods) [0x00021] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/contrib/ICSharpCode.Decompiler/Ast/AstBuilder.cs:1656
    13.   at ICSharpCode.Decompiler.Ast.AstBuilder.HidesBaseMember (ICSharpCode.NRefactory.CSharp.AttributedNode member) [0x00035] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/contrib/ICSharpCode.Decompiler/Ast/AstBuilder.cs:1639
    14.   at ICSharpCode.Decompiler.Ast.AstBuilder.SetNewModifier (ICSharpCode.NRefactory.CSharp.AttributedNode member) [0x00027] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/contrib/ICSharpCode.Decompiler/Ast/AstBuilder.cs:1619
    15.   at ICSharpCode.Decompiler.Ast.AstBuilder.CreateField (Mono.Cecil.FieldDefinition fieldDef) [0x0009a] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/contrib/ICSharpCode.Decompiler/Ast/AstBuilder.cs:1041
    16.   at ICSharpCode.Decompiler.Ast.AstBuilder.AddTypeMembers (ICSharpCode.NRefactory.CSharp.TypeDeclaration astType, Mono.Cecil.TypeDefinition typeDef) [0x000a3] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/contrib/ICSharpCode.Decompiler/Ast/AstBuilder.cs:717
    17.   at ICSharpCode.Decompiler.Ast.AstBuilder.CreateType (Mono.Cecil.TypeDefinition typeDef) [0x003ee] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/contrib/ICSharpCode.Decompiler/Ast/AstBuilder.cs:348
    18.   at ICSharpCode.Decompiler.Ast.AstBuilder.AddType (Mono.Cecil.TypeDefinition typeDef) [0x00000] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/contrib/ICSharpCode.Decompiler/Ast/AstBuilder.cs:237
    19.   at MonoDevelop.AssemblyBrowser.DomTypeNodeBuilder+<Decompile>c__AnonStoreyF.<>m__1F (ICSharpCode.Decompiler.Ast.AstBuilder b) [0x00000] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs:176
    20.   at MonoDevelop.AssemblyBrowser.DomMethodNodeBuilder.Decompile (Mono.TextEditor.TextEditorData data, Mono.Cecil.ModuleDefinition module, Mono.Cecil.TypeDefinition currentType, System.Action`1 setData) [0x00077] in /BuildAgent/work/976433a72acbefb1/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs:156
    21.  
     
  17. AlerZampi

    AlerZampi

    Joined:
    Dec 25, 2011
    Posts:
    27
    I tried. My steps:

    1) Created custom Database.Unit — BaseCharacter with property Attributes;
    2) Created extends the class - Lawyer

    In asset inspector i can change attributes, but global for every Lawyers in game.
    I think I must use Token with information about level and attributes increase.
     
  18. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    You can't go to declaration because you are using the binary. I'll take a look as to why the help isn't popping up in MonoDevelop.

    Right you are, if you want your character to level dynamically, create one token called "CharacterLevel" or something, and let the number of tokens a character has determine its actual level. Then you can key your strength/int/damage/etc off that level using some kind of formula or look-up table.
     
  19. AlerZampi

    AlerZampi

    Joined:
    Dec 25, 2011
    Posts:
    27
    offtopic: how i can make custom Inspector Editor for .asset files?
     
  20. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    You construct the inspector as normal (follow unity tutorials) and then for the attribute definition, you do something like...

    Code (csharp):
    1. [CustomEditor(typeof(MyCustomUnitAbilityStatus))]
     
  21. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    This is explicitly covered in tutorial 11 when I create a tower and have it attack nearby units!

    For selling, you'll need something like a SellAbility that you can give your towers which will refund their costs. Upgrading is a little bit more complex and depends on how your game will be set up. You could give your towers an "Upgrade" ability that increases a custom token (LevelToken, for example) which will denote what upgrade level the tower is. Then you could adjust its attack damage or whatever by a look up table or fixed function, ie: damage = numLevelTokens * 10 + 20.

    You will have to write your own spawner. I covered writing a spawner that created units in a box, you could then order those units to go to a location (ie, run through the maze). You can restrict the path by setting up invisble blockers or set up individual navigation meshes.

    This is probably your trickiest question. One way, using the default unity networking, is to set up navmeshes only on certain areas, then use the NavMesh.Sample function to make sure the player is putting the tower only on allowed areas.

    As earlier stated, the framework is totally GUI-agnostic. You can use any GUI systems including the standard (which is used in the demo) or NGUI or whatever.
     
  22. AlerZampi

    AlerZampi

    Joined:
    Dec 25, 2011
    Posts:
    27
    How i can change MaxHealth parameter inside OnTokenStackStateChanged() method?

    stack.Owner.Controllers.VitalityController.MaxHealth is read only parameter
     
  23. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    You don't. Think of that as the base health. If you want to increase a unit's health dynamically (say it leveled up), you would want to add a Database.Status that implements Database.Status.IHealth to the unit. There, you can specify the extra health a unit should get based on its level.
     
  24. AlerZampi

    AlerZampi

    Joined:
    Dec 25, 2011
    Posts:
    27
    How adjust mouse sensivity? I do not like the difference between speed of system's cursor and game's cursor from HUD.
     
  25. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    Fury.Hud.SensitivityMouse is your friend.
     
  26. vdharshan

    vdharshan

    Joined:
    Jan 6, 2012
    Posts:
    34
    Hey, I was working on a project using Fury Framework, and everything was ok when I used the Unity3d Pro version and NavMesh pathfinding..

    but in the indie version, when I'm using the 3rd party pathfinding Im getting a problem... the characters are not avoiding each- other. the avoidance system seems to be not working !? the characters are colliding with each other.. and passing through !

    Any ideas ?

    Thanks.
     
  27. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    The AStarNavAgent in the supplementary pack actually doesn't contain any avoidance behaviors. Its just sort of included as a 'sample.' If you would like, I can add some additional functionality to it to support basic avoidance. It would take a couple of days.
     
  28. vdharshan

    vdharshan

    Joined:
    Jan 6, 2012
    Posts:
    34
    No, you can't spend your time for just me!! But if you get more requests from other indie users just do it :p I will try to use the Unity Pro version then!

    Thanks for your kindness :)
     
  29. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    Alternatively you can look at the BoidAgent.cs script included in the tutorial package. That one implements some custom collider-based avoidance. Basically, if you were feeling up to the challenge, you'd have to combine the avoidance parts from BoidAgent.cs with the pathfinding parts of AStarNavAgent.
     
  30. vdharshan

    vdharshan

    Joined:
    Jan 6, 2012
    Posts:
    34

    Alright :) I got it !
     
  31. vdharshan

    vdharshan

    Joined:
    Jan 6, 2012
    Posts:
    34
    What about the performance when using the 3rd party pathfinding solutions ? will the Unity's built in NavMesh pathfinding be faster ?
     
  32. murteas

    murteas

    Joined:
    Feb 14, 2012
    Posts:
    62
    As I will be using the A* pathfinding I would love to have it be similiar to the unity pro version as much as possible. Once I purchase Fury, my plan was to change the nav agent to match the default unity agent, but I'd love it if this was something you were planning on supporting. :)
     
  33. vdharshan

    vdharshan

    Joined:
    Jan 6, 2012
    Posts:
    34

    I tried and it's still not working .. it will be great if you can help us on that..
     
  34. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    I think this weekend, I will be coming out of a much better out-of-the-box project for Unity Indie users.

    Also ezzal, can you check your PMs, I had a question to ask of you.
     
  35. Mikie

    Mikie

    Joined:
    Dec 27, 2011
    Posts:
    367
    That would be great. I tried the new demo - Web, PC, and Android. Still can't exit the PC. The Web is OK. Android does not create.
     
  36. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    Mikie, the issue exists with Android and PC is because the tutorial does not have the requisite interface code. You could easily add an "Exit" button to the game.
     
  37. Mikie

    Mikie

    Joined:
    Dec 27, 2011
    Posts:
    367
    Yes, Android works now. I need to get the right click to work on Android. A button.
     
  38. Zhosay

    Zhosay

    Joined:
    Dec 12, 2011
    Posts:
    98
    I got a problem with networking. Units that are there before the game starts work well on client and server. Unit I instantiate after game started only work on the server on the client the just idle. How to fix that?

    Oh and with instantiate I mean the fury command. I create them this way:

    Fury.Behaviors.Manager.Instance.CreateUnit();
     
    Last edited: Mar 29, 2012
  39. AlerZampi

    AlerZampi

    Joined:
    Dec 25, 2011
    Posts:
    27
    Can i use Fury with Photon Unity Networking (PUN)?
     
  40. murteas

    murteas

    Joined:
    Feb 14, 2012
    Posts:
    62
    That will be excellent. I'm excited to see it. Regardless I have to say I am really liking the Fury framework so far.
     
  41. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    Are you creating them and giving them an order and they just sit there on the client? That could potentially be a networking issue within the framework.

    Can you either upload the project or send me the script that creates the unit? Getting a full non-working project is the best way to resolve these types of issues!

    You would have to buy the framework to get the source and manually integrate Photon. May I ask why you want to use Photon?
     
  42. Zhosay

    Zhosay

    Joined:
    Dec 12, 2011
    Posts:
    98
    Just for the knowledge if someone else faces the problem. Just update fury ^^.
     
    Last edited: Mar 29, 2012
  43. vdharshan

    vdharshan

    Joined:
    Jan 6, 2012
    Posts:
    34
    Thanks for that!

    Opps, just now I replied you. Sorry for the delay, because sometimes the forum is not sending me notifications by email!
     
  44. Mudflap

    Mudflap

    Joined:
    Apr 2, 2012
    Posts:
    5
    Just started testing out fury using unity basic. I'm going through the video tutorials and ran into a problem. In tutorial 2, when I set the default owner of the dummy to Two, the object disappears. I even paused the game to make sure it just didn't fall through the floor. It's gone completely from the game hierarchy. If I keep the owner at 1, then the object shows up.

    Any clues?

    Edit: I looked in the debugger and found out that the object was deleted because there isn't a second commander. You don't cover that in the tutorial. I've tried adding a new commander to the Manager object and still doesn't work. What am I missing?
     
    Last edited: Apr 2, 2012
  45. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    What does the error log say? I suspect this is because you haven't added a second player to the map file, hence the framework does not know what to do with the unit, and removes it. When it does something like this, there is a warning in the console log.

    Furthermore, as promised, there are now two distinct evaluation kits; one for Unity Indie and one for Unity Pro. They are available from the main website.
     
    Last edited: Apr 2, 2012
  46. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    Thats quite odd, but you're right. I don't cover it in the tutorial.

    Open up your Tutorial.asset file, this is the map definition. Expand the "Commanders" array and set the number to 2. Change the type of the commander to "Computer."
     
  47. vdharshan

    vdharshan

    Joined:
    Jan 6, 2012
    Posts:
    34
    You could have not assigned a unit properties to the dummy object ? I often do that mistake and it will destroy the character automatically..
     
  48. Mudflap

    Mudflap

    Joined:
    Apr 2, 2012
    Posts:
    5
    That did the trick. Thanks. Added another commander to my map definition.

    BTW, I'm testing with the free A* project and the character doesn't seem to go back to the idle state after it moves. It jitters because it never truly gets to the end. I added some code to clean that up a little bit.

    AStarAgent.cs ~Line 66

    if((transform.position - destination).magnitude < movMag * speed * Time.deltaTime)
    nextPosition = destination;
    else
    nextPosition = transform.position + moveDir * speed * Time.deltaTime;;
     
  49. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    I think you downloaded the evaluation kit just before I updated it. :)
     
  50. Zhosay

    Zhosay

    Joined:
    Dec 12, 2011
    Posts:
    98
    Can you maybe make a tutorial with Level, experience, attributes. I think its alot of pain to add it currently. If I understood you right on last page I add a Token "level" for each level up. But how about experience? Should I add like +20 Tokens if he gains 20 experience? And is there an easier way to read the current Token amount. As the only attributes in your tutorials on the items are static.

    foreach (var stat in localHero.Controllers.TokenController.Stacks)
    Debug.Log(stat.States[0]);

    Edit: Oh and a short question if I add Level, Experience to the Unit.cs in the source like there is the health would it be synchronized over network?

    Thanks for help.
     
    Last edited: Apr 2, 2012