분류 전체보기

    [React] Hello React 띄우기

    App.jsx 전 코드 import { useState } from 'react' import reactLogo from './assets/react.svg' import viteLogo from '/vite.svg' import './App.css' function App() { const [count, setCount] = useState(0) return ( Vite + React setCount((count) => count + 1)}> count is {count} Edit src/App.jsx and save to test HMR Click on the Vite and React logos to learn more ) } export default App 아래와 같이 변경 import * as..

    [React] 설치 방법

    우선 Node.js를 설치해준다 다운로드 | Node.js (nodejs.org) 다운로드 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org cmd에서 다음과 같이 기입, 사용자 권한 x // 여기서 first-project은 폴더명임, \C:/Users/사용자 명칭/ < 이 경로로 들어감 npm create vite@latest first-project -- --template react 그 뒤 다음과 같이 순차적으로 기입 cd hacker-stories npm install npm run dev 결과

    Reliable Data Transfer RDT란?

    RDT는 신뢰성 있는 데이터 교환을 의미한다. 즉 송/수신하는 데이터가 오류 없이 온전히 전송되는 것을 뜻한다. Transport Layer(전송계층)에서는 신뢰성 있는 데이터 교환을 하고 싶어 하지만, 하위 레이어들에서는 신뢰성을 보장할 수 없기 때문에 문제가 발생할 수 있다. 이를 해결하기 위해 Transport Layer에서 RDT 프로토콜을 이용할 수 있다. 아래는 RDT 프로토콜을 이용해 데이터를 송/수신하는 예시이다. 송신 측 상위 레이어에서 보내려는 데이터가 있다면 rdt_send()를 호출해 데이터를 RDT 프로토콜로 전송한다. RDT 프로토콜에서 신뢰할 수 없는 채널인 하위 레이어로 보낼 때 udt_send()를 호출해 패킷을 전송한다. 수신 측 하위 레이어에서 받은 패킷이 있다면 rdt..

    [Unreal] UENUM 메타데이터 종류

    기본 // enum 명칭 별도로 가지기 위함) 검색할때 유용 UENUM(Category="") // 비트마스크를 사용하고 있는 UPROPERTY 타입 int형 변수랑 사용가능 UENUM(meta=(Bitflags)) // 시험중인 기능이고 비활성화 되있음 UENUM(meta=(Experimental)) // 에디터에서 보여질 명칭 UENUM(ScriptName="") // 툴팁을 생성해줌 UENUM(ToolTip) // 블루프린트랑 사용가능하게끔 설정 UENUM(BlueprintType) UI 전용 // 애님 블프에서 예) enum형 드롭다운에서 보여질 명칭 UMETA(DisplayName="abc") // 에디터에서 숨김 UMETA(Hidden) // 툴팁을 생성해줌 UMETA(ToolTip="abc")

    [Unreal] UENUM에서의 비트마스크 사용

    UENUM(Meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true")) enum class EItemGradeInfo { // 일반 아이템 Common , // 레어 아이템 Rare , // 레전드 라이템 Legend, }; ENUM_CLASS_FLAGS(EItemGradeInfo); 사용 할 곳 예) UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Meta = (Bitmask, BitmaskEnum = "EItemGradeInfo")) uint8 ItemGradeInfo = 0; void DoSomething(const EItemGradeInfo info) { if(EItemGradeInfo::Common & sta..

    [Unreal] UENUM 명칭 주기 (애님 블루프린트)

    다음은 애니메이션에서 사용하는 열거형이다 UMETA(DisplayName = "명칭") 을 옆에다 추가해준다 (바이너리 형태로 동작하는 메커니즘) #pragma once #include "CoreMinimal.h" UENUM(BlueprintType) enum class ECharacterState : uint8 { IDLE UMETA(DisplayName = "제자리"), WALK UMETA(DisplayName = "걷기"), RUN UMETA(DisplayName = "뛰기"), JUMP UMETA(DisplayName = "점프"), MAX }; 아래와 같이 한글이 깨져있다면 h 파일을 UTF-8로 저장하자 결과

    객체[Object]와 인스턴스[Instance]

    객체와 인스턴스는 객체지향 프로그래밍에서는 거의 비슷한 개념으로 사용되지만 엄밀히 말하면 조금은 차이가 있는 개념이다. 객체지향 프로그래밍이 생성된 원인이 사람의 사고와 가장 비슷하게 프로그래밍을 하기 위해서라고 할 수 있다. 즉 우리 실생활의 모든 것들이 전부 객체로 이루어진 것이다. 넓은 의미에서의 객체라는 것은 보고 만질 수 있고, 이해할 수 있으며 생각이나 행동이 추구하는 바를 의미한다. 즉 객체라는 것은 우리가 인지 하고 있는 구체적인 사물이나 시스템이 될 수도 있고, 구체적이지만 물리적으로 경계가 모호한 강, 안개 등도 객체라 할 수 있는 것이다. 인스턴스란, 예로 우리는 하나의 청사진이 되는 클래스를 정의하면 이 클래스에서 각각 구별이 되는 인스턴스를 얼마든지 만들어 낼 수 있는 것이다. 사..

    데드 레커닝 (Dead Reckoning) 개념

    분산 네트워크 기반 실시간 시뮬레이션 환경에서 트래픽 데이터(traffic data)를 감소시키기 위해 사용하는 기법. 데드(dead)라는 말은 신호를 받지 못하고 있는 상태를 말하며 레커닝(reckoning)은 추산한다는 의미로 신호가 없는 동안에는 추측하여 상태 정보를 갱신하는 것을 말한다. 영어로 찾아보니 추측 항법이라는 용어를 찾을 수 있었다. 배의 방향, 여행 경로를 추측하는데 쓰이는 방법이라고 한다. 게임에 적용하면 캐릭터의 이동경로를 예측하는 방법이라고 할 수 있겠다. 현재 위치 = 이전위치 + (속도\*시간) + (1/2\*가속도\*시간^2) 이동 패킷을 1초 간격이라고 했을 때, 이전 패킷의 위치와 현재 패킷의 위치를 빼면 간격이 1초이므로 속도이자 예상 초당 이동 거리가 된다. 거기에 ..

    [Unity] 강체 관련 Rigidbody / AddForce / AddTorque

    Rigidbody Rigidbody(강체)는 gameObject가 유니티 물리 엔진에 제어 받게 한다. 한마디로 힘과 질량을 갖고 움직일 수 있도록 하는 것이다. Mass : 오브젝트의 질량 Drag : 오브젝트가 받는 공기 저항 값 Angular Drag : 오브젝트가 토크로 회전 시 받는 공기 저항 값 Use Gravity : 중력의 영향 유무 Is Kinematic : 활성화 시 물리엔진의 제어없이 Transform으로만 조작됨 Interpolate : 오브젝트의 움직임 부드러움 옵션 처리 Collision Dectection : 오브젝트 충돌 감지 / 감지 옵션 처리 Constraints : 오브젝트의 움직임 고정 위는 대표적인 rigidbody의 프로퍼티이다. Unity Documentation..

    [Unity] 트랜스폼(Transform) 이동(Move)

    유니티 좌표계 프로그램마다 사용하는 좌표계가 다르다. 따라서 좌표계에 대해서 이해하는 것은 매우 중요하다. 유니티에서는 위치를 표현할 때 왼손 좌표계를 이용한다. X축은 빨간색, Y축은 초록색, Z축은 파란색(RGB순서)으로 표현. Transform.position Transform.position은 게임오브젝트의 절대좌표를 나타낸다. Transform.position에 Vector3를 대입하면 해당 위치로 이동. transform.position = new Vector3(x, y, z); Transform.localPosition Transform.localPosition은 게임오브젝트의 상대좌표를 나타낸다. 게임오브젝트의 부모가 있을 경우 부모로부터 떨어진 좌표를 나타낸다. 부모가 없을 경우에는 Tr..