Unity Community


View Poll Results: Which real martial art would you love to master ?

Voters
437. You may not vote on this poll
  • Muay Thai

    71 16.25%
  • Ninjutsu

    87 19.91%
  • Taekwondo

    44 10.07%
  • Tai Chi Chuan / Qi Gong Jin

    28 6.41%
  • Jeet Kun Do

    39 8.92%
  • Pencak Silat

    11 2.52%
  • Boxing

    30 6.86%
  • Shaolin Kung Fu

    99 22.65%
  • I don't like martial arts / fighting games

    28 6.41%
Page 12 of 28 FirstFirst ... 2101112131422 ... LastLast
Results 221 to 240 of 553

  1. Location
    Paris
    Posts
    3,730
    Soon
    Right now I'm making all the special strikes, taking my time to conceive them as they are meant to be really special (think unique mechanics, instead of "just" a charge/uppercut/air kick etc).


  2. Location
    Boston, Ma
    Posts
    2,441
    Quote Originally Posted by n0mad View Post
    Soon
    Right now I'm making all the special strikes, taking my time to conceive them as they are meant to be really special (think unique mechanics, instead of "just" a charge/uppercut/air kick etc).

    I must say, this is very inspiring for me... I am learning so much


  3. Location
    Paris
    Posts
    3,730
    Oh thanks, I'm gonna blush
    Keep up your good work ! You have a lot of talent, this would be a waste not to finish that


  4. Posts
    134
    Just chiming in to say I'm very interested in your project. Been lurking your thread for a few weeks, you've done a great job so far!

  5. Super Moderator
    Location
    Great Britain
    Posts
    9,680
    n0mad, I'm going to be really disappointed in you if you market it like shit when it's done. This project deserves the best marketing you can throw at it. Good luck with the project and try not to let it take too long to finish otherwise others will have better beat em ups out.
    Currently working with Sony on our new
    PS4 and Vita game in Unity!

    This post is not representative of Simian Squared Ltd


  6. Location
    UK, Grimsby
    Posts
    3,379
    Holy mother of lordy, how have I just seen this, its looking incredible. and +1 to what Hippo said, if you cock it up ill be slapping you too, get rich

    P.s, when you do, buy me an Imac iight?

    best of luck


  7. Location
    Paris
    Posts
    3,730
    Quote Originally Posted by MABManZ View Post
    Just chiming in to say I'm very interested in your project. Been lurking your thread for a few weeks, you've done a great job so far!
    Thanks ! It's on the final lane to achievement right now (85% finished I'd say), until it is 90-95% finished I can't really expose too many details (especially mechanics), but I hope you'll enjoy it even more when I'll expose them soon !

    Quote Originally Posted by hippocoder View Post
    n0mad, I'm going to be really disappointed in you if you market it like shit when it's done. This project deserves the best marketing you can throw at it. Good luck with the project and try not to let it take too long to finish otherwise others will have better beat em ups out.
    Haha thanks Hippo I understand marketing is 50% of the game exposure, you can trust me about making everything I can to put a proper PR job
    Actually this is what I already started to plan :
    - demonstration at EVO Las Vegas 2012 (I'll do the 2000$ flight just for that, actually waiting for their green light)
    - conferences (I had to decline this year's Maxon one in Cologne, because the game wasn't in a proper presentable state unfortunately)
    - an obligatory "come on hit me in the face !" into the lions pit that is www.shoryuken.com forums
    - the regular PR bundle with full version to testing sites
    - tons of free giveaway codes (especially in here)
    - and basically the game will not be splitted in 2 (free demo+full paid version), but only one free version with 2 fighting styles and a regular "instant fight" mode, including in-app purchase of full version (6 other styles, career, other modes, etc), so that people will be able to fully measure if they like it enough to purchase it or not

    You're absolutely right about other beat 'em ups coming soon, though. My nerd sense is tingling about some giant console titles coming to iOS as 1:1 ports (aka. no 2D sprites scans anymore). I admit the more time goes by, the more worried I am ... But I can't rush it, or it will definitely be "just another fighting game". The 80%-20% rule is hitting me hard right now

    Quote Originally Posted by charliesamways View Post
    Holy mother of lordy, how have I just seen this, its looking incredible. and +1 to what Hippo said, if you cock it up ill be slapping you too, get rich

    P.s, when you do, buy me an Imac iight?

    best of luck
    Thanks Charlie, I hope you'll have loads of fun playing it too

    I'll put as many giveaway codes as I can in here when it's released.
    You guys are awesome, thank you.
    Last edited by n0mad; 11-02-2011 at 03:42 AM.


  8. Location
    Netherlands
    Posts
    22
    I made a posting on this game on my website, think it's a very promising game Good luck with the future development and promotion!
    AndroidGaming.nl - Android game reviews and news in Dutch


  9. Location
    Paris
    Posts
    3,730
    Quote Originally Posted by AndroidGaming.nl View Post
    I made a posting on this game on my website, think it's a very promising game
    Good luck with the future development and promotion!
    Wow, that's very cool, thanks !!
    And that's a super good looking site, very nice choice of colors, fonts, and layout, congrats
    I'll make sure to send you a clean version as soon as the game is done.
    *goes back to work*
    Last edited by n0mad; 11-02-2011 at 03:33 AM.


  10. Location
    Paris
    Posts
    3,730
    Ok, due to recurring technical questions from different people over the 3 years, I'll put a brief synthesis of how the collision system is created :

    Designing each character animation

    I created a very precise and technical configuration sheet for each combat style, deciding the strikes range, duration, launch time, etc. upon the variation of a normalized one.
    Example :
    Normalized standing punch : Range = 100 cm, Duration = 35 frames, launchTime = 15 frames, hitStun = 20 frames, damage = 50
    Which represents, for Ninjutsu which have these stats : Range = 100%, Strength = 80%, Speed = 130% :
    Ninjutsu standing punch : Range = 100 cm, Duration = 27 frames, launchTime = 12 frames, hitStun = 15 frames, damage = 40
    Each fighting style animations were designed upon this very sheet. Balancing is absolutely vital for fighting games, a game designer cannot create complete arbitrary moves or he's exposing himself to infinite combos, overpowered moves, or even worse, one strike that will be far superior to others, leading to some players always repeating the same strike again and again.

    Animated HitBoxes

    inside my FBX character animations, I create 2 animated boxes : one "HitBox", and one "StrikeBox". Hitbox encapsulates the whole body, and represents the sensible zone where the char can be hit. It is always present.
    Strikebox encapsulates each striking memberon strike animations. To prevent gaussian interpolation weirdness inside Unity, I keep it at the same size and position from the start of its strike animation to its end. And for non-striking animations, I let it in a small scale, at position zero. I'll explain later how it is managed inside Unity.

    Animation Clips splitting Configuration text file

    Besides, I'm creating a configuration text file, precising each animation start frame, end frame, name, Loop Mode, and each frame window if it"s a strike.
    Example, for a punch :
    30; 60; FiercePunch; Once; 35; 46;
    Using the configuration file

    Inside Unity, I created an Editor Script named "Split animations". It detects if the selected FBX name matches the corresponding .txt configuration file above, and then parses it to create each split animation with ModelImporterClipAnimation class. It also detects if there is strike frames data ("35; 46;" above). If there is, it creates 2 AnimationEvent that will be saved for the animationClips to be saved later (will be explained further). The first AEvent calls a funtion named "onStrikeStart" with the strike name as parameter, and the second "onStrikeEnd".
    These 2 functions are just enabling/disabling the Collision detection for StrikeBox.

    HitBox and StrikeBox inside Unity

    These 2 boxes are taken out of their MeshRenderer, while BoxColliders are attached to them. A rigidbody is attached to HitBox too, in order for StrikeBox to register collisions with enemy's HitBox. They are both set on "isKinematic" so that they follow the FBX animation.
    So in the end, the result is that fighters bounds are absolutely under control, which allows some special tricks like member invincibility. It also normalizes the vulnerable zone for each fighter, to prevent frustrating moments where your strike was supposed to reach its target, but didn't because this target animation ("idle" for example) just moved back a bit at that precise moment.
    For short, letting the animator control the HitBox/StrikeBox creates a far more precise and technical combat mechanic. It also allows to keep high fidelity of what the Systems Lead did decide for each strike's range, so the player will know exactly where his strikes will land, instead of some approximate swing guess.

    Inserting the AnimationEvents

    Now that FBX animations are split and named, I also created an Editor Script that will clone them into a new prefab, in order to add the created AnimationEvents into each clip. Additionally, I created a script that creates mirror animationClips of each one, so that I won't use negative X scaling when a fighter is turning opposite side. Negative scaling on a 40 bones skeleton is far too much a performance hit on mobiles. You can find a little pseudocode tutorial of this script here : http://forum.unity3d.com/threads/364...Clip-generator

    Now in the game, activating, detecting collisions, and de-activating Strikes

    So, each onStrikeStart/onStrikeEnd called by AnimationEvent will just enable/disable the corresponding StrikeBox.
    It will trigger the target's HitBox OnTriggerEnter() function (as mentionned in Unity Collider docs) and OnTriggerExit(), which will themselves call an internal script to determine if the fighter receiving the strike is in protection mode, or not.

    And, voilą.

    Everything else, like animation priority, strike launches etc. is decided by the state machine described in page 11.

    Hope it's clearer now,
    See ya next time for more updates !
    Last edited by n0mad; 11-05-2011 at 08:02 AM.


  11. Location
    Paris
    Posts
    3,730
    Little tip that I learned from implementing a bullet time effect :

    If you wanna check 100% of your bugs, just run your game at an ultra slow Time.timescale (like 0.1).
    I discovered at least 5 (not show stopping) anomalies that I could have never seen at normal speed.

    Another trick I learned thanks to that is to properly use Animation.Crossfade() : it should not be used at the exact end of an animation, or there will be a small hickup because of the fading out anim being rewinded at end.
    Always crossfade at Anim length - (Anim length * Anim normalizedTime).

    Now it seems totally logical, but once again, it was not clearly checkable at normal speed.


  12. Location
    Paris
    Posts
    3,730
    Tip sharing : A custom List<T>, 30% to 50% faster

    I ran a performance check about my datastructures, especially my List<T> stuff. It's an important data type, as it is used for state machines and AI routines (state checking, list of available actions to AI, etc).

    So I found that List<T> is clearly not the fastest storing type. So I tried to replace all of my Lists with 2 other types : ArrayList and HashSet (which is available to NET 2.0, even if implemented in 3.5).

    I ran a lot of extensive tests with these 3 different types, and ArrayList came as the fastest.
    But after a bit of internet documenting, and thanks to this thread I found, a hacked version of Dictionary would be even faster (because Dictionary key lookup is O(1), instead of O(n), O(n) meaning it's as fast as its size, as O(1) is constantly fast).


    I hacked a bit the custom HashSet in the link above, and came to this class below. Help yourself, you can use it as you wish. Several tests monitoring huge List processing functions came to this fact : this hacked hashTest class is 30% to 50% faster than List<T>.

    Code:  
    1. using UnityEngine;
    2. using System;
    3. using System.Collections;
    4. using System.Collections.Generic;
    5. using System.Runtime.Serialization;
    6.  
    7. public class _hashSet<T> : ICollection<T>, ISerializable, IDeserializationCallback
    8. {
    9.     private readonly Dictionary<T, object> dict;
    10.  
    11.     public _hashSet()
    12.     {
    13.         dict = new Dictionary<T, object>();
    14.     }
    15.  
    16.     public _hashSet(IEnumerable<T> items) : this()
    17.     {
    18.         if (items == null)
    19.         {
    20.             return;
    21.         }
    22.  
    23.         foreach (T item in items)
    24.         {
    25.             Add(item);
    26.         }
    27.     }
    28.  
    29.     public _hashSet<T> NullSet { get { return new _hashSet<T>(); } }
    30.  
    31.     #region ICollection<T> Members
    32.  
    33.     public void Add(T item)
    34.     {
    35.         if (item != null)
    36.            dict.Add(item, null);
    37.  
    38.     }
    39.  
    40.    public void Clear()
    41.     {
    42.         dict.Clear();
    43.     }
    44.  
    45.     public bool Contains(T item)
    46.     {      
    47.         return item == null ? false : dict.ContainsKey(item);
    48.     }
    49.  
    50.    public void CopyTo(T[] array, int arrayIndex)
    51.     {
    52.         if (array != null && arrayIndex >= 0 && arrayIndex < array.Length && arrayIndex < Count)
    53.             dict.Keys.CopyTo(array, arrayIndex);
    54.     }
    55.  
    56.     public bool Remove(T item)
    57.     {
    58.         return dict.Remove(item);
    59.     }
    60.  
    61.    public int Count
    62.     {
    63.         get { return dict.Count; }
    64.     }
    65.  
    66.    public bool IsReadOnly
    67.     {
    68.         get
    69.         {
    70.             return false;
    71.         }
    72.     }
    73.  
    74.     #endregion
    75.  
    76.     public void UnionWith(IEnumerable other)
    77.     {
    78.  
    79.  
    80.         foreach (T item in other)
    81.         {
    82.             if (this.Contains(item))
    83.             {
    84.                 continue;
    85.             }
    86.  
    87.             this.Add(item);
    88.         }
    89.  
    90.     }
    91.  
    92.     public void Subtract(IEnumerable other)
    93.     {
    94.         foreach (T item in other)
    95.         {
    96.             if (this.Contains(item))
    97.                 this.Remove(item);        
    98.         }
    99.     }
    100.  
    101.     public bool IsSubsetOf(IEnumerable other)
    102.     {
    103.  
    104.         foreach (T item in other)
    105.         {
    106.             if (!this.Contains(item))
    107.             {
    108.                 return false;
    109.             }
    110.         }
    111.  
    112.         return true;
    113.     }
    114.  
    115.     public _hashSet<T> Intersection(IEnumerable other)
    116.     {
    117.         _hashSet<T> intersectionSet = NullSet;
    118.  
    119.         if (other == null)
    120.         {
    121.             return intersectionSet;
    122.         }
    123.  
    124.  
    125.         foreach (T item in other)
    126.         {
    127.             if (!this.Contains(item))
    128.             {
    129.                 continue;
    130.             }
    131.  
    132.             intersectionSet.Add(item);
    133.         }
    134.  
    135.         return intersectionSet;
    136.     }
    137.  
    138.     public List<T> ToList()
    139.     {
    140.         return new List<T>(this);
    141.     }
    142.  
    143.     #region Implementation of ISerializable
    144.  
    145.    public void GetObjectData(SerializationInfo info, StreamingContext context)
    146.     {
    147.         if (info != null)
    148.             dict.GetObjectData(info, context);
    149.     }
    150.  
    151.     #endregion
    152.  
    153.     #region Implementation of IDeserializationCallback
    154.  
    155.    public void OnDeserialization(object sender)
    156.     {
    157.         dict.OnDeserialization(sender);
    158.     }
    159.  
    160.     #endregion
    161.  
    162.     #region Implementation of IEnumerable
    163.  
    164.    public IEnumerator<T> GetEnumerator()
    165.     {
    166.         return dict.Keys.GetEnumerator();
    167.     }
    168.  
    169.    IEnumerator IEnumerable.GetEnumerator()
    170.     {
    171.         return GetEnumerator();
    172.     }
    173.  
    174.     #endregion
    175. }


    edit : Updated benchmarks thanks to Izitmee !
    Last edited by n0mad; 04-10-2012 at 03:13 AM.


  13. Location
    Boston, Ma
    Posts
    2,441
    Quote Originally Posted by n0mad View Post
    Ok, due to recurring technical questions from different people over the 3 years, I'll put a brief synthesis of how the collision system is created :

    Designing each character animation

    I created a very precise and technical configuration sheet for each combat style, deciding the strikes range, duration, launch time, etc. upon the variation of a normalized one.
    Example :

    Which represents, for Ninjutsu which have these stats : Range = 100%, Strength = 80%, Speed = 130% :

    Each fighting style animations were designed upon this very sheet. Balancing is absolutely vital for fighting games, a game designer cannot create complete arbitrary moves or he's exposing himself to infinite combos, overpowered moves, or even worse, one strike that will be far superior to others, leading to some players always repeating the same strike again and again.

    Animated HitBoxes

    inside my FBX character animations, I create 2 animated boxes : one "HitBox", and one "StrikeBox". Hitbox encapsulates the whole body, and represents the sensible zone where the char can be hit. It is always present.
    Strikebox encapsulates each striking memberon strike animations. To prevent gaussian interpolation weirdness inside Unity, I keep it at the same size and position from the start of its strike animation to its end. And for non-striking animations, I let it in a small scale, at position zero. I'll explain later how it is managed inside Unity.

    Animation Clips splitting Configuration text file

    Besides, I'm creating a configuration text file, precising each animation start frame, end frame, name, Loop Mode, and each frame window if it"s a strike.
    Example, for a punch :


    Using the configuration file

    Inside Unity, I created an Editor Script named "Split animations". It detects if the selected FBX name matches the corresponding .txt configuration file above, and then parses it to create each split animation with ModelImporterClipAnimation class. It also detects if there is strike frames data ("35; 46;" above). If there is, it creates 2 AnimationEvent that will be saved for the animationClips to be saved later (will be explained further). The first AEvent calls a funtion named "onStrikeStart" with the strike name as parameter, and the second "onStrikeEnd".
    These 2 functions are just enabling/disabling the Collision detection for StrikeBox.

    HitBox and StrikeBox inside Unity

    These 2 boxes are taken out of their MeshRenderer, while BoxColliders are attached to them. A rigidbody is attached to HitBox too, in order for StrikeBox to register collisions with enemy's HitBox. They are both set on "isKinematic" so that they follow the FBX animation.
    So in the end, the result is that fighters bounds are absolutely under control, which allows some special tricks like member invincibility. It also normalizes the vulnerable zone for each fighter, to prevent frustrating moments where your strike was supposed to reach its target, but didn't because this target animation ("idle" for example) just moved back a bit at that precise moment.
    For short, letting the animator control the HitBox/StrikeBox creates a far more precise and technical combat mechanic. It also allows to keep high fidelity of what the Systems Lead did decide for each strike's range, so the player will know exactly where his strikes will land, instead of some approximate swing guess.

    Inserting the AnimationEvents

    Now that FBX animations are split and named, I also created an Editor Script that will clone them into a new prefab, in order to add the created AnimationEvents into each clip. Additionally, I created a script that creates mirror animationClips of each one, so that I won't use negative X scaling when a fighter is turning opposite side. Negative scaling on a 40 bones skeleton is far too much a performance hit on mobiles. You can find a little pseudocode tutorial of this script here : http://forum.unity3d.com/threads/364...Clip-generator

    Now in the game, activating, detecting collisions, and de-activating Strikes

    So, each onStrikeStart/onStrikeEnd called by AnimationEvent will just enable/disable the corresponding StrikeBox.
    It will trigger the target's HitBox OnTriggerEnter() function (as mentionned in Unity Collider docs) and OnTriggerExit(), which will themselves call an internal script to determine if the fighter receiving the strike is in protection mode, or not.

    And, voilą.

    Everything else, like animation priority, strike launches etc. is decided by the state machine described in page 11.

    Hope it's clearer now,
    See ya next time for more updates !
    So you are using strikeboxes and hitboxes...looks like I am on the right track... I am gonna keep an even closer eye on this... come on, you got this...


  14. Location
    Brazil
    Posts
    1,503
    Is the game multiplayer?
    Edit: Oh I see, but why not WiFi too?
    GC matchmaker, any chance? That would be great to play.
    Last edited by BrUnO XaVIeR; 11-18-2011 at 07:32 AM.


  15. Location
    Paris
    Posts
    3,730
    Quote Originally Posted by BrUnO XaVIeR View Post
    Is the game multiplayer?
    Edit: Oh I see, but why not WiFi too?
    GC matchmaker, any chance? That would be great to play.
    I would be very excited to make it server based, but that would be too much responsibility/cost for maintaining a perfect maintenance in case of any problem (plus I could never sleep if it's worldwide due to GMT offsets).
    But ... if I find a way to enable a P2P connection via Wifi (and I don't think it's that hard), I'll do it for sure

    For now, there is a lot of work to do on the game itself, so I'll make sure to put a perfect Bluetooth experience first. I'll try to expand it to P2P Wifi after that milestone is reached ^^


  16. Location
    Argentina
    Posts
    390
    I'm a spanish native speaker, so excuse me if i make a mistake.

    You don't know nothing about scripting? Take a look at this [link]


  17. Location
    Paris
    Posts
    3,730
    Quote Originally Posted by Kokumo View Post
    Sipalki.
    I didn't know this art, so I wiki'ed it, and found it was the ancestor of TKD ^^
    It's weapon based though, mainly, but the unarmed portion looks like grabbing and countering techniques, much like Jiu Jitsu.
    Jiu Jitsu has not made it to chosen Martial Arts of Kinetic Damage, but you can find the same spirit of countering and chain grabbing with the implemented Krav Maga. Basically, while all the other ingame Arts will have hand to hand combos, every Krav Maga combo will be a chain lock, starting from a regular strike.

    Here is a slow motionned example (close Fierce Punch -> Light Punch -> Fierce Punch) :



  18. Location
    Athens, Greece
    Posts
    1,060
    Hi there,
    Thanks for all the info shared n0mad, is highly appreciated.
    I wish you the best luck with this production.
    Colored Shadows
    Batching Tools
    : Batch draw calls easily.
    Toon Shader Mobile: Good for mobile, fast and beautiful.
    Toon Shader Desktop: Good for desktops, more advanced.
    Thyella : A small game prototype on Kongregate


  19. Location
    Paris
    Posts
    3,730
    Thanks, you're welcome


  20. Posts
    2
    Quick coding question.

    I am doing a 3D fighter game for a university project. And I am having some issues with the characters flipping sides. In other words, when player 1 and player swap sides.

    So, whats not working is that they flip correcting, and if they do, there is still the possibility that a proctile ends up going off in some odd direction.

    Any help or tips on how you did it?

Page 12 of 28 FirstFirst ... 2101112131422 ... LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •