PageSourceSearch

https://elmarathstudio.netlify.app/assets/js/bf4483e3.5c6f8566.js

js elmarathstudio.netlify.app collected 2026-10-03 10:42:19 UTC 11,668 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5324],{12066:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/OnActionPhaseUpdated-6904b7e5278b6548f7c5f7e554d705b9.png"},18124:(e,t,n)=>{n.d(t,{A:()=>i});const i="data:image/png;base64,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"},28453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>r});var i=n(96540);const s={},a=i.createContext(s);function o(e){const t=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(a.Provider,{value:t},e.children)}},29205:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>o,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"Modular-Action-System/Actions/How To Create And Use Actions","title":"How To Create And Use Actions","description":"This tutorial will include Data Assets. Which you don\' t know already you can check out from Unreal Engine Documentation About Data Assets.","source":"@site/docs/Modular-Action-System/Actions/How To Create And Use Actions.md","sourceDirName":"Modular-Action-System/Actions","slug":"/Modular-Action-System/Actions/How To Create And Use Actions","permalink":"/docs/Modular-Action-System/Actions/How To Create And Use Actions","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"sidebar_position":2},"sidebar":"tutorialSidebar","previous":{"title":"What are Actions For MAS?","permalink":"/docs/Modular-Action-System/Actions/"},"next":{"title":"Decide Montages","permalink":"/docs/category/decide-montages"}}');var s=n(74848),a=n(28453);const o={sidebar_position:2},r="How To Create And Use Actions",c={},d=[{value:"Creating the First Action",id:"creating-the-first-action",level:2},{value:"On Action Phase Updated",id:"on-action-phase-updated",level:3},{value:"On Action Gets Overriden",id:"on-action-gets-overriden",level:3},{value:"Action Instance Data Asset Preview",id:"action-instance-data-asset-preview",level:2},{value:"Default Action Data Asset Variables",id:"default-action-data-asset-variables",level:3}];function h(e){const t={a:"a",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"how-to-create-and-use-actions",children:"How To Create And Use Actions"})}),"\n",(0,s.jsxs)(t.p,{children:["This tutorial will include ",(0,s.jsx)(t.em,{children:"Data Assets"}),". Which you don' t know already you can check out from ",(0,s.jsx)(t.a,{href:"https://dev.epicgames.com/documentation/en-us/unreal-engine/data-assets-in-unreal-engine?application_version=5.2",children:"Unreal Engine Documentation About Data Assets"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"creating-the-first-action",children:"Creating the First Action"}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"DecideMontageImage",src:n(18124).A+"",width:"64",height:"64"})}),"\n",(0,s.jsxs)(t.p,{children:["Every Action Blueprint Data Asset we create is from ",(0,s.jsx)(t.strong,{children:"MAS-Action-Base"}),". Start by creating a child of this blueprint.\nThe blueprint you created should broadly define the Action it is representing."]}),"\n",(0,s.jsxs)(t.p,{children:["For Ex: name could be ",(0,s.jsx)(t.em,{children:"BP_Action_Attack"}),". Because of this is an ",(0,s.jsx)(t.em,{children:"Attack"}),", ",(0,s.jsx)(t.em,{children:"Light Attack"}),", ",(0,s.jsx)(t.em,{children:"Heavy Attack"})," could be an instance of this blueprint. All you have to do in these instances is, change the ",(0,s.jsx)(t.em,{children:"Decide Montage"}),", and other variables public to this action. And all the default values, and functions will work inside in this BP, with the values you populated in the instances."]}),"\n",(0,s.jsxs)(t.p,{children:["After you have created ideally you should override the 2 functions named ",(0,s.jsx)(t.strong,{children:"OnActionPhaseUpdated"})," and ",(0,s.jsx)(t.strong,{children:"OnActionGetsOverriden"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"on-action-phase-updated",children:"On Action Phase Updated"}),"\n",(0,s.jsx)(t.p,{children:"With this function you have access to these inputs:"}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"OnActionPhaseUpdatedImage",src:n(12066).A+"",width:"462",height:"531"})}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Input Character"}),": The character who is performing this action."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Input Action Chain Updated"}),": The chain is being played."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Input Playing Montage"}),": The current montage selected for the action."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Input New Action Phase"}),": The newly switched action phase (",(0,s.jsx)(t.em,{children:"Initial"}),", ",(0,s.jsx)(t.em,{children:"Main"}),", ",(0,s.jsx)(t.em,{children:"Closure"}),", ",(0,s.jsx)(t.em,{children:"None"}),"(",(0,s.jsx)(t.em,{children:"Finished"}),"))"]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"With these inputs, you can change, update, anythink you want about the world since you know everthing about the Action, the Character."}),"\n",(0,s.jsx)(t.h3,{id:"on-action-gets-overriden",children:"On Action Gets Overriden"}),"\n",(0,s.jsx)(t.p,{children:"With this function you have access to these inputs:"}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"OnActionPhaseOverridenImage",src:n(49965).A+"",width:"553",height:"531"})}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Input Character"}),": The character who was performing this action."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Input Overriden by Action"}),": Newly action got the current action's place."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Input Overriden by Chain"}),": Newly chain got the current action's place."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"Perfect place to resetting back to the defaults."}),"\n",(0,s.jsx)(t.p,{children:"If you are making a combo for example: Because you know the overriden by action, you may 
1not reset back to the defaults if the overriden by action and current action has the same tag. A Quick way to create combo system."}),"\n",(0,s.jsx)(t.h2,{id:"action-instance-data-asset-preview",children:"Action Instance Data Asset Preview"}),"\n",(0,s.jsxs)(t.p,{children:["Let's look at a gameready asset to be used as a ",(0,s.jsx)(t.em,{children:"Overhead Light Attack"})," Action, which is a child of ",(0,s.jsx)(t.em,{children:"Action_Attack"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["The combat section is created by ",(0,s.jsx)(t.em,{children:"Action_Attack"})," so your custom variables will look in these instances too."]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"ActionDataAssetPreviewImage",src:n(96799).A+"",width:"1055",height:"705"})}),"\n",(0,s.jsx)(t.h3,{id:"default-action-data-asset-variables",children:"Default Action Data Asset Variables"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Can Not Be Canceled Duration"}),": The duration that, when this action gets started to play, it wont get canceled even if more prior actions are in the queue."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Priority"}),": You can define priority per phase. The Action System Component will look for the most prior action in the queue from newly added to latter added. And if the queue has a prior action (in this case system will look for its ",(0,s.jsx)(t.em,{children:"Initial"})," priority) than the current action's phase priority, queued action will be played. ",(0,s.jsx)(t.em,{children:"Higer in the list prior it is"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Gameplay Attributes"}),': This is just a empty Data Asset. Which you may want to hold some of your global variables regarding to the Action. To use in the functions: "On Action Phase Updated" and "On Action Gets Overriden".']}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Action Tag"}),": A ",(0,s.jsx)(t.a,{href:"https://docs.unrealengine.com/4.26/en-US/ProgrammingAndScripting/Tags/",children:"gameplay tag"})," for holding a relavent data for the action. Useful for detection of AI's actions, or creating basic state Action system (eg: If previous action has a tag do this action etc.)."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Montage Decider"}),": This will decide the montage of the action. We will go in detail about this data asset in the next part."]}),"\n"]})]})}function l(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},49965:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/OnActionGetsOverriden-61134629ff1a9b936be5ba984490bf6e.png"},96799:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/ActionDataAssetPreview-cb74a16711d4b1f9adf47a416a025309.png"}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.