일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- animation
- Aegis
- gameplay effect
- rpc
- Unreal Engine
- 유니티
- 언리얼 엔진
- MAC
- 언리얼엔진
- 보안
- CTF
- Multiplay
- gas
- gameplay tag
- nanite
- ability task
- stride
- photon fusion2
- widget
- 게임 개발
- UI
- C++
- os
- attribute
- 게임개발
- gameplay ability system
- local prediction
- unity
- Replication
- listen server
- Today
- Total
목록2025/02 (48)
Replicated

파란 버튼 누르면 돈이 충분히 있을 경우 캐슬 스폰 가능 using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;namespace Agit.FortressCraft{ public class SpawnCastleCostManager : MonoBehaviour { public static SpawnCastleCostManager Instance { get; set; } [SerializeField] private Text costText; public List costByLevel = new List(); public int le..

Unit과 Arrow 등 많은 오브젝트에 오브젝트 풀링이 적용되어야 함유니티 프로파일러 써보면 이거 없으면 오브젝트 만들 때마다 부하가 확 심해지는 걸 확인 가능 일단 네트워크 오브젝트는 일반적인 오브젝트 풀링으로 안된다그 이유는 unactive해도 동기화가 안되고 그냥 자기 꺼에서만 꺼지고, 다른 클라이언트의 화면에는 그냥 있기 때문이다즉, SetActive 등의 행위가 RPC로 행해져야 한다 https://doc.photonengine.com/fusion/current/manual/advanced/network-object-provider Fusion 2 NetworkObjectProvider | Photon EngineWhen Spawned is called, the INetworkObjectPro..

우측의 버튼을 누르면 자신에게 할당된 유닛들의 타겟과 공격 가능 설정을 가능RPC로 권한을 가진 메인 클라이언트가 값을 변경하도록 함 이런 구조이게 좀 문제가 있는 구조인데, Target을 싱글톤 패턴으로 매니저 만들어서 그쪽에서 관리를 하게 했어야 한다원래는 Spawner가 플레이어 당 하나만 존재하는 기획이라 이렇게 짜놨는데, 스포너가 여러개가 되면서 코드의 품질이 떨어졌다 using Fusion;using UnityEngine;using UnityEngine.UI;using FusionHelpers;namespace Agit.FortressCraft{ public class ChangeTarget : NetworkBehaviour { private NormalUnitSpawn..

맵이 간단해서 굳이 벨만 포드 등의 길찾기 알고리즘을 쓸 필요가 없음이렇게 생긴 맵이고, 유닛은 가운데에 있는 지역을 움직임가운데애 X 형태의 다리를 건너도록 패스 파인딩을 하면 됨=> 중간에 지점을 하나 넣어주기 정확히 문제가 되는 상황은 무엇이냐?위 이미지처럼 다리 위에서 타겟 세팅을 바꾸는 경우임특정한 지역 (A, B, C, D) 위에선 바뀌어도 상관이 없음어차피 바로 연결되어 갈 수 있기 때문 하지만 다리 위에서는 일직선 상으로 갈 수가 없음⇒ middlePoint를 두고, 현재 유닛 위치를 기준으로 가장 가까운 지역으로 가서 그곳에서 목표지점으로 다시 이동하게 만들면 됨두번째 문제: 가운데 교차하는 다리에서는 어떻게 움직일 것이냐? 교차 지점의 다리에서 middlePoint 지정을 잘못하면 오히..
대미지를 주고 받는 건 AttackCollider, BodyCollider 두가지 스크립트의 상호작용으로 관리 using System.Collections;using System.Collections.Generic;using UnityEngine;using Fusion;namespace Agit.FortressCraft{ public class AttackCollider : NetworkBehaviour { public float Damage { get; set; } public string TargetUnit { get; set; } public string OwnType { get; set; } }}어택 컬라이더에 설정된 대미지가 바디 컬라이더에 ..

대미지를 받았을 때 하얗게 번쩍이는 효과를 주려고 했는데,문제는 스프라이트 렌더러의 색상을 바꿔서는 불가능색상 변화가 더하기 방식이 아니라 곱하기 방식이기 때문에 셰이더를 하나 만들어서 머테리얼을 만들어야 함 Shader "PaintWhite"{ Properties { _MainTex("Particle Texture (Alpha8)", 2D) = "white" { } } Category { Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } Blend SrcAlpha One Cull Off Lighting Off Z..

using Fusion;using UnityEngine;namespace Agit.FortressCraft{ public class NormalUnitGenerator : NetworkBehaviour { private TickTimer spawnTimer { get; set; } public float SpawnTime { get; set; } NormalUnitSpawner spawner; public override void Spawned() { spawner = GetComponent(); SpawnTime = NormalUnitDataManager.Instance.SpawnTime; ..

서버 말고는 GravityDirection이 동기화가 안되어 있었다CharacterMovementComponent는 위치나 가속도 등의 핵심 정보만 동기화한다고 함 방법1. 다시 캐릭터로 중력 세팅 책임 옮기기이건 그냥 코드가 마음에 안듦이걸 Character의 OnActorBeginOverlap이나 Tick에서 처리하기 싫음기각 방법2. RPC로 GravityDirection 세팅시키기Tick이든 Timer든, 짧은 간격으로 RPC 날리는 건 트래픽이 너무 많아져서 싫음포톤 퓨전2에서 Update에 넣어두고 RPC 너무 날려서 게임 꺼진 적 있어서 꺼려짐기각 방법3. 게임플레이 어빌리티로 만들어서 Gravity Core에 들러붙는 능력으로 만들기Character 클래스의 책임도 덜해지고,각 캐릭터를 ..