본문 바로가기

Development10

자동적 에이전트 (배회하기) 자동적 에이전트 게임 속에서 플레이어를 상대하는 적, NPC, 아군 캐릭터를 모두 AI 라고 부르지만, 요즘의 챗봇 같은 AI 와는 성격이 다릅니다. 게임 인공지능은 지능적 학습보다는 사람이 설계한 규칙 기반 로직 에 따라 움직이는 경우가 대부분 입니다.또한 스위치 같은 콘솔이나 PC 등 각기 다른 환경과 사양을 고려해야 하기 때문에, 제한된 자원 안에서 지능이 있어 보이도록 최적화된 꼼수와 연출에 가깝습니다. 예를 들어, FPS 게임의 적 AI는 단순히 플레이어가 시야 안에 들어오면 공격하고 플레이어가 총알에 맞는 확률도 설계되어 작동합니다. 이런 방식은 지능적인 학습과는 거리가 있지만, 예측 가능한 행동과 안정적인 게임 플레이 경험을 제공하는 데에는 매우 효과적입니다. FSM 과 조종 행동 게임 속.. 2025. 7. 29.
[2019.] 재소자 FSM ㄱ. FSM□ 상태다이어 그램Prisoner(재소자) □ Prisoner의 주요 상태클래스 설명 (FreeTimeState와 BedTimeState)FreeTimeState Class - 기본 행동은 Wandering - avoidColliding죄수가 배회(Wandering) 행동을 할 때, 벽을 피하는 용도의 bool 변수true가 되면 반대방향으로 돌아간다 - nearby죄수의 영향범위 콜라이더에 다른 죄수가 닿았을 때 1씩 추가,nearby 값이 클수록 가중치를 받아 교화 진행도를 낮춘다 (빨간게이지가 UP)→ +(7 * (nearby * 0.2f)) - 교화활동죄수가 교화활동을 할 때, nearby의 크기와 반비례해서 교화 진행도가 높아진다 (파란게이지가 UP)→ +((7 - nearby) .. 2025. 6. 9.
[2019.] Unity 기반 교도소 과밀화에 대한 시뮬레이션 회고 프로젝트 개요 및 소개 대학 교양 수업으로 접한 범죄학 강의는 범죄자와 교정 시스템에 대한 단편적인 인식을 바꾸는 계기가 되었습니다. 특히 '교도소 과잉수용(과밀화) 문제'와 이로 인해 파생되는 재범률 증가, 사회적 비용 확대, 교정 효과 저하 등 다양한 현실적 역설들이 인상 깊게 다가왔습니다.본 프로젝트는 결코 범죄를 미화하거나 범죄자를 옹호하려는 것이 아닙니다. 오히려 형벌 제도의 구조적 한계와 악순환을 기술적인 관점에서 조명하고, 복잡한 사회 문제를 '기술 기반 시뮬레이션'을 통해 시각적으로 성찰해보고자 시작된 시도입니다. 1. 프로젝트 소개 및 개발 과정 본 프로젝트는 Unity 엔진을 기반으로 한 간단한 시뮬레이션입니다. 교도소 내 과밀화 문제가 전체 교정 시스템에 어떤 영향을 주는지를 시각적으.. 2025. 6. 9.
커스텀 체크박스 열 추가 (수정) GridView의 기본 선택 기능을 사용해 보았지만, 원하는 동작이 나오지 않아 기존 선택 로직을 수정하게 되었습니다. 1. 기존 선택 방식과 문제점 기존 구현에서는Ctrl + 마우스 좌클릭 → 선택 행이 추가일반 좌클릭 → 이전 선택 상태 초기화때문에 선택 상태를 유지하려면, 이전 선택 내용을 매번 저장하고, 클릭 후 다시 복원해야 하는 불편함이 있었습니다. 아래는 선택 기능을 체크박스 열 기반으로 변경하여,마우스 좌클릭 한 번만으로 선택 추가와 Shift 키를 이용한 다중 선택 이 가능하도록 구현했습니다. 2. 체크박스 열 기반 선택 로직 CustomDrawCell 이벤트→ 체크박스가 선택되면 배경색 변경→ 시각적으로 선택 상태를 표시대규모 선택 변경 → unbound 열의 상태를 _ch.. 2024. 12. 4.
VisibleIndex와 실제 컬럼 구조의 차이 (UI 구조와 데이터 구조) GridView에서 컬럼에 접근하는 방법에 따라 순회 순서가 달라집니다. 아래는 예시 코드입니다.GridColumn column1 = new GridColumn { FieldName = "A", VisibleIndex = 2 };GridColumn column2 = new GridColumn { FieldName = "B", VisibleIndex = 0 };GridColumn column3 = new GridColumn { FieldName = "C", VisibleIndex = 1 };GridColumn column4 = new GridColumn { FieldName = "D", VisibleIndex = 3 };gridView1.Columns.AddRange(new[] { column1, colu.. 2024. 11. 28.
커스텀 체크박스 열 추가 (제네릭 타입) 지난 포스팅에서 그냥 체크박스 열을 추가해버리면 된다 라는 식의 해결책을 언급했었는데, 실제로 간단히 구현해 보았습니다.(실제 행 선택 로직은 추후 업데이트 예정)관련글 : https://waydd.tistory.com/3 1. 제네릭 bool 처리 데이터베이스에서 GridView로 데이터를 바인딩할 때는 bool 타입이 없는 경우가 많습니다.그래서 아래 코에서는 true/false 값을 제네릭으로 처리할 수 있도록 구성했습니다.또한, GridViewColumnHelper를 사용하면 체크박스뿐 아니라 다른 RepositoryItem도 간단히 생성할 수 있습니다. 2. CustomUnboundColumnData 이벤트 체크박스 열을 UnboundColumn 으로 구성하면 데이터 표시 및 변경 시점에.. 2024. 11. 28.