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

클라이언트가 자기 자신에 대해 쓰는 건 문제 없다애초에 예측 실행도 잘 되고 있다 문제는 리슨 서버에서 실행한 애니메이션이 클라이언트에서 느리게 반응한다정확힌, '자신이 아닌 클라이언트'의 애니메이션이 늦게 동기화된다. 이런 느낌이다서버는 애초에 자기가 실행하니 당연히 잘 보인다클라는 결국 복제받는 것이니 너무 느리다 찾아보면, 애초에 GAS의 UAbilityTask_PlayMontageAndWait한테 동기화 맡기면 느린 듯하다복제 방식의 한계인듯 그래서 아 복제 방식의 한계구나 하고 넘어갈 것이냐? 하면 그래선 안된다UX 관점에서, 다른 플레이어의 공격이 제때 보여야 한다. 그래서 어떻게 해결할 것이냐?RPC를 쓰는 거다RPC는 Replicated 같은 거보다 훨씬 빠르다 근데 GA는 UObject..

처음엔 공격을 콤보로 사용하게 할까 했는데,팀원과 협의를 해보니 이게 격투 게임도 아니고 액션에 과하게 치중해서 장르가 너무 불분명할 것 같다는 피드백을 들었다. 그래서 고민한 결과, 다음과 같은 시스템을 만들기로 정했다.공격1을 하면 그 이후엔 몇 초가 지나든 공격2가 발동 (내부적으로 Idx 관리)각각의 공격은 그리고 강도와 범위가 다르고, 하이킥 공격이 있는데 그건 Z축까지 힘을 준다 또한, 별개로 점프 상태에서 공격 시 매우 강력한 공격을 발동한다이 경우 스테미나 소비가 크다 이걸 데이터 에셋을 사용해 관리해보자// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreM..

자 이제 AnimNotify 만들어서 태그 날리게 하자 AnimNotify 만들고 노티파이 설정 이제 애니메이션 Notify 설정해주면 됨그래서 Notify에서 게임플레이 태그 날리는 건 어디서 해야 하는가?결국 지금 게임 플레이 태그 날린다 -> Trace 발생시킨다 근데 고민 점Notify를 통해 태그를 날리는 건 클라이언트에서 해야 하는가, 서버에서 해야 하는가?Prediction 처리는 어떻게 진행되는가? 결론: 클라이언트에서 태그 쓰면 알아서 서버에서 처리 된다 // Fill out your copyright notice in the Description page of Project Settings.#include "Animation/AnimNotify_HitCheck.h"#include "Ab..

* 애니메이션 설정 말고 GAS 구조 설계는 좀 더 밑에 있음 애니메이션 인스턴스, 블루프린트 다 만들었는데, 새로 받은 애셋이 구버전 스켈레톤 쓴다새로 받은 거에 블루프린트 만들어두긴 했는데, 블루프린트 성능은 좀 떨어지고 이미 애니메이션 인스턴스 클래스 만들기도 해서 아깝고, 직접 만들어서 아는게 컨트롤하기 편하니 새로 만들자저번 글이랑 똑같은 방식으로 쭉 다시 만든다 몽타주 생성우 스트레이트, 좌 훅, 하이킥, 돌려차기 이제 이걸 어빌리티에서 실행하도록 할 것.. 자 이제 문제는 구조이다입력 -> 어빌리티 발동 -> 애니메이션 실행 -> 애니메이션 특정 타이밍에 Notify를 통해 밀기 어빌리티 발동 -> 밀기 태스크 발동 -> 밀기 타겟 액터 발동 -> 어빌리티로 돌아와서 밀기이런 구조로 해보자..

애니메이션 인스턴스 클래스 생성 애니메이션 블루프린트 생성 static ConstructorHelpers::FClassFinder AnimInstanceClassRef(TEXT("/Game/Animation/ABP_Person.ABP_Person_C"));if (AnimInstanceClassRef.Class){ GetMesh()->SetAnimInstanceClass(AnimInstanceClassRef.Class);}캐릭터 생성자에서 애니메이션 인스턴스 변경 // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "Animation/Ani..

Attribute// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "AttributeSet.h"#include "AbilitySystemComponent.h"#include "DDAttributeSet.generated.h"#define ATTRIBUTE_ACCESSORS(ClassName, PropertyName) \ GAMEPLAYATTRIBUTE_PROPERTY_GETTER(ClassName, PropertyName) \ GAMEPLAYATTRIBUTE_VALUE_GETTER(PropertyName) \ GAMEPLAYATTRIBU..
FPSScoring 만들면서 하이폴리 애셋 집어넣고 나나이트가 알아서 해주겠지~ 했는데 프레임이 영 좋지 않았다근데 과연 나나이트가 다 알아서 해줄까? 아니다GPU가 감당 못한다어디는 나나이트 쓰고, 어디는 일반 메시에 LOD 쓰는게 맞다 나나이트 메시가 너무 많으면 CPU까지 느려진다거기에 나나이트 메시는 물리 충돌 자동 지원도 안해준다 오히려 나나이트를 꺼버리고 폴리곤 수를 줄여버리는게 최적화에 좋을 가능성이 있다 찾아본 추가적인 계기는 몬스터 헌터 와일즈에 길에 돌아다니는 조그만 개미같은 거에도 폴리곤 몇만개 몇십만개를 쓰는 걸 보았다. 엔진이 Re엔진이라 나나이트같은게 있을까 없을까 생각하다 FPSScoring이 생각나서, 과연 나나이트가 다 감당을 할 수가 있을까라는 생각도 같이 들었다. 결론:..
중력은 퍼즐 게임에서 이용하기가 너무 편하다그런데 시간 정지는 적을 정지시키는 거 이외에 어떻게 써야할지 감이 잘 안잡히고,시간 되돌리기도 어떻게 써야 할지가 고민이다 방금 한 가지 떠올랐다!스위치가 있는데, 그걸 동시에 활성화시켜야 하고, 플레이어가 직접 누를 수는 없다양 쪽에서 활성화시키는 탄환이 날아오는데 그게 발사 간격이 다르다면?시간을 정지를 통해 탄환을 정지시켜 강제로 간격을 맞춘다면 어떨까스위치가 혼자서 움직일 수도 있을 것이고, 스위치 앞에 움직이는 장애물이 있을 수도 있다 탄환이 3개 이상에서 날아올 수도 있다 중력 반전을 통해 장애물을 치우고, 필드 사이즈 조정을 통한 해당 장애물의 시간만 정지함으로써 스위치에 도달하게 하는 것도 가능하다 슈퍼 마리오 메이커에 자주 나오는 스위치로 꺼..