Game AI & Unity/Java Steering game 36

[Game AI][Steering Behavior] 15 KeyboardExample.java

1. 전체적인 코드 보기 package test; import controllers.KeyboardController; import engine.Car; import engine.Game; import engine.GameWindow; import engine.Obstacle; import java.awt.Color; /** * * @author santi */ public class KeyboardExample { public static void main(String args[]) throws Exception { Game game = new Game(800,600, 25); game.add(new Car("graphics/redcar.png",400,300,0, new KeyboardControll..

[Game AI][Steering Behavior] 14 engine.RotatedRectangle

1. 전체적인 구조 2. engine.RotatedRectangle 이 안에는 내부 클래스 2개가 있다. _Vector2D 2차원 벡터를 나타냄 add, sub, rotate 메서드를 통해 벡터연산 수행 RotatedRectangle 회전된 사각형의 속성을 나타냄 중심점 c , 크기 S, 각도 ang을 저장함 두 회전된 사각형이 서로 충돌하는지 판별하는 매서드가 들어있다. (RotRectsCollision) - 전체 코드 더보기 package engine; /** * * Adapted from the C++ version writteh by Oren Becker: * http://www.ragestorm.net/tutorial?id=22 */ public class RotatedRectangle { pu..

[Game AI][Steering Behavior] 13. engine.Obstacle

1. 전체적인 구조 src > engine > Obstacle 2. Obstacle 클래스 게임에서 장애물을 표현하는 데사용됨 생성자는 장애물의 위치와 크기, 색상을 받아 해당 속성을 설정한다. 3. 변수 double m_width 장애물의 너비 double m_height 장애물의 높이 Color m_color 장애물의 색상 RotatedRectangle m_collision_box 장애물의 충돌박스 4. 메서드 public Obstacle(double x, double y, double width, double height, Color c) 생성자 매서드 장애물의 초기 상태 public void update(Game game, double delta_t) 게임 업데이트 처리 (장애물의 움직임에 관련)..

[Game AI][Steering Behavior] 12. 렌더링 (Rendering)

▷렌더링(Rendering) 컴퓨터 그래픽스에서 가시적인 결과물을 생성하는 과정 화면에 그림을 그리거나 이미지를 출력하는 프로세스 2D, 3D * 렌더링의 과정 ① 오브젝트 생성 및 배치 게임에서 보여지는 객체들을 생성하고 게임 월드에 배치 ② 카메라 설정 ( 게임 내에서의 시각적인 시점 ) 게임에서 플레이어가 게임 세계를 관찰하는 시점을 모델링하는 데 사용 게임 화면에 어떤 부분이 보일지를 결정하고, 플레이어의 시야를 시뮬레이션함 뷰포트(Viewport) 설정 ③ 렌더링 처리 게임 객체들을 화면에 그리는 과정입니다. 주로 GPU(Graphics Processing Unit)에서 처리됨 각 객체의 위치, 크기, 색상 등을 고려하여 화면에 표시 ④ 빛과 셰이딩 적용 (선택사항) 빛과 셰이딩을 사용하여 게임..

[Game AI][Steering Behavior] 11. 원 모양의 마커

▷ 원 모양의 마커 화면 상의 특정 위치를 나타내기 위해서 사용 플레이어의 위치, 목표 지점 표시 플레이어 위치 또는 목표 지점 표시 게임에서 플레이어의 현재 위치를 나타내거나 플레이어가 이동해야 하는 목표 지점을 표시하는 데 사용될 수 있다. 특히 맵이 크거나 복잡할 경우 플레이어가 어디로 가야 하는지를 시각적으로 알려주는 것은 사용자 경험을 향상시키는 데 도움이 된다 게임 오브젝트 강조 특정 게임 오브젝트를 강조하거나 주목할 필요가 있을 때 사용될 수 있다. 예를 들어, 퀘스트 아이템이나 중요한 아이템을 표시하기 위해 사용할 수 있다 상호작용 가능한 지점 표시 특정 위치에 상호작용 가능한 지점을 표시 플레이어가 상호작용할 수 있는 문, 문제, 또는 특정 지역을 나타낼 때 전투 또는 충돌 지점 표시 전..

[Game AI][Steering Behavior] 10. engine.Marker

1. 전체적인 구조 src > engine > Marker.java Marker 게임 화면에서 특정 위치에 원 모양의 마커를 그리는 데 사용된다 2. 멤버 변수 double m_radius 마커의 반지름을 나타냄 Color m_color 마커의 색상을 나타냄 RotatedRectangle m_collision_box 마커의 충돌 상자를 나타냄 3. 생성자 public Marker(double x, double y, double radius, Color c) 마커 객체를 생성하는 생성자 위치 (x,y), 반지름, 색상을 인수로 받는다 4. 매서드 public void update(Game game, double delta_t) 마커의 업데이트 처리 public void draw(Graphics2D g) 마..

[Game AI][Steering Behavior] 9. JComponent

1. JComponent 란? Java Swing에서 모든 컴포넌트의 기본 클래스 Swing 컴포넌트의 최상위 클래스로, 다양한 사용자 정의 컴포넌트를 만들 때 이를 확장하여 구현한다 예를 들어, 버튼, 레이블, 패널 등은 모두 JComponent를 상속한 하위 클래스이다. * Swing Java에서 GUI(Graphical User Interface)를 구축하는 데 사용되는 툴킷 다양한 GUI 요소를 제공한다. 사용자 인터페이스를 구축하는 데 유용한 클래스 및 메서드를 포함하고 있음 2. JComponent의 특징 ① 그리기 및 이벤트 처리와 관련된 메서드를 제공한다 ② 컴포넌트의 크기 및 위치를 관리한다 ③ 화면에 보여지는 컴포넌트의 시각적인 모양과 동작을 정의한다 ④ SwingUtilities 클래..

[Game AI][Steering Behavior] 8. engine.GameWindow

1. 전체적인 구조 GameWindow 클래스 게임 창을 생성하고 게임 루프를 실행하는 데 사용된다. JComponent를 상속하며, 게임 화면을 렌더링하고 업데이트하기 위한 기능을 제공한다. * 참고 Jcomponent : https://bayleaf07.tistory.com/358 1. 멤버 변수 Game m_game: 게임 객체를 저장 2. 생성자 private GameWindow(Game game) 게임 객체를 받음 새로운 GameWindow 인스턴스를 생성함 게임의 크기에 맞는 창 크기를 설정 3. 정적 메서드 public static void newWindow(Game game) 게임 창을 생성하고 게임 루프를 시작함 이 루프는 게임 업데이트와 렌더링을 담당 적절한 시간 간격으로 게임을 업데이..

[Game AI][Steering Behavior] 7. engine.GameObject.java

1. 전체적인 구조 src > engine > GameObject.java 추상 메서드 (Abstract Method) 일반 메서드 (Concrete Method) 구현 여부 선언 O, 구현 X 서브 클래스에서 구현해야함 선언 O, 구현 O 해당 클래스에서 직접 호출될 수 있다 호출 방식 하위 클래스에서 오버라이딩 하여 구현하기 서브 클래스의 독특한 동작을 정의할 수 있다 해당 클래스의 인스턴스에서 직접 호출가능 사용 용도 여러 클래스에서 공통적으로 가져야하는 동작이지만, 각 클래스마다 구현이 달라야하는 경우 추상 클래스에서 일반적인 동작을 정의하고, 서브 클래스에서 이것을 구체화한다 특정 클래스에서 공통적으로 사용되는 동작을 정의함. 해당 클래스에서 직접 호출되어야 하며, 상속을 통해 수정되거나 확장될..

[Game AI][Steering Behavior] 6. engine.Game.java

1. 전체적인 위치 살펴보기 src > engine > Game.java 2. 멤버 변수 List m_objects 게임 내 모든 객체를 저장하는 리스트 게임에 등장하는 모든 객체들이 포함됨 ( 자동차, 장애물 등 ) double m_width, m_height 게임 화면의 가로, 세로 크기 초기화 프레임 속도 초기화 int m_frames_per_second 게임이 몇 프레임으로 동작할 지 나타내는 변수 3. 생성자 public Game(double width, double height, int frames_per_second) 게임 객체를 초기화하는 생성자 게임 화면의 가로, 세로, 프레임 속도를 매개변수로 받아서 초기화한다ㅏ 4. 주요 메서드 public void add(GameObject o) 새..