본문 바로가기

내일배움캠프57

[C#] 자료구조의 차이점 / 제네릭 기술면접 대비하기 #4 9. 배열과 List, ArrayList의 차이점은? (1) 배열 고정된 크기의 요소를 저장 크기는 생성 시점에 결정되며 변경이 불가능 인덱스를 사용해 요소에 직접 접근 가능 다차원 배열도 지원 (2) 리스트 동적으로 크기 조정 가능 요소의 추가, 삭제, 수정이 자유로움 인덱스를 사용해 요소에 직접 액세스 가능 제네릭으로 구현되어 타입의 안정성 보장 단점) 내부적으로 배열을 사용하기 때문에 추가, 삭제 시점에 배열을 다시 할당하고 복사하므로 성능 저하 발생 (3) ArrayList 동적으로 크기 조정 가능 요소의 추가, 삭제, 수정이 자유로움 인덱스 사용해 요소에 직접 액세스 가능 박싱, 언박싱으로 인한 성능 저하가 발생할 수 있음 장점) List는 선언한 자료형에 맞춰 데이터를 .. 2024. 1. 24.
성공적인 8주 프로젝트를 위하여 성공적인 프로젝트를 위한 도움말 form Unity 1기 신우석님 1. 유저가 게임을 이해하기 쉽도록 튜토리얼 만들어보자. 2. 프로젝트 규모를 줄여라. 프로덕트 (출시)를 위한 프로젝트인가? 아니면 포트폴리오를 위한 프로젝트를 하는건가? = 포트폴리오가 중요! 게임의 컨텐츠를 많이 넣으면 시간이 부족해져서 마감을 지키기 위해 개발과정에서 코드가 복잡해진다. 리팩토링이 적고, 하드 코딩을 해서라도 게임을 완성해야 하기 때문. 적절한 곳에 적절한 기술을 제대로 사용하지 못한다는 것은 포트폴리오의 치명적 문제이다. 포트폴리오에서는 게임 외적인 부분보다 내적인 부분(코딩과 개발 과정)이 더 중요하다. 컨텐츠의 양과 기술의 양은 비례하지 않는다. 포트폴리오에서 가장 매력적인 부분은 최적화. 최적화는 컨텐츠나 시.. 2024. 1. 12.
[CS] 게임 개발에서의 자료 구조 활용 1. 배열 특징 : 크기 고정, 연속된 메모리 할당, 동일한 데이터 타입만 사용 장점) 빠른 읽기와 쓰기 메모리 효율성 (연속적이라 데이터 캐싱이 효율적) 단점) 고정된 크기 : 크기를 변경하려면 새 배열을 만들고 데이터를 복사해야함. 낭비되는 메모리 공간 : 넉넉하게 만들어놓고 데이터는 적게 넣으면 낭비됨 복잡한 삽입과 삭제 메모리 할당 문제 : 큰 배열은 연속된 큰 메모리 공간을 필요로 함 (메모리 할당에 실패할 수 있음) 배열 활용하기 좋은 상황 1) 데이터 접근이 빈번하고 예측 가능할 때 2) 데이터 크기나 요소 수가 고정되어 있을 때 3) 요소 삽입과 삭제가 적을 때 4) 순차적 접근이 주를 이룰 때 5) 메모리 사용이 중요한 상황일 때 (특히 모바일 게임) 게임에서 어떻게 활용하지? 1) 캐릭.. 2024. 1. 11.
[디자인 패턴] 오브젝트 풀, 전략 패턴, 커맨드 패턴 Unity에서 자주 쓰는 디자인 패턴 3가지 # 2탄 1. 오브젝트 풀 패턴 프레임 속도를 유지하려면 자주 생성되는 요소를 일부 메모리에 등록하는 것이 좋다. ex. 최근 죽인 적을 메모리에서 없애는 대신 다시 사용할 수 있도록 오브젝트 풀에 추가 - 엔티티의 새로운 인스턴스를 로드하는 초기의 초기화 비용이 들지 않음 - 유니티에는 오브젝트 풀링이 API에 구현되어 있음. 오브젝트 풀의 구성 ObjectPool : 객체의 풀을 관리함. 객체 생성/관리/파기 의 책임 ReusablePool : 실제로 재사용될 객체. Client : 필요할 때 객체를 요청하고 사용한 뒤에 반환. 장점) 메모리 사용량을 예측하기 용이, 성능의 향상 단점) 이미 C#이 메모리 최적화가 뛰어나서 굳이 필요없는 경우도 있다. 객체.. 2024. 1. 10.
[트러블슈팅 공부] 팀 프로젝트 발표회 #4 Team Project #4 팀 프로젝트 발표회 (트러블 슈팅 공부) 최종 프로젝트 전 마지막 발표를 보면서 공부한 내용을 정리했다. 다른 조의 트러블 슈팅을 보면서 경험치를 쌓을 수 있는 좋은 시간이었다. 총기 반동 구현 총기 반동을 Main 카메라 움직임으로 구현했더니 어색함. 원인) 시네머신을 사용해서 플레이어 시야를 구현했기 때문. 해결) 시네머신_VirtualCamera에 접근해 CinemachinePOV 값을 수정하는 것으로 해결 사격 정확도 구현 근접 사격이 원거리 사격보다 정확도가 낮다. 원인) 정확도 차이를 Raycast의 시작점 조절로 구현했는데 멀리 있는 물체일수록 카메라 중앙에서 가까운 것으로 인식해서 문제 발생 해결방법) 물체 인식 방식을 Raycast의 시작점이 아닌 방향으로 변.. 2024. 1. 9.
[디자인 패턴] 싱글턴, 상태패턴, 이벤트버스 Team Project #4 2D - Top Down + 멀티 협동 탈출 게임 코루틴을 활용해 맵의 랜덤한 위치 (spawnPositions)에 아이템상자 드랍하기 // CreateSupplies.cs using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; public class CreateSupplies : MonoBehaviour { // 보급상자 public List supplies = new List(); // 생성 위치 public List spawnPositions = new List(); void Start() { StartCoroutine(Supplies.. 2024. 1. 8.