일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Unreal Engine
- ability task
- 게임 개발
- boss monster
- Race condition
- MLFQ
- 게임개발
- Rr
- 운영체제
- gameplay ability system
- gas
- MAC
- Multiplay
- Delegate
- 유스케이스
- animation
- 언리얼 엔진
- 메카님
- unity
- Security
- DSP
- 언리얼엔진
- Replication
- dirty cow
- DP
- stride
- CTF
- photon fusion2
- 유니티
- ret2libc
- Today
- Total
목록photon fusion2 (14)
다양한 기록
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/mxl1A/btsL7t3owIy/b5ar3eaRjK1oHNB5Sa0yx1/img.png)
외형은 판타지 영화에 나올법한 엘프 궁수를 생각하면서 만듦 궁수 캐릭터는 바라보는 방향으로 화살을 쏨그런데 2D라 바라보는 방향을 x, y축 상에서 나타내면 어딜 보는지 알기가 힘듦⇒ 바라보는 방향을 화살표로 나타냄화살표는 예전에 다른 게임(Parring Sword) 만들 때 그렸던 거 재활용 using System.Collections;using System.Collections.Generic;using UnityEngine;public class ArrowVector : MonoBehaviour{ public Vector2 TargetDirection { get; set; } Vector3 pos; private void Awake() { TargetDirection..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bagcpl/btsL8IFtk9X/fE6gVFTvTxx6EcBkslV0bk/img.png)
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..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cUUu9O/btsL7yp2zre/7ElBNwZJPIlXRgHaKkua80/img.png)
우측의 버튼을 누르면 자신에게 할당된 유닛들의 타겟과 공격 가능 설정을 가능RPC로 권한을 가진 메인 클라이언트가 값을 변경하도록 함 이런 구조이게 좀 문제가 있는 구조인데, Target을 싱글톤 패턴으로 매니저 만들어서 그쪽에서 관리를 하게 했어야 한다원래는 Spawner가 플레이어 당 하나만 존재하는 기획이라 이렇게 짜놨는데, 스포너가 여러개가 되면서 코드의 품질이 떨어졌다 using Fusion;using UnityEngine;using UnityEngine.UI;using FusionHelpers;namespace Agit.FortressCraft{ public class ChangeTarget : NetworkBehaviour { private NormalUnitSpawn..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cQRwVm/btsL7AnOLOA/ECMrtHLlOHHMl2MOKrx340/img.png)
맵이 간단해서 굳이 벨만 포드 등의 길찾기 알고리즘을 쓸 필요가 없음이렇게 생긴 맵이고, 유닛은 가운데에 있는 지역을 움직임가운데애 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; } }}어택 컬라이더에 설정된 대미지가 바디 컬라이더에 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/oxyOY/btsL8Ntbb3b/Hfsz7SPWyGJO8Ng9ziCaDK/img.png)
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; ..