일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- Multiplay
- nanite
- Unreal Engine
- os
- 게임 개발
- stride
- UI
- CTF
- attribute
- gas
- gameplay ability system
- network object pooling
- listen server
- rpc
- Aegis
- 언리얼 엔진
- MAC
- 게임개발
- 언리얼엔진
- map design
- unity
- animation
- 보안
- ability task
- 유니티
- gameplay tag
- Replication
- gameplay effect
- photon fusion2
- local prediction
- Today
- Total
목록Unreal Engine (80)
Replicated

미리보기 박스 병합하고 테스트하는 중인데 버그 발생아마 충돌처리 관련하여 생기는 버그로 보임 No Collision 안되어 있었음이거 하니까 해결 되긴 했는데 위에 턱 부딪힌 것처럼 보인다 분명 같은 상위 타겟 액터를 가질 것이고,상위 타겟 액터는 직접 No Collision 설정을 해뒀는데 무슨 문제가 발생한 걸까? 생각해보니 저건 버그가 아니다시간이 정지된 것이다 애초에 시간을 정지하는 공간에 닿았으니 멈추는게 당연하다 사실 두번째 사항을 먼저 찾아서 테스트하다 첫번째 버그를 찾았다버그가 아닌데 버그인줄 알았던 걸 테스트하다 진짜 버그를 찾는 상황이 은근히 자주 발생하는 것 같다

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..

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

GAS나 Multiplay 같이 있는 예시가 그렇게 많진 않아 세팅하기 좀 어렵다Lyra는 코드 자체가 좀 너무 많아 참고하려면 시간이 많이 걸릴 것이다그래서 여기저기 뒤져보면서 코드 정리해서 만들어놨다 1. 기본 설정 (일반 멀티플레이 설정이랑 같고, GAS랑 관계 없이 기본 설정)bReplicates = true 및 컴포넌트들에 리플리케이션 설정이것만 해놔도 어느 정도는 리플리케이션이 된다(ex. 스태틱 메시 컴포넌트 리플리케이트 설정 안하면 클라이언트에서 안보임) 2. Player Ability System 설정 // player cppvoid ACSCharacterPlayer::PossessedBy(AController* NewController){ Super::PossessedBy(NewCont..

https://www.youtube.com/watch?v=CZK7QplEbJs위 영상을 보고 만들긴 했는데, 위 영상은 Player한테 Gravity Direction의 조정을 맡긴다Player에 책임이 과도해지기도 하고 마음에 안드는 부분들이 좀 있어서분리하여 역할을 GravityCore에 맡겼다 분리하는 것으로 모든 ACharacter를 상속하는 클래스가 이 영향을 받을 수 있게 된다 // Fill out your copyright notice in the Description page of Project Settings.#include "Actor/CSGravityCore.h"#include "GameFramework/Character.h"#include "GameFramework/Character..

중력 반전과 다른 건 몇가지 안된다 1. 중력 변수 조정타겟 액터에서 이벤트 발생 시 GravityCoef를 곱하거나 나눠주는 방식으로 작동한다 2. GravityCoef의 에디터 상 조절타겟 액터와 어빌리티 태스크에 SetGravityCoef 존재=> 게임 어빌리티에서 GravityCoef 조정하면 타겟 액터까지 전달됨상속받아서 블루프린트 만들고블루프린트 들어가서 값 조정 캐릭터에서 해당 블루프린트 어빌리티 설정 그밖의 인풋 설정 등등까지 해주면 된다 3. 매테리얼 채도(Saturation) 조정void ACSTA_WeakenGravityBox::BeginPlay(){ SaturationSetting();}void ACSTA_WeakenGravityBox::SaturationSetting(){..

https://www.youtube.com/watch?v=_TNFaHFzXfM&t=270s메테리얼은 이거 보고 만들었는데,내부 로직은 Chrono Space가 오브젝트가 캐릭터 기반이라 아예 다를 것이라그냥 내부 안보고 새로 만들었다 메테리얼 관련 소스CSGABlackHoleCSAT_BlackHoleSphereCSTA_BlackHoleSphere CSGAWhiteHoleCSWhiteHole (일반 액터임) 화이트홀이 없다 → 블랙홀이 Event Horizon 내부로 들어온 거 제거화이트홀이 있다 → 블랙홀이 화이트홀 위치로 이동시킴화이트홀은 CSCharacterPlayer가 보유 → 멀티플레이어 환경에선 각각 로컬 플레이어마다 하나씩 보유 가능 블랙홀// Fill out your copyright not..

Character Movement Component의 Gravity Scale을 이용하기 때문에, 각종 물체를 Character로 하기로 기획하며 정했다그런데 문제는, 이러면 Mesh의 Simulate Physics 기능을 이용할 수 없다Character Movement Component가 움직임을 덮어써버리기 때문이다 그렇기에, Character Movement Component 자체의 AddForce를 이용하기로 했다내부적으로 Character Movement Component에 설정된 Mass를 계산해서 알아서 물리 적용을 해준다CharacterMovementComponent에 모든 물리적 이동을 맡겨야 한다(안그러면 설정 충돌 때문에 제대로 이동이 안됨) CharacterMovementCompon..