Search Unity

uMMORPG 2D Official Thread - The Unity 2D MMORPG Asset

Discussion in 'Assets and Asset Store' started by mischa2k, Jul 10, 2017.

  1. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    big_precise11.png

    Two years after releasing uMMORPG, I am happy to announce uMMORPG 2D for Unity!
    (Asset Store) (WebGL) (Chat) (FAQ) (Documentation)

    All the architecture was designed with simplicity in mind. The code is as short and as simple as possible - this is the only way for an Indie MMORPG to succeed.

    Screenshots:
    initial1.png
    initial2.png
    initial3.png
    initial4_ui.png

    Features:

    * Based on uMMORPG
    * Fully Unity + Mirror based
    * Same Scripts for Client & Server
    * Addon System & Community Addons
    * Uses Unity's new UI system
    * Players, Monsters, NPCs
    * Warrior & Archer Classes
    * Equipable Sprites
    * Click & WSAD Movement (Navigation 2D)
    * Animations via Mecanim
    * Beautiful 2D Sprites
    * Local, Whisper, Info Chat
    * Minimap
    * Levels
    * STR & INT Attributes
    * Skills, Buffs & Skillbar, AoE, Skill Levels
    * Critical Hits and Blocking
    * Items, Gold & Trash
    * Item Drops & Looting
    * Crafting
    * Guild System & Ranks
    * Party System & Exp. / Gold Sharing
    * Item Mall
    * Equipment Sprites
    * Player to Player Trading
    * NPC Trading & Quests
    * NPC "?" and "!" Quest Indicators
    * PvP Murder System
    * Tab Targeting
    * Death and Respawning
    * SQLite Database
    * Account System
    * 4000 Lines of carefully crafted C# Code
    * Secure: 100% Server Authoritative
    * Server Selection
    * Server can run on Linux in Headless mode
    * Configurable Server Tick Rate
    * MMO Camera with Damping
    * Login, Character Selection & Creation
    * Start as Host/Client/Dedicated
    * Network Time Synchronization
    * Platform Independent
    * Mobile Support
    * Free of Deadlocks & Race Conditions
    * Documentation with Tutorials & Addons

    Changelog:
    • V1.0 [released 2017-07-25]
      • First release based on uMMORPG
    • V1.1 [released 2017-07-26]
      • Upgraded to Unity 2017.1. Make sure to set the API Compatibility Level to '.Net' when upgrading
      • Windows invalid file path character fixed
      • Updated documentation
      • Logo updated
      • Login UI: Logo position adjusted
      • Chat: removed old 'guild not implemented' comment
      • Murderer skill tooltip 'buffs health per second' fixed
      • NetworkManagerMMO: headless check only starts a server if it wasn't started already
      • NetworkManagerMMO: OnClientSceneChanged overwritten with empty function to prepare for Network Zones
      • NetworkManagerMMO: OnServerDisconnect base function isn't called directly anymore to avoid the Debug.LogError that shows when a client disconnects
      • Database: added character 'online' field so that external applications can check if a character is currently online without talking to the server directly.
      • FaceCamera: only enabled while visible to improve performance with huge amounts of entities
      • NetworkProximityCheckerCustom: layer mask added to SphereCast to only check the Player layer. Greatly improves peformance with huge amounts of entities. Make sure to assign the correct layer in the Inspector when upgrading.
      • Physics Collision Matrix: IgnoreRaycast layer only collides with Player layer now to make sure that AggroAreas don't do any unnecessary casts. Greatly improves performance with huge amounts of entities too.
      • Entity.Update: moved check into separate IsWorthUpdating function.
      • Entity.IsWorthUpdating is used in Monster.LateUpdate to improve performance with huge amounts of entities.
      • Delete AggroArea layer because it's not used anymore
    • V1.2 [released 2017-08-22]
      • Upgraded to Unity 2017.1.0p1 for important UNET fixes
      • Entity Awake: removed outdated comment
      • Entity: added virtual Start function, Monster and Player use override for theirs
      • Entity.Start disables animator if isClient is false. Greatly increases server performance.
      • UIShowTooltip: always updates tooltip text to make sure that swapped out items' tooltips are shown immediately
      • Utils.GetMethodsByPrefix uses built-in KeyValuePair now. Removed Pair workaround
      • Player.CmdUseInventoryItem: added OnUseInventoryItem hook
    • V1.3 [released 2017-09-26]
      • Upgraded to Unity 2017.1.1p1 for important bug fixes
      • NavMeshPathfindingIterationsPerFrame scripts added and iterations increased to 5000
      • CopyPosition script syntax improved
      • Name/Quest/Guild overlays are now updated from Entity/Npc/Player scripts. Removed all the unnecessary text mesh update scripts. Make sure to assign the components in the Inspector when updating.
      • Database.SaveGuild: fixed missing @ in front of character and rank
      • Reimplemented Guild system. Moved most of it to Guild.cs and used a TargetRpc to avoid sending guild info to observers (huge bandwidth improvement)
      • Player: public Chat component now assigned in the Inspector instead of GetComponent calls
      • Player.FindOnlineGuildMembers removed; Chat uses onlinePlayers directly
      • Chat player component is now assigned in the Inspector to avoid GetComponent call
    • V1.4 [released 2017-10-10]
      • Downgraded to Unity 2017.1.0p1 to avoid Spawn position bug
      • Party System
    • V1.5 [released 2017-10-19]
      • Party button tooltip fixed
      • Navigation2D updated
      • Monster sliding to respawn position bug fixed
    • V1.6 [released 2017-10-25]
      • New Archer class + Bow + Arrow
    • V1.7 [released 2017-11-03]
      • Pets
      • NetworkManagerMMO Awake hook changed to Start
      • UIChat AddMessage keepHistory check deletes half the history each time to avoid lags
      • Monster OnAggro comment updated
      • Entity.CanAttackType changed to CanAttack
      • DealDamageAt AoE checks uses CanAttack too so that Npcs can't be attacked by AoE skills anymore
      • Entity.IsWorthUpdating made virtual to prepare for pet system
      • Monster: added missing Addon hooks for OnDeath, OnAggro, UpdateClient
      • Arrow added to NetworkManager's spawnable prefabs list
    • V1.8 [released 2017-11-07]
      • Monster, Npc default max mana set to 0 because it's not needed most of the time
      • Sapling, Alchemist prefab mana recovery disabled
      • Database: invalid player positions are now reset to nearest spawn point
      • Player Start: Equipment isn't shown/instantiated/animated on the server anymore
      • Party HUD: fixed masking for large amounts of party members
      • 2017.2 UI bug workaround to prepare for upgrade
      • Changed all scroll view movement types to clamped
      • Skills UI scroll view has a viewport again. Improves scrolling speed too.
      • Entity.RpcShowDamagePopup improved: sends GameObject instead of Position to save bandwidth
    • V1.9 [released 2017-11-17]
      • NetworkManagerMMO.OnServerAddPlayer addon system hook parameters added to prepare for a NetworkZones fix
    • V1.10 [released 2017-11-28]
      • Upgraded to Unity 2017.2.0p2 to prepare for Tilemaps
      • UICharacterInfo, UICrafting default hotkeys swapped
    • V1.11 [released 2017-11-28]
      • Environment implemented with Unity's new Tilemap feature
      • Applied latest Navigation2D update for TilemapCollider2D support
    • V1.12 [released 2017-12-07]
      • UnityVersionCheck component added to NetworkManager so that people know which version is recommended and where to download it
      • Player.skillbar+skillbarHotkeys are now in one array of SkillbarEntry so it's less confusing
      • Player.equipmentTypes+Locations+DefaultEquipment are now in one array so it's less confusing. Make sure to reassign the equipment locations when upgrading.
      • Skill cast progress bar
      • Monsters can use more than one skill now
    • V1.13 [released 2018-01-27]
      • Removed CastBar prefab in project area
      • Player.localPlayerClickThrough option
      • Player.OnDragAndDrop_InventorySlot_InventorySlot uses configurable keys now; Utils.AnyKeyPressed added
      • Monster.OnAggro distance comparison doesn't happen for the same target anymore to save a lot of computations
      • Database.CharacterSave saves status effect skills like murderer now too
      • Fixed UI Pet Revive panel assignmend which casued the revive panel to become inactive forever when walking away from the Npc while it was still open
      • CopyPosition syntax improved
      • NetworkManagerMMO RegisterHandler calls moved to OnStartServer so that reconnecting works properly
      • NetworkMessages made partial in case addons need to extend them
      • Pet: EventOwnerDisappeared added to destroy self and avoid null errors if other events tried to access a null owner; Player.OnDestroy doesn't destroy the pet anymore
      • Null checks added to Player/Npc/Pet NameOverlay code where Utils.ClientLocalPlayer is used
      • Player.nextTarget is now a SyncVar, processed in all Update_CASTING cases and the client sided target UI shows nextTarget before target if any
      • Entity has .effectMount now to avoid transform.FindRecursively call when spawning a projectile. Make sure to assign it to the character's transform when upgrading.
      • Animation controllers: currentSkill parameter replaced with skill name boolean parameters for simplicity. Make sure to create those parameters and use them in the transitions when upgrading, or use the new controllers.
      • Entity.DealDamageAt AoE functionality removed to prepare for new skill system
    • V1.14 [released 2018-01-31]
      • Upgrade Info: this update is huge, it completely replaces the old skill system and entity properties. Please make a backup before upgrading since this will break all your old skills.
      • Scriptable Skills! Make sure to recreate your skills when upgrading, or use the new ones that come with uMMORPG.
      • SkillTemplate.predecessor for skill trees and skill requirements
        SkillTemplate.requiresWeapon option
      • Skill levels via LevelBasedValues
      • Entity properties via LevelBasedValues (including Npc/Pet/Player/Monster). Make sure to resassign the values in the Inspector when upgrading your custom project.
        Skills UI Window size increased
      • Database.CharacterLoad: Player health / mana are only assigned after health max / mana max were fully loaded
    • V1.15 [released 2018-03-08]
      • NetworkTime getting out of sync bug fixed
      • Players can only summon pets up to their level
      • NetworkManagerMMO universal Quit function that also works in Editor
      • Database.CharacterLoad health/mana are only assigned after maximum health and mana were fully loaded
      • Pet.CanAttack comment fixed
      • Player/Monster/Npc CanAttack uses 'entity is Type' instead of 'GetType' to work with inheriting classes too
      • Skill and Buff levels are saved and loaded in database again
      • Entity.OnDeath added and called by inheriting classes (Monster/Player/Pet) to save code
      • Skillbar cooldown circles
      • Skills list cooldown circles
      • Player.SelectionHandling: Raycast ignore self part moved to Utils
      • NetworkMessages: CharactersAvailableMsg now uses partial CharacterPreview structs and addon system can load additional values like player's health if needed in character selection UI
      • UI: removed all unnecessary content size fitters and layout groups from UI elements and prefabs (to improve performance)
      • Database: Load/Save Inventory/Equipment/Quests/Skills/... code moved into separate functions for simplicity
      • Database: items, skills, etc. tables use primary key combinations now to greatly improve performance from O(n) to O(log n)
      • Database: only valid items/equip/skills are saved and loaded now. Greatly improves performance and reduces storage space
      • Database: items/equipment/skills loading is now done with one query instead of one query per item/equipment/skill to greatly improve performance.
      • Benchmark: loading 1000 player inventories with 30 items each. Before: 2500ms; now: 70ms
      • UI Skillbar: fixed cooldown circle on items bug; SlotSkillbar prefab now has amount overlay too for items
      • UI Skills: scrollbar is now stretched completely to the bottom
      • Chat: UIChat component is now cached to avoid FindObjectOfType call for each new message
      • Item Mall items are now listed in Player.itemMallTemplates array instead of filtering the whole item list each time
      • Player.CmdUnlockItem sends just the index instead of the whole item name now to save a lot of bandwidth
      • CmdUnlockItem also doesn't access ItemTemplate.dict directly anymore, which makes for cleaner code
      • Different classes can see different item mall items now if needed
      • Make sure to drag all your item mall items into the player prefab when updating
      • UICharacterSelection quit button uses NetworkManagerMMO.Quit now too
      • Item: proxy syntax improved
      • Quest: proxy syntax improved
      • Database.LoadQuests doesn't add empty quest if template doesn't exist anymore
      • Chat: .chat FindObject call moved to Awake to avoid a new UNET bug where Rpcs are called on the host for other players
      • Item.DecreaseBy/IncreaseBy helper functions added to simplify amount decreasing + slot clearing in the rest of the code
      • SkillTemplate tooltip comment improved
      • SkillEffects now require NetworkProximityCheckers so they aren't seen by everyone on the server anymore
      • UICharacterSelection: select button can't be clicked twice anymore if the game is really slow and the user clicks really fast - as this would cause a 'playerController 0 already in use' error
      • Item/Skill/Quest/Buff structs use an int hash instead of a string name to reference the templates to greatly reduce bandwidth
      • Player.itemMallCategories array so that no more filtering/sorting is needed and to prepare for scriptable items
      • Pet unsummon via Pet UI instead of clicking the item again. Better usability and prepares for scriptable items.
    • V1.16 [released 2018-03-13]
      • Scriptable Items
    • V1.17 [released 2018-03-14]
      • Fixed all ClientRpcs and TargetRpcs
      • Database: removed redundant item.valid checks
      • ItemSlot with .amount and .item instead of Item with .slot
      • Entity InventoryCount/REmove/CanAdd/Add renamed and they use Item instead of ItemTemplate now
      • Player.CmdMerge and UILoot use Item.Equals now
      • Quest.killName/gatherName replaced with .killTarget/gatherItem
      • Entity InventoryCount/Remove both use 'Item' instead of 'itemName' now
      • Skill.learned removed, using .level > 0 checks everywhere now. Minimizes bandwidth.
      • AreaBuffSkillTemplate/AreaHealSkillTemplate CheckTarget improvements
      • Player.CmdPartyInvite uses 'other' instead of 'player.target' now too
      • NetworkManager MaxSentMessageQueueSize increase to 512 which is the new UNET default
    • V1.18 [released 2018-03-23]
      • Upgraded to Unity 2017.4 LTS
      • NetworkManagerMMO doesn't access UIs anymore. UILogin/CharacterSelection/CharacterCreation handle themselves now.
      • NetworkManagerMMO IsAllowedAccount/CharacterName checks moved into separate functions
      • Item Mall: fixed scrollbar position when switching categories
      • Tooltip default 'This is a Tooltip!' cleared so people with low fps can't see it in the first frame anymore
    • V1.19 [released 2018-03-28]
      • WASD movement reimplemented via agent.velocity to fix a couple of issues
      • Player.CmdCreateGuild 'guildName' instead of 'newGuildName' bug fixed
    • V1.20 [released 2018-04-05]
      • Converted all 'var' type definitions to proper type definitions
      • NetworkManagerMMO.OnServerDisconnected uses
      • Utils.GetGameObjectFromPlayerControllers now
      • UIWindow doesn't set up the close button's callback via GetComponent anymore. All the buttons have their OnClick event's forwarded to UIWindow.OnClose in the Inspector now
      • Removed '#if UNITY_5_5_OR_NEWER' when using 'UnityEngine.AI'
      • DefaultVelocity, TextMeshCopyText, TextMeshFadeAlpha, NavMeshPathGizmo don't use GetComponent anymore, the component is assigned in Inspector instead
      • DamagePopup uses Rigidbody2D instead of 3D now
      • GUIConsole height is now customizable in the Inspector
      • Chat shows 'use /g for guild chat' message again since it was implemented a while ago
      • Player.EventMoveEnd fixed velocityPending not being reset which caused a bug where players couldn't accept new quests after doing WASD movement
      • SubAnimation removed unnecessary GetComponent call
    • V1.21 [released 2018-04-30]
      • NavMeshPathGizmo 'c' renamed to 'color'
      • BuffSkillEffect: fixed NullReferenceException when buff caster disappeared but buff target still had the buff on
      • Monster.NextReadySkill renamed to NextSkill; also checks mana etc. now by using CastCheckSelf instead of only IsReady
      • Pet cycles through skills now too
    • V1.22 [released 2018-05-22]
      • Upgraded to Unity 2017.4.1 LTS
      • Navigation2D updated (EdgeCollider2D support)
      • UISkills, UISkillbar check player.castCheckSelf instead of only skill.IsReady so that mana etc. is checked too
      • Chat: player renamed to onlinePlayer in some cases to avoid hiding 'player' member variable
      • Player FSM: EventNavigateVelocity cancels current skill cast now (fixes a bug)
      • UIChat: fixed reselecting after sending message
      • Chat scrollbar is transparent by default
      • Guild.IsValidGuildName uses <= instead of < for length check. Fixes a bug where guild window interactable buttonw ould be set to not interactable for max length stringths
      • NetworkTime.Update ServerCallback added
      • Database: removed guild table, added guild and guildRank to character table for faster and easier queries
      • Database: characters.guild index added for performance
      • Entity.RpcOnDamageReceived + addon hook
      • Player.CmdUseInventoryItem simplified
      • UsableItemTemplate.OnUsed (can be used for potion effects etc.)
    • V1.23 [released 2018-05-25]
      • New Documentation
    • V1.24 [released 2018-06-02]
      • Upgraded to Unity 2017.4.4 LTS for the Tilemap fix
      • Upgrade Info: this is a Syntax Update. Don't panic, all you have to do is rename Item/Skill/Quest/RecipeTemplate scripts, Unity won't reset your ScriptableObjects. The only thing you need to reassign are monster item drops. Make backups before you update!
      • Renamed Item/Skill/Quest/RecipeTemplates to ScriptableItem/Skill/Quest/Reicipe because that's what they are.
      • { } parentheses update. { always starts in a new line now.
    • V1.25 [released 2018-07-01]
      • Upgraded to Unity 2017.4.6 LTS
      • UI hooks removed for performance and because no one seemed to be using them anyway
      • Player.CmdCompleteQuests uses CanCompleteQuest to simplify code
      • Player.CanStartQuest renamed to CanAcceptQuest for consistency with CmdAcceptQuest command
      • Player.CanCompleteQuest checks inventory space if there is a reward item. Player.CmdCompleteQuest + UINpcQuests both use CanCompleteQuest now.
      • Player.questLimit renamed to activeQuestLimit; only checks active quests now because there's no point in limiting completed quests
      • UI Quests: replaced old scrollview with new one that also has a viewport so auto hiding the scrollbar works
      • UI Quests: [+] [-] buttons to expand/hide description text. feels a lot better.
      • UI skills: scrollview image disabled
      • Reverted database guild structure changes because they didn't work (terminate, resave, notices, kicking, etc.); added detailed comment why this is better
      • Database: guild_members renamed to character_guild for consistency; character as primary key now
      • Database: character_guild index on guild added to avoid full scans
      • UINpcGuildManagement: create button not interactable if player already has a guild
      • UINpcGuildManagement: create button clears guild name input
      • UICrafting result slot tooltip fixed (didn't replace {AMOUNT} before)
      • UI Chat transparency
      • UI NpcQuests: fixed scrollbar not auto hiding
      • UI Loot: fixed scrollbar not auto hiding
      • UI Chat, Skillbar, Shortcuts moved down by one pixel
      • LoadSkillbar only adds skills to skillbar if they were learned. fixes a bug where old character's skills would be loaded even though the new character with same name didn't learn them yet
      • UI Minimap: TextLevel renamed to TestScene
      • UI Portrait added to the top left of the screen
      • UI Equipment avatar minimaptexture and cameras in each player
      • Chat.MessageInfo renamed to ChatMessage
      • ChatMessage stores all the variables and constructs content in .Construct() - useful in case sender is needed again by UI etc.
      • Chat: fixed missing replyPrefix for local message example
      • UIChat click on message to reply
      • UIChatEntry mouseover effect so it's more obvious that we can click messages to reply
      • UIChat panel mouseover effect for better readability
      • Documentation updated (HLAPI CE, server hosting)
      • UIDragAndDropable: OnDragAndClear isn't called anymore if the slot is dropped on itself
      • UIDragAndDropable: Button interactable set to false while dragging so that onClick isn't called when dragging a slot onto itself
      • Replaced all icons with new icons and removed the old ones
      • UI Buffs panel moved to the right a bit to fit with new portrait and healthbar; buff slot background set to blue
      • Entity.CastSkill renamed to FinishCastSkill to make it more obvious
      • Entity.StartCastSkill function that is used by Monster/Pet/Player FSMs now
      • ScriptableSkill.OnCastFinished, OnCastStarted via Entity.StartCastSkill/FinishCastSkill Rpcs
      • Chat example info messages shorted so each of them fits into one line. Also added party message info.
      • Monster, Pet use attackToMoveRangeRatio = 0.8 instead of hard coding the 0.8 when moving into attack range
      • Animator: all transition durations set to 0 for faster transitions. No point in blending for 2D pixel art.
      • Entity.InventoryAdd tries to add to ALL existing stacks FIRST and THEN tries the EMPTY stacks instead of only looping once and adding to the first existing OR empty slot. Fixes a bug where an item would be added to slot0 even though slot1 had the same stack, only because slot0 was already empty.
      • Crafting probabilities
      • UI Window icons for all player windows
      • UI background/windows/foreground/login hints added in hierarchy; all invites moved to foreground, all HUD elements moved to background to make sure that invites are always seen, etc.
    • V1.26 [released 2018-07-02]
      • 4 directional idle animations for all entities
      • Depth sorting for all entities (sets sortinOrder dynamically)
      • Fixed NpcPetReviveSlot being saved with " " in it
      • Buff sprites improved
      • Navigation agent radius increased so that agents can't move as close to water / buildings anymore
      • Indicator uses new 'BehindEntities' layer
    • V1.27 [released 2018-07-04]
      • Quality settings changed to fastest, increased FPS from 45 to 70 on my machine without worse quality
      • SpriteAtlas to pack the whole Sprites folder in one atlas. Improves performance and fixes seems sometimes being shown inbetween tiles.
      • PixelDensityCamera default value set to 16 for clarity
      • CameraMMO2D: snap to pixel grid to fix npc shaking effect when moving
      • OrthonormalVector2 helper function moved to Utils
      • Entity.CurrentLookDirection() replaced with Entity.lookDirection which is set in Update now, without any helper variables for the last valid direction, etc.
      • Abstract DamageSkill that TargetDamageSkill and TargetProjectileSkill inherit from now
      • Warrior Slash skill that hits all targets in front of him
      • UI Experience bar background and fill colors improved
    • V1.28 [released 2018-07-24]
      • Upgraded to Unity 2017.4.7 LTS
      • UIDragAndDropable: OnDragAndClear is only fired when dropping a slot into nirvana, not when dropping it on a panel. Fixes issues where OnDragAndClear would be called if we'd drop something in the space between two item slots, etc. This just feels a lot more solid.
      • NetworkNavMeshAgent send interval changed from 0 to 100ms so it doesn't ddos the server with the latest HLAPI CE fixes where sendInterval actually works
      • NetworkNavMeshAgent reimplemented: huge bandwidth reduction because click movement only syncs when destination changed now, not while velocity changes (all the time previously). Also fixes several twitches for wasd moving clients. Added perfect warp detection + Rpc now too.
      • Minimap clear flags set to solid color and color set to a dark gray to match the UI panel. Improvements minimap appearance when standing at the edge of the world.
      • Skeleton Giant: added NetworkName component to avoid "(Clone)" suffix on clients
      • UILogin.registerButton not interactable while connecting anymore
      • NetworkManagerMMO.state so that Login/CharacterCreation/CharacterSelection UIs know when to be visible. Fixes a bug where character selection would be shown while server closed and disconnect wasn't detected yet.
      • UILogin status shows 'Handshake' now too
    • V1.29 [released 2018-08-24]
      • 'Indicator' layer assigned to Indicator prefab
      • Minimap Camera doesn't show indicator layer anymore
      • MinimapTexture: 2x AA, 256x256 size, trilinear filtering for better quality
      • UI Skill prefab disabled color changed to white so that unlearned skill icons are shown in the original color
      • Passive Skills
      • Skill.ToolTip now always shows at least level 1 so that unlearned skills don't show level 0 descriptions
      • UI Character Info shows critical and block chances now
      • UIDragAndDropable: added origin.dragable check to fix a bug where passive skills could still be dragged to the Skillbar because Unity called OnDrop even if our object's dragable was set to false
      • Removed channel tags to prepare for new networking. Removed unreliable channel from NetworkManager so it only uses one ReliableFragmented channel for everything now.
    • V1.30 [released 2018-08-30]
      • Removed unnecessary Chat component from Monsters, Npcs, Pets
      • Player.LoadSkillbar: checks if entry is valid item/equipment/learned skill instead of only checking learned skill. Fixes a bug where items/equipment wouldn't be loaded after the previous skillbar change.
      • Fixed 'ClientScene::AddPlayer: playerControllerId of 0 already in use.' bug when pressing character selection select button too fast while on low fps or high latency. The button is now disabled after pressing select.
      • Sqlite DLLs moved into Plugins/SQLite folder
      • Switch UNET to Mirror . Watch the migration Guide if you are updating manually.
    • V1.31 [released 2018-10-04]
      • Upgrade: when upgrading a custom project, please make sure to readjust all your NavMeshAgent2D settings. Sorry about that, but it's absolutely worth the extra stability of the latest Navigation2D version. Also make sure to switch all agent.ResetPath() calls to agent.ResetMovement().
      • Rubberband movement via NetworkNavMeshAgentRubberbanding2D. No more movement latency for the local player!
      • Documentation Updated (no more HLAPI CE)
      • Mirror updated to latest version for several fixes and improvements
      • AddonExample: removed [SyncVar] limit note
      • Replaced Hierarchy Respawn point NetworkStartPosition component with the one from Mirror too
      • NetworkManagerMMO.OnServerDisconnect: removed the old workaround to avoid error message on disconnect because it was fixed in latest Mirror version now
      • Database.LoadInventory/LoadEquipment/LoadSkills/LoadQuests: added warnings in case items can't be loaded because they were deleted or aren't in the resources folder
      • NetworkName/NetworkNavMeshAgent/NetworkTime: comments updated
      • Player CASTING EventSkillFinished: simplified code and made it more robust
      • Player CASTING EventSkillFinished: added check to clear currentSkill if skill requires a valid target. fixes a bug where tab targeting didn't work anymore for if the warrior killed a monster
      • Speed Buffs; added Windwalk skill to Archer
      • Buff/Item/Quest/Skill: .data access now throws are useful error message if the item with that hash was never loaded
      • NavMeshAgent.ResetMovement() extension to properly clear path AND velocity to fix FSM issues. Make sure to always use agent.ResetMovement instead of agent.ResetPath from now on.
      • Renamed WSADHandling to WASDHandling
      • Moved NavMeshAgent2D and (most importantly) NetworkNavMeshAgent(Rubberbanding)2D above Player/Monster/Npc components for all prefabs. Fixes a bug where local player in host mode would apply wasd movement velocity and then have it overwritten by NetworkNavMeshAgentRubberbanding2D later, causing strange animation and sync behaviours. Also added a OnValidate check to show a warning in case someone forgets to do that.
      • Player.LateUpdate sets animator moving parameter to Entity.IsMoving, so that the rubberband movement's animation isn't delayed and waiting for the server's 'state' variable anymore. This gives perfectly smooth movement. Also removed the Entity.IsMoving server tag now.
    • V1.32 [released 2018-10-18]
      • Mirror updated to latest version (make sure to reassign NetworkProximityCheckers with the ones from Plugins/Mirror/Runtime-Editor)
      • Skill predecessor required levels
      • UsableItem cooldown buffs
      • Health/Mana/Vigor potion tooltips improved
      • Use Mirror's new NetworkTime instead of the custom NetworkTime component + GameObject. Changed all endTimes to double and code uses NetworkTime.time instead of Time.time everywhere now.
      • Latency indicator
      • NetworkNavMeshRubberbanding2D: lastReceivedDestination is now reset after the change was detected. Fixes a bug where the server would constantly detect the destination change.
      • All player movement now happens on the client, the server never moves the player except for agent.Warp. Fixes race conditions and a bug where client couldn't move anywhere else after moving to a monster to attack it. There was no good way to solve the problem. Having all movement on the client gets rid of the magic.
      • Entity.FinishCastSkill now passes the full skill to the Rpc to avoid race conditions with synchronization where 'skillCur' might still be an old or new value and then OnCastFinished wouldn't be called. This way it's 100% fail safe.
      • NetworkNavMeshAgentRubberbanding: added destination detection again so that it's synced to others again
      • Entity.OnSkillCastFinished event via sendmessage
      • Player.OnSkillCastFinished now handles all the after-cast actions like nextSkill, nextDestination etc. and CASTING state force resets any new movement while casting to avoid race conditions and latency issues with rubberband movement
    • V1.33 [released 2018-10-19]
      • Stuns
      • Character Selection Previews
      • AudioSources & Skill sound effects are now supported (no examples yet)
      • Rubberband movement improvements
      • Crafting Times
      • Safe Zones
      • Scriptable Quests
    • V1.34 [released 2018-11-27]
      • Upgraded to Unity 2017.4.13
      • Mirror updated to latest version
      • Entity now has a public audioSource field to be assigned in the Inspector. This avoids a ScriptableSkill.OnCastStarted GetComponent call
      • Fixed warning message equipment size
      • UI TextLatency renamed to Latency in Hierarchy
      • Character selection previews are now cleared on client when joining world, not on server
      • UISkills: removed unnecessary skills.FindIndex because we don't have buffs and skills in one list anymore
      • EquipmentSlot: overlays don't block Raycasts anymore. Makes drag and drop easier.
      • UINpcTrading/UINpcDialogue/UILoot/UINpcPetRevive/UIChat singleton to avoid FindObjectOfType calls
      • Projectile start position fixed in clients
    • V1.35 [released 2018-12-11]
      • Removed unused fonts
      • Player.localPlayer added to replace Utils.ClientLocalPlayer() function. This is easier to use.
      • ProjectileSkillEffect uses speed * fixedDeltaTime because FixedUpdate tick rate may vary and may be set to different rates on headless etc
      • Navigation2D updated to latest version. Default obstacle avoidance set to None.
      • Skill CheckSelf() moved from Entity to ScriptableSkill so that different skills can have different checks, e.g. check ammo for projectile skills etc.
      • Arrow items, ammo equipment slot, bow consumes arrow, Npc sells arrows now
      • UINpcTrading tooltip uses ItemSlot now so that {AMOUNT} is replaced in tooltip text
      • Entity.manaRecoverRate fixed: used healthMax percentage before.
      • Equipment slots moved from Player to Entity so that TargetProjectileSkill can check the entity's equipment for ammo
      • Equipment slot amount overlays added
      • UI NpcTrading panel: buy and sell input character limit increased from 2 to 4 for items with a huge maxstack like arrows
      • UI Inventory gold text now supports 12 instead of 5 digit gold amounts
      • EquipmentInfo defaultItemAmount added; Warrior and Archer prefab default amounts set to 1 where necessary; Archer default 500 arrows added
      • UISkillbar caches CastCheckSelf
      • UITarget shows target's buffs now too
      • Mirror updated to latest version
      • Entity, Chat .netIdentity fields removed because they are in Mirror now
      • NetworkNavMeshAgentRubberbanding: use cached hasPath variable
      • Fixed host WASD movement not syncing to other clients
    • V1.36 [released 2019-02-03]
      • Upgraded to Unity 2017.4.17 LTS
      • Mounts
      • Pet inherits from Summonable, PetItem inherits from SummonableItem, a base class for pets, mounts, etc.
      • Npc Revive works with all summonables now, not just pet
      • UINpcTrading assigns dragable so empty slots can't be dragged
      • UINpcRevive assigns dragable so empty slots can't be dragged
      • Pet uses owner's speed so that it can follow fast and mounted owners without teleporting
    • V1.37 [released 2019-02-05]
      • Upgraded to Unity 2018.2.20f1 and NET 4.X in Player Settings!
      • Updated Mirror to latest versions! Make sure to reassign all the missing NetworkIdentities and NetworkProximityChecker components for all your networked prefabs.
      • Player.UpdateClient skill usage: range is not multiplied with attackToMoveRangeRatio again anymore, because it already is before
      • ProjectileSkillEffect: initial position correction moved into CorrectInitialPosition function
      • UI: all ingame windows are now properly closed after disconnecting
      • NetworkNavMeshAgentRubberbanding simplified. Sends position every 100ms instead of path & velocity magic
      • NetworkNavMeshAgent: reuse HasPath detection
      • NetworkNavMeshAgent OnDeserialize now resets path when reading velocity to properly handle ResetPaths. Fixes a bug where monsters would slide on the client if they were killed while moving
      • Fix warrior not attacking monster when double clicking after reaching it. MOVING.SkillRequest doesn't interrupt movement or clear skill anymore. Instead it tries to cast when possible, but lets movement finish either way to not interfere with rubberbanding.
      • Fix client not being able to target other monsters after killing one because nextTarget was set after killing the monster again because OnSkillCasted was received BEFORE OnSerialize updated target.health:=0, which caused client to try cast another follow up attack, which caused UpdateIDLE to detect EventSkillRequest, which set nextTarget but forgot to clear it again if check didn't succeed (because monster was dead).
      • Player.cancelActionKey instead of checking for KeyCode.Escape everywhere
      • Escape key now cancels movement locally instead of on the server. Avoids a forced reset to the server's slightly behind position on local player.
      • UIPartyHud: use Entity.VisRange()
      • NetworkManagerMMO headless detection removed and feature enabled in Mirror's new NetworkManager instead
      • Cleared all name/guild/stun/quest overlays by default, so that they aren't shown for one frame when spawning and when moving into proximity
    • V1.38 [released 2019-02-21]
      • CanAttack: use 'is' instead of GetType() to work with inherited types too
      • NetworkProximityGridChecker: 30x performance increase when checking 1000 monsters and almost half GC
      • Less logging on server, to focus on the important messages instead
      • Entity.OnTriggerEnter/Exit made virtual so it can be overwritten by Player without 'new' keyword
      • Player.OnTriggerEnter checks if server before calling QuestsOnLocation to fix the warning messages that QuestsOnLocation was called on client
      • Added BuffsPanel under Buffs to properly hide them after disconnecting
      • Fix guild members not seeing their guild info after logging in again
      • Fix AreaBuffSkill / AreaHealSkill being applied multiple times if the candidate had multiple colliders
      • GetNearestStartPosition moved from Extensions to NetworkManager
      • Added respawn & spawn for archer too
      • NPC Revive now hides the main panel instead of a sub panel when walking away
      • Remove unused Extensions.FindRecursively
      • NetworkNavMeshAgentRubberbanding: TargetResetMovement not public anymore because it shouldn't be used from the outside
      • Player.rubberbanding field added and assigned
      • Rubberbanding: agent.ResetMovement replaced with rubberbanding.ResetMovement for 100% accurate detection. Removed .Reset detection from NetworkNavMeshAgentRubberbanding.Update to fix false positive detection.
      • Chat renamed to PlayerChat because it's a player component
    • V1.39 [released 2019-02-23]
      • Dungeon added
      • Portals added
      • PlayerChat AddMsgInfo added
      • New Party System code
      • Chat.CmdMsgParty/Guild/Whisper: use TryGetValue for performance
      • NetworkNavMeshAgent.OnDeserialize warning message fixed
      • SkillbarEntry, EquipmentInfo, ItemMallCategory structs made partial in case someone needs to extend them
      • Grid: remove HashSet at position if empty so we don't keep them in memory forever.
      • NetworkProximityGridChecker.OnDestroy: remove no matter what
      • Mirror updated to latest version
      • Set server tick rate to 20 and removed NetworkManagerMMO tick rate setting because Mirror handles it now
      • Database.CharacterLoad: don't show agent reset message all the time
      • Set each entity prefab's stunned overlay default text to 'Stunned!' again so that stunned text is shown again.
      • Utils: remove unused functions, improve syntax
      • Utils.IsNullOrWhiteSpace removed, NET 4.5 has string.IsNullOrWhiteSpace now.
    • V1.40 [released 2019-03-11]
      • Upgraded to Unity 2018.3.6 to avoid 2018.2 memory leak bug
      • Net 4.X syntax for getters
      • Database.ExecuteReader: add comment on why we keep the current solution
      • ProjectSettings detected too late
      • Mirror updated to latest version
      • NetworkManager.OnClientReceivePopup renamed to OnClientError
      • NetworkManager.ClientSendPopup renamed to ServerSendError
      • Remove MessageIds everywhere
      • CharacterDelete message inherits from IntegerMessage to simplify code
      • Use nameof(function) for Invoke/InvokeRepeating
      • Resaved scene for persistent sceneIDs
      • UI singletons: only assign once to fix Network Zone errors where UI elements would refer the destroyed panels instead of the ones in DontDestroyOnLoad
      • NetworkNavMeshAgent2D: add agent.ResetPath detection to fix dead monster sliding to player on clients
      • Monster.UpdateCASTING EventSkillFinished: fix NullReferenceException if target disappeared before checking target.health
    • V1.41 [released 2019-04-08]
      • Mirror updated to latest version (source based weaver, sceneid fix, protect against allocation attacks, SyncList<struct>, SyncDictionary
      • Use SyncList<struct> instead of SyncListSTRUCT everywhere
      • NetworkProximityGridChecker: playerController != null check not needed anymore
      • Documentation updated (recommend version)
      • Navigation2D updated to latest version
      • NetworkManagerMMO.OnServerAddPlayer: null check message.value bytes
      • UILogin: disabled host, dedicated buttons if webgl because webgl can't start a server
      • PlayerChat: local chat uses [ClientRpc] instead of sending a [TargetRpc] to each observer manually
      • [TargetRPC] NetworkConnection parameter removed everywhere because it's optional now
      • Grid renamed to Grid2D to avoid Unity 'Grid class already exists' warning
      • NavmeshPathGizmo renamed to NavMeshPathGizmo
      • Fixed NavMeshPathGizmo NullReferenceExeption after rebuilding scripts sometimes
      • Quest tooltips fixed
      • Changed enum types to byte to minimize bandwidth
      • Fix MissingReferenceException when clicking PartyHUD icon of a member that moved out of proximity range
      • Entity.DealDamageAt: don't allow a short stun to overwrite a long stun
      • Player.BalanceExpReward: balance for 20 levels up/down, instead of 10. this way a level 11 player gets a small amount of exp from a level 1 monster. less confusing this way.
      • Monster IDLE: EventSkillRequest doesn't clear target if skill is on cooldown/if monster is on low mana. this way the monster waits until it can cast. Fixes a bug where a monster would go back to random movement if the skill was on cooldown while trying to fight.
      • Skill.IsOnCooldown() added
      • Skill.IsReady checks cooldown AND casttime. this way skillbar skills are disabled while casting, avoids button smashing sending lots of packets to the server too.
      • Skill: use shorter syntax with =>
      • Monster.startPosition is now set in Start instead of Awake, because that's what Start is for. Fixes a bug where runtime spawned monsters weren't respawning properly.
      • UI: scroll view sensitivity increased from 1 to 10 everywhere for a better scrolling speed
      • Player.SelectionHandling: if double clicked an entity that we can't attack/loot/talk, then just move there. Fixes a strange user experience where if the user stands in a safe zone and double clicks a monster, nothing would happen. Instead it will move there now.)
      • Player.SelectionHandling simplified 'else walk' cases
      • Fixed UI Chat activating during WASD movement because the scrollbar Navigation setting was set to Automatic, also enabling keyboard navigation. Setting it to None disables it and fixes the bug.
      • Player default inventory items are now configurable with amount by using ScriptableItemAndAmount type
      • Player.CmdSwapInventoryEquip moved into separate SwapInventoryEquip function that can also be used on the server
      • EquipmentItem.Use reuses Player.SwapInventoryEquip function for proper validation and proper health > 0 checks etc.
      • Player.EquipmentInfo reuses ScriptableItemAndAmount for consistency. Make sure to reassign your player prefab's default equipment items and amounts when upgrading.
      • Entity.CanAttack raycasts the NavMesh to not allow attacks through walls anymore. Very important to prevent exploits where someone might try to attack a boss monster from another room, etc.
      • Player.CmdNpcTeleport: clear target
      • Player.AttributesSpendablePerLevel static variable added. Can be used to allow more than 1 attribute point per level. Allows 2 per level now.
      • UI Confirmation window, used in UICharacterSelection to delete characters with less risk for accidental clicks.
      • Database: characters.name field is created with COLLATE NOCASE so that CharacterExists is case insensitive and we can't create both 'Archer' and 'archer' characters.
      • NetworkManagerMMO: password salt is now configurable in the Inspector
      • Only players copy their name to the NameOverlay. Monsters/Npcs/Pets NameOverlay.text fields are set manually. Saves computations.
      • SkillEffect: remove unnecessary [HideInInspector] attributes for private variables
      • Quest.field0 renamed to progress. It's more obvious this way. Make sure to remove your old Database.sqlite file when upgrading.
      • Chat: use different text prefabs for different channels. This way the color, font type, background, etc. can be different for different channels.
      • PlayerChat: ChatMessage class converted to struct to avoid GC
    • V1.42 [released 2019-04-08]
      • Database converted to MonoBehaviour component that is added to the NetworkManager. This allows for future abstract Database type with different implementations like MYSQL. It also allows us to customize properties in the Inspector (like Database file name) and to make use of MonoBehaviour functions like Update. MAKE SURE TO MODIFY DATABASE ADDON HOOK FUNCTIONS TO NOT BE STATIC ANYMORE WHEN UPGRADING.
      • Database: add index on 'account' for 'characters.account' to avoid full scans when loading characters in CharactersForAccount function
      • Database: character.online field is set immediately after joining the world already. Otherwise it would only be set after the next CharacterSave call, which could easily take another 5-10 minutes.
      • Database: accounts.created DATETIME added for statistics
      • Database.IsValidAccount improved and renamed to TryLogin
      • Database: characters.online is now an INTEGER (0 or 1), and characters.lastsaved DATETIME added. This is more cleaner than writing the datetime as string only while online, and allows for lastsaved time checks even while offline.
      • LevelBasedValues: renamed to LinearInt/Float/Long and added exponential values
      • Player/Pet: max experience grows exponentially now
      • Sapling reward experience increased from 10 to 60
      • Player guild functions: use TryGetValue for performance
      • Player.guildName moved into Guild.name for more simple code
      • Database.SaveGuild uses guild struct directly to simplify code and avoid one members.ToList() call
      • Guild.Empty for ease of use
      • GuildSystem.cs similar to PartySystem.cs. Less magic, and guilds aren't resaved after every single broadcast anymore.
      • NetworkProximityGridChecker: force hidden doesn't need to add own connection anymore after latest Mirror change
      • PartySystem updates
      • Use out variable inline declarations
      • TargetProjectileSkill.GetEquipmentWeaponIndex moved to Entity and renamed to GetEquippedWeaponIndex
      • ScriptableSkill.requiredWeaponCategory replaces .requiresWeapon. Allows for weapon type specific skills, and skills that work with all weapon types. Make sure to change all archer skills requiredWeaponCategory to "WeaponBow" and all warrior skills requiredWeaponCategory to "WeaponSword" when upgrading.
      • Player.CalculateExperienceShare: comments improved
      • List.FindDuplicates extension added
      • ScriptableItem/Skill/Quest/Recipe: check for duplicates when loading from resources. This allows us to use subfolders safely.
      • Moved resources skills and items into subfolders
      • UIConfirmation, UIPopup singleton added
      • Player.InventoryOperationsAllowed() function added to keep all inventory swap/merge/split/use state checks in one place
      • Allow inventory operations while trading as long as not locked yet
      • Player.Craft: add [Server] tag
      • UI Crafting: show amount overlays in slots
      • Crafting with ingredient amounts. Make sure to reassign all recipe ingredients with their amount.
      • Entity.lastCombatTime added
      • Combat Disconnect delay prevents players from fleeing combat by disconnecting immediately. Player.allowedLogoutTime + remainingLogoutTime based on lastCombatTime added. NetworkManager only logs out the player after that time. UIShortcuts shows tooltip on clients too.
      • Player.CmdUnlockItem: add comment
      • Npc.quests changed to ScriptableQuestOffer with acceptHere and completeHere flags to make 'talk to npc' quests possible. Make sure to reassign all npcs quests with both accept&complete set to true when upgrading.
      • Guardian Npc added, and Find the Dungeon quest has to be finished at the guardian now.
      • Documentation updated (how to complete quests at different npcs)
    • V1.43 [released 2019-04-10]
      • Mirror reverted to the version before the Asset Store import bug
    • V1.44 [released 2019-04-11]
    • V1.45 [released 2019-04-24]
      • Fix slash skill while running causing animation to switch between CASTING and MOVING while still sliding to the final position
      • Mirror updated to latest version (2019 support, performance improvements.)
      • Database.CharactersForAccount simplified
      • NetworkManagerMMO.IsConnecting syntax improved
      • Extensions.FindIndex isn't needed anymore, it's in Mirror now
      • NetworkManagerMMO.SavePlayer: avoid expensive .ToList call by passing the IEnumerable to Database
    • V1.46 [released 2019-04-24]
      • Mirror updated to latest version (server-only movement fix)
    • V1.47 [released 2019-05-11]
      • Mirror updated to latest version
      • Database.Connect function called from NetworkManagerMMO.OnStartServer to only connect on server, not on clients. Fixes the WebGL error.
      • fix [Client] function 'System.Void ProjectileSkillEffect::Update()' called on server warning
    • V1.48 [released 2019-06-12]
      • NetworkManagerMMO: disable some log messages to not spam the server logs
      • Mirror updated to latest version (OnDataReceived ArraySegment to reduce allocations, forceHidden fix, Telepathy allocations reduced)
      • Database.OnApplicationQuit closes the connection to prevent locking.
    • V1.49 [released 2019-07-17]
      • Mirror updated to latest version (forceHidden fix, reader/serialization allocations reduced, performance improved, Telepathy IPv6 support)
      • Navigation2D updated to latest version
      • Entity: avoid Linq for performance and to reduce GC
      • Monster: avoid Linq
      • NetworkMessages: avoid Linq
      • Npc: avoid Linq
      • Party: avoid Linq
      • Player.IsOffender/IsMurderer: reuse GetBuffIndexByName
      • Player.HasLearnedSkill: reuse HasLearnedSkillWithLevel
      • Player: avoid Linq in hot path
      • Utils: avoid Linq where possible
      • Utils.InvokeMany: remove unnecessary ToArray call
      • UIUtils: avoid Linq
      • NetworkManagerMMO.DoServerDisconnect: don't log if no playercontroller because that happens if a player disconnects while in lobby.
      • NetworkManagerMMO.OnServerCharacterCreate: don't log invalid class/already exists/etc. on a live server
      • Entity.GetSkill/BuffIndexByName: avoid allocations
      • Entity.AddOrRefreshBuff: reuse GetBuffIndexByName to avoid allocations
      • BuffSkillEffect: reuse GetBuffIndexByName to avoid allocations
      • PetItem: fix health being assigned before level, causing spawned pets to always spawn with level 1 max health
    • V1.50 [released 2019-08-05]
      • Mirror updated to latest version (NetworkWriter pooling, SyncList no observers memory fix)
      • Grid2D: fix typo in 'neighbourOffsets'
      • NetworkProximityGridChecker: fix return value for if forceHidden
      • NetworkProximityGridChecker: reduce OnRebuildObservers allocations from 9.6KB to 8.1KB by reusing the HashSet
      • NetworkProximityGridChecker: reduce Grid2D Get allocations from 8.1KB to 3.5KB by reusing empty HashSet
      • Entity.RpcSkillCastStarted passes Skill to avoid situations where currentSkill wasn't synced in time
    • V1.51 [released 2019-12-10]
      • Mirror updated to latest version
      • Grid2D/GridChecker performance updates
      • NetworkManagerMMO.OnStart/StopServer: remove unnecessary base calls
      • NetworkAuthenticatorMMO component added to NetworkManager. takes care of all the authentication, and unauthenticated connections can't send messages (or bypass authentication) anymore; OnServerLogin addon hook renamed to OnServerConnect.
      • Player.OnDamageDealtToPlayer calls QuestsOnKilled for self and for all party members if a player was killed. This allows for kill-player type quests.
      • NetworkNavMeshAgentRubberbanding: send position each syncInterval no matter what. should avoid cases where client positions get slightly out of sync.
      • NetworkmanagerMMO.OnClientDisconnect: remove redundant StopClient call because base function already does so
      • NetworkManagerMMO: character creation code moved into separate function
      • reimplemented SQLite database for 10x performance improvements. make sure to delete your old database file when upgrading manually.
      • Item cooldowns reimplemented. Cooldown buffs aren't needed anymore, instead Player.itemCooldowns sync dictionary handles the cooldown categories now. Cooldown circle added to items in UI too.
      • Fixed all build warnings
      • ScriptableRecipe updated to latest uMMORPG 3D version. And the new .Find function is used everywhere now.
      • Crafting updated to latest uMMORPG 3D version
      • NetworkManagerMMO.GetNearestStartPosition: avoid Linq
      • Utils.GetNearestTransform
      • NetworkManagerMMO.MakeCharactersAvailableMessage: avoid Linq
      • NetworkManagerMMO.GetPlayerClasses: avoid Linq
      • NetworkManagerMMO: cache player classes in Awake
      • NetworkManagerMMO.GetStartPositionFor: avoid Linq and reduce GetComponent calls
      • GUIConsole updated to latest uMMORPG 3D version (activate with F12 hotkey etc.)
      • UI Item Mall Slot prefab: unlock button disabled by default so that too expensive items don't have their unlock button enabled for a short moment when switching categories.
      • Player.FindPlayerFromTradeInvitation: TryGetValue instead of looking it up twice
      • Fixed UI Chat activating during WASD movement again, this time for good. Chat InputField and Button Navigation settings were set from Automatic to None to not activate anymore.
    • V1.52 [released 2019-12-10]
      • Apathy, FallbackTransport with Apathy, Telepathy
      • Chat.SendGlobalMessage function for those who need it
      • UIChat.AddMessage: combined object creation with set parent
      • CmdPartyInviteAccept: use TryGetValue
      • CmdPartyInvite: use TryGetValue
      • Entity.InventorySlotsOccupied
      • Monster.HasLoot uses InventorySlotsOccupied
      • BuffSkill.SpawnEffect: only call GetComponent once
      • SelectionHandling: set nextDest if casting OR STUNNED
      • AreaBuffSkill: Physics.OverlapCircle uses NonAlloc version
      • AreaHealSkill: Physics.OverlapCircle uses NonAlloc version
      • Player.SelectionHandling: clear indicator if no parent code moved into separate function
      • Buff remainAfterDeath option for murderer and offender buffs
      • Player: cache Camera.main for performance to avoid FindObjectWithTag
      • Player.OnValidate sets equipmentInfo/defaultItems amount to 1 if valid
      • UICharacterInfo: speed via F1 mode to avoid situations where a really long floating point might be printed
      • UIShowToolTip: set text immediately to avoid a small empty tooltip being shown for one frame. can be reproduced with a low framerate and hovering over the inventory button.
      • BonusSkill variables renamed for consistency with EquipmentItem variable names
      • Player.UpdateServer_CASTING: remove redundant currentSkill clearing
      • Guild, GuildSystem: avoid FindIndex for performance/gc
      • Summonable.GetOwnerItemIndex to avoid FindIndex allocations
      • Equipment<->Inventory Merge added too, so arrows can be merged onto the arrow stack in the Inventory
      • Player Equipment: SwapInventoryEquip: add missing InventoryOperationsAllowed check
      • UIPetStatus: onClick targets the pet
      • Player Quests: use CompareTag to avoid allocations
      • Utils.ParseLastNoun: cache RegEx
      • NetworkBehaviourNonAlloc to avoid .name allocations
      • ScriptableObjectNonAlloc to avoid .name allocations
      • UI: only build tooltip while tooltip is visible. reduces UI allocations by 10x and improves performance
      • Player.CmdSetGuildNotice: set wait time no matter what
      • Player.CmdGuildInviteTarget: set wait time no matter what
      • Player.CmdPartyInvite: reset wait time no matter what
      • TargetHealSkill.CheckDistance: check distance to corrected target so that CheckDistance can be used by skillbar without calling CheckTarget and setting the target first.
      • TargetBuffSkill.CheckDistance: check distance to corrected target so that CheckDistance can be used by skillbar without calling CheckTarget and setting the target first.
      • Player state machine: CASTING state EventMoveStart doesn't return CASTING anymore. fixes a bug where EventSkillFinished would never happen while moving because EventMoveStart would always fire and not allow the code further below.
      • Disabled Unity hardware analytics in player settings
      • NetworkNavMeshAgentRubberbanding2D: rename ValidateMove to IsValidDestination
      • Pet commands moved into Pet class thanks to Mirror's new authority code
      • Entity.CancelCastSkill function that is used by Player, Monster, Pet.
      • Canceling a skill cast resets cast time. Fixes a bug where if a player would cancel a cast for a 10s cast time skill after 1s, the player wouldn't be able to attempt another cast for 9 more seconds.
      • UIDragAndDropable: currentlyDragged made static so it can be checked by other components too
      • Fixed QuestsOnLocation warning on clients
      • Fixed more build warnings
    • V1.53 [released 2020-01-09]
    • V1.54 [released 2020-02-07]
      • Mirror updated to latest version (fixed all open Mirror bugs, fixed a bug where isClient would always be false in OnDestroy, which caused the Skillbar not to be saved)
    • V1.55 [released 2020-02-21]
      • Apathy updated to latest version. Fixes a bug where a failed connect wouldn't show a Disconnected message in GetNextMessages. Also fixes a race condition when spamming Connect/Disconnects.
      • fix possible exploit where nontradeable items could be traded. IsInventorySlotTradeable now checks if item is tradeable.
      • InventoryOperationsAllowed: don't allow while TRADING anymore. this way offer indices don't change when swapping inventory items. otherwise it's possible to swap a non-tradable item into the offers. Trade would be canceled when trying to trade it, but it's still too weird.
    • V1.56 [released 2020-03-15]
      • Apathy updated to latest version. Fixes a bug where calling server.GetNextMessages after server.Disconnect(connectionId) would log an EBADF error because GetNextMessages would try to close an already closed socket.
      • Apathy moved out of Mirror folder for easier Mirror updates
      • Mirror updated to v10.4.10
      • fix: Experience.BalanceExpReward calculation would return negative rewards for max level difference that aren't 10, like the default 20. Max difference is now an optional parameter so it can be tested easily.
    • V1.57 [released 2020-03-25]
      • fix: https://github.com/vis2k/uMMORPG/issues/33 NetworkProximityGridChecker.OnDestroy only removes connection from grid if the identity is the connection's main player (not a pet that is owned by the player). Fixes a bug where despawning a pet would make all surrounding npcs/monsters disappear for a while.
    • V1.58 [released 2020-04-12]
      • fix: TargetProjectileSkill works for monsters without weapons now too
      • Player prefabs: SpriteRenderer, Animator moved into ChildRoot. Make sure to reassign Player/EquipmentLocation/SortByDepth animators/renderers
      • Wild Horse: seat gizmo added
      • Mount: added seat property and assigned to the seat child object
      • Player: mountSeatOffset + spriteToOffsetWhenMounted properties. The player sprite is now offset to be on top of the mount. Previously the mount was offset to be below the player, causing the position to be the player position to seem off all the time.
    • V1.59 [released 2020-06-17]
      • Apathy updated to latest version. Greatly reduces allocations per connection and speeds up connects.
    • V1.60 [released 2020-07-03]
      • Upgraded to Unity 2019.4 LTS
    • V1.61 [released 2020-07-09]
      • Fixed Welcome script build warning
      • Apathy updated V1.12
    • V1.62 [released 2020-08-23]
     
    Last edited: Dec 8, 2020
  2. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Questions or suggestions? Let me know!

    I will post here as soon as uMMORPG 2D was accepted by the Asset Store team.

    Here is an additional UI screenshot:
    ui3.png
     
    adiif1 likes this.
  3. jackmememe

    jackmememe

    Joined:
    Jan 21, 2016
    Posts:
    138
    Looking pretty cool.
    Some nice graphics as well.
     
  4. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Thanks! I didn't create the graphics myself, but they are still very nice I agree.
     
  5. adiif1

    adiif1

    Joined:
    Jun 8, 2015
    Posts:
    5
  6. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Soon!
     
  7. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    uMMORPG 2D is now on the Asset Store!
    I hope you all like it as much as uMMORPG!
     
    Last edited: Jul 25, 2017
  8. coverpage

    coverpage

    Joined:
    Mar 3, 2016
    Posts:
    385
    Link doesn't work

    Now it does, congrats. Its very tempting. Any package price for both 3d and 2d?
     
    Last edited: Jul 25, 2017
  9. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    There is no discount option in the publisher panel, sorry. But you do get Navigation2D for free when buying uMMORPG 2D so that's something I guess.
     
  10. takapi

    takapi

    Joined:
    Jun 8, 2013
    Posts:
    79
    Does uMMORPG 2D have Warehouse?:)
     
  11. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Progress:
    uMMORPG V1.1 was submitted for review:
    • Upgraded to Unity 2017.1. Make sure to set the API Compatibility Level to '.Net' when upgrading
    • Updated documentation
    • Logo updated
    • Login UI: Logo position adjusted
    • Chat: removed old 'guild not implemented' comment
    • Murderer skill tooltip 'buffs health per second' fixed
    • NetworkManagerMMO: headless check only starts a server if it wasn't started already
    • NetworkManagerMMO: OnClientSceneChanged overwritten with empty function to prepare for Network Zones
    • NetworkManagerMMO: OnServerDisconnect base function isn't called directly anymore to avoid the Debug.LogError that shows when a client disconnects
    • Database: added character 'online' field so that external applications can check if a character is currently online without talking to the server directly.
    • FaceCamera: only enabled while visible to improve performance with huge amounts of entities
    • NetworkProximityCheckerCustom: layer mask added to SphereCast to only check the Player layer. Greatly improves peformance with huge amounts of entities. Make sure to assign the correct layer in the Inspector when upgrading.
    • Physics Collision Matrix: IgnoreRaycast layer only collides with Player layer now to make sure that AggroAreas don't do any unnecessary casts. Greatly improves performance with huge amounts of entities too.
    • Entity.Update: moved check into separate IsWorthUpdating function.
    • Entity.IsWorthUpdating is used in Monster.LateUpdate to improve performance with huge amounts of entities.
    • Delete AggroArea layer because it's not used anymore

    Not by default, but the addon on the forum might work.
     
  12. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    I hope we see a lot of new 2D MMOs from that.
     
  13. pushingpandas

    pushingpandas

    Joined:
    Jan 12, 2013
    Posts:
    1,419
    hey vis2k whats next after 3d and 2d mmo? VR mmo? :D
     
  14. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Will see about that..
     
  15. pushingpandas

    pushingpandas

    Joined:
    Jan 12, 2013
    Posts:
    1,419
    question. How is the map created in 2d? Is it sprite on sprite or some tile map editor needed?
     
  16. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Just sprites dragged into the world as GameObjects. No map editor used, you can use any one that you like.
     
    pushingpandas likes this.
  17. joncrzo

    joncrzo

    Joined:
    Sep 26, 2015
    Posts:
    30
    I already asked this on the ummorpg forum, but I think it belongs here.

    My question is, Can I make a platform 2D game with this one? If yes, do I need to add any extra modifications or would it work out of the box? Something like MapleStory.

    Also in the video, I noticed when you take the sword from the equipment window, it doesn't do anything on the character. The character isn't equipping anything.
     
  18. takapi

    takapi

    Joined:
    Jun 8, 2013
    Posts:
    79
    Hi, vis2k. thx, your reply. :)
    If this asset has Warehouse, I think everyone will be delighted.

    and,

    I can see this display after deleting my character.
    What should I do ?
     

    Attached Files:

  19. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    I never tried to make a sidescroller with it so you'd probably have to modify a few things. Mainly navigation I suppose, since the current one is for top-down games.

    The character is equipping the sword, but the sword sprite only shows in the attack animation right now. You could modify the sword sprite to show in the other animations too if needed.

    Chose another name. Characters are always soft deleted, so they still exist in the database but with a 'deleted=1' flag. This way you can restore them if one of your customers accidentally deletes one.
     
  20. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Windows users: there's an issue with an invalid character in one of the file names on windows systems. The fix will be in V1.1. If you can't import the package then send me your order number.
     
  21. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Update:
    V1.1 [released 2017-07-26]
    • Upgraded to Unity 2017.1. Make sure to set the API Compatibility Level to '.Net' when upgrading
    • Windows invalid file path character fixed
    • Updated documentation
    • Logo updated
    • Login UI: Logo position adjusted
    • Chat: removed old 'guild not implemented' comment
    • Murderer skill tooltip 'buffs health per second' fixed
    • NetworkManagerMMO: headless check only starts a server if it wasn't started already
    • NetworkManagerMMO: OnClientSceneChanged overwritten with empty function to prepare for Network Zones
    • NetworkManagerMMO: OnServerDisconnect base function isn't called directly anymore to avoid the Debug.LogError that shows when a client disconnects
    • Database: added character 'online' field so that external applications can check if a character is currently online without talking to the server directly.
    • FaceCamera: only enabled while visible to improve performance with huge amounts of entities
    • NetworkProximityCheckerCustom: layer mask added to SphereCast to only check the Player layer. Greatly improves peformance with huge amounts of entities. Make sure to assign the correct layer in the Inspector when upgrading.
    • Physics Collision Matrix: IgnoreRaycast layer only collides with Player layer now to make sure that AggroAreas don't do any unnecessary casts. Greatly improves performance with huge amounts of entities too.
    • Entity.Update: moved check into separate IsWorthUpdating function.
    • Entity.IsWorthUpdating is used in Monster.LateUpdate to improve performance with huge amounts of entities.
    • Delete AggroArea layer because it's not used anymore
     
  22. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Update:
    V1.2 [released 2017-08-22]
    • Upgraded to Unity 2017.1.0p1 for important UNET fixes
    • Entity Awake: removed outdated comment
    • Entity: added virtual Start function, Monster and Player use override for theirs
    • Entity.Start disables animator if isClient is false. Greatly increases server performance.
    • UIShowTooltip: always updates tooltip text to make sure that swapped out items' tooltips are shown immediately
    • Utils.GetMethodsByPrefix uses built-in KeyValuePair now. Removed Pair workaround
    • Player.CmdUseInventoryItem: added OnUseInventoryItem hook
     
  23. pushingpandas

    pushingpandas

    Joined:
    Jan 12, 2013
    Posts:
    1,419
    Ive read in the review that the archer class is missing? Is that true?
     
  24. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Yes, I copied the description from uMMORPG and forgot to remove the archer part, sorry.
    There's no archer right now, I have to buy a sprite first.
     
  25. pushingpandas

    pushingpandas

    Joined:
    Jan 12, 2013
    Posts:
    1,419
    oh ok. Please add archer! I need that class
     
  26. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Progress: finished the new Guild system code. It will be way easier to understand and maintain and a player's guild info won't be synchronized to all observers anymore, only to the player that needs it.

    2D MMORPG Sale: buy uMMORPG 2D and get all of the noobtuts.com 2D tutorials for free!
    Offer lasts until next Sunday. Send me your order number after purchasing to get the noobtuts tutorials.
     
  27. OulsiuenBeneigr

    OulsiuenBeneigr

    Joined:
    Sep 18, 2017
    Posts:
    14
    Hello,

    I bought uMMORPG 2D a few hours ago. I'm not able to access any of the files! I've been send e-mails to support. Is there a way to communicate live (Twitter? My Cell?)? Please, let me know.

    Oulsiuen Beneigr
     
  28. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Hi,
    Unity is responsible for the sale and for providing you with the files. You should probably just try again today or maybe try on a different computer or a different Unity version. I didn't hear anyone else having issues with the download yet.

    Don't worry though, you'll get it one way or another if you bought it! Ideally from the store though, so that you can get updates easily.
     
  29. OulsiuenBeneigr

    OulsiuenBeneigr

    Joined:
    Sep 18, 2017
    Posts:
    14
    Ok, I don't even see a download button. The game opens with unity, but it doesn't make sense (at least to me completely as of yet). I'll definitely try again. Does it have anything to do with me having a Macbook Pro 13 (just wondering)?
     
  30. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Which payment method did you use?
    Nah mac works fine, I have one too.
     
  31. OulsiuenBeneigr

    OulsiuenBeneigr

    Joined:
    Sep 18, 2017
    Posts:
    14
    I paid by debit card in a Firefox browser.
     
  32. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Do you see the payment status somewhere? Debit card usually takes a few days to go through, doesn't it?
     
  33. OulsiuenBeneigr

    OulsiuenBeneigr

    Joined:
    Sep 18, 2017
    Posts:
    14
    I got a receipt for my payment. The payment has gone through.
     
  34. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Did you buy something on the store before? Do you know how to download afterwards?
    What does it say when you log in on the asset store and go to the uMMORPG 2D package? Isn't there a download button?
     
  35. OulsiuenBeneigr

    OulsiuenBeneigr

    Joined:
    Sep 18, 2017
    Posts:
    14
    This is my first time making a purchase from the asset store. There isn't a download button. It only shows... (Check the attachment)...
     

    Attached Files:

  36. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Go there from your computer and then press 'Open in Unity'!
     
  37. OulsiuenBeneigr

    OulsiuenBeneigr

    Joined:
    Sep 18, 2017
    Posts:
    14
    I do. The file doesn't open properly or I'm not accessing the files properly.
     
  38. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    What error message do you see?
     
  39. OulsiuenBeneigr

    OulsiuenBeneigr

    Joined:
    Sep 18, 2017
    Posts:
    14
    I don't see an error message. I don't see any of the files: I'm not able to locate any of them.
     
  40. OulsiuenBeneigr

    OulsiuenBeneigr

    Joined:
    Sep 18, 2017
    Posts:
    14
    I figured it out! I had to click "Open with Unity" then select the Unity application on my own then "Download" became available. Now, I'm trying to figure out how to create the terrain!
     
  41. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Good to hear.
     
  42. OulsiuenBeneigr

    OulsiuenBeneigr

    Joined:
    Sep 18, 2017
    Posts:
    14
    Why is everything working in 3D? I want to make a 2D game.
     
  43. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
  44. OulsiuenBeneigr

    OulsiuenBeneigr

    Joined:
    Sep 18, 2017
    Posts:
    14
    I bought the second package--the 2D one!
     
  45. OulsiuenBeneigr

    OulsiuenBeneigr

    Joined:
    Sep 18, 2017
    Posts:
    14
  46. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    What do you mean with 'why is everything working in 3D' then?
     
  47. OulsiuenBeneigr

    OulsiuenBeneigr

    Joined:
    Sep 18, 2017
    Posts:
    14
    I'm not really accessing the 2D files. I'm literally a *looks left then right then speaks in a lower voice* ... noob. At the same time, I'm not-- :/ -- I'm looking to really get into drag and drop mode.
     
  48. OulsiuenBeneigr

    OulsiuenBeneigr

    Joined:
    Sep 18, 2017
    Posts:
    14
    I'm not really accessing the 2D files. I'm literally a *looks left then right then speaks in a lower voice* ... noob. At the same time, I'm not-- :/ -- I'm looking to really get into drag and drop mode.
     
  49. OulsiuenBeneigr

    OulsiuenBeneigr

    Joined:
    Sep 18, 2017
    Posts:
    14
    I'm still attempting to set up the Navigation so I can start creating the 2D realm.
     
  50. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Progress: next version submitted for review:

    V1.3 [in development]
    • Upgraded to Unity 2017.1.1p1 for important bug fixes
    • NavMeshPathfindingIterationsPerFrame scripts added and iterations increased to 5000
    • CopyPosition script syntax improved
    • Name/Quest/Guild overlays are now updated from Entity/Npc/Player scripts. Removed all the unnecessary text mesh update scripts. Make sure to assign the components in the Inspector when updating.
    • Database.SaveGuild: fixed missing @ in front of character and rank
    • Reimplemented Guild system. Moved most of it to Guild.cs and used a TargetRpc to avoid sending guild info to observers (huge bandwidth improvement)
    • Player: public Chat component now assigned in the Inspector instead of GetComponent calls
    • Player.FindOnlineGuildMembers removed; Chat uses onlinePlayers directly
    • Chat player component is now assigned in the Inspector to avoid GetComponent call

    I am not sure what you mean. Maybe look through some Unity 2D tutorials? For example from my noobtuts.com site.

    Go to Window->Navigation2D