'WORK DIARY'에 해당되는 글 5건
- 2015.04.15 [WIN API] 4일차. hive tile 완성 & 문제 발견
- 2015.03.27 [WIN API] 3일차. Dreg & Drop으로 타일의 level 조절등 대규모 업데이트
- 2015.03.24 [WIN API] 3일차. 현재 보유중인 스프라이트시트를 활용하기위해서는....
- 2015.03.24 [WIN API] 2일차. 아이소 매트릭 문제 발생
- 2015.03.23 [WIN API] 1일차. 아이소 매트릭 타일(ISO MATRIX TILE)그리기.
hive tile완성
hive metrix배열의 배치 알고리즘을 개조하여, hive tile로 완성
[문제 발생]
일부 타일이 다른 타일을 올라타는 상황이 발생.
[원인]
이미지 랜더링을 각각의 타일 순으로 하고 있는데, 타일의 배열은 다음과 같이 그려진다.
[0][1]배열보다 [0][2]배열이 늦게 그려지다보니, 상대적으로 타일이미지가 튀어 나와 보인다.
[해결방안]
현재 가장 빠른 두가지 해결방안이 생각나는데.
1. 세로측 배열 순서는 유지하되, 가로측 배열 순서를 거꾸로 만듬. (파랑]
(오른쪽에서 왼쪽으로 오도록, 카메라가 움직이므로, 타일의 갯수에 대한 걱정은 안해도 될듯 싶다.)
2. 배열 순서를 한칸 건너 하나씩으로 바꿈 (빨강)
(단점은, 배열 순서가 타일이 연결되는 순서랑 관계 없어진다.)
※ 가급적 활용할 수 있는 가능성을 포기 하지 않는게 좋다는 마인드 이기 때문에.. 보류..
[결과]
1. 같은 문제가 역으로 발생됨.
2. 현재 문제는 해결되었으나, 배열의 순서가 횡 단위로 배치됨으로써, 다음 타일의 위치가 연결되지 못함.
'WORK DIARY' 카테고리의 다른 글
| [WIN API] 3일차. Dreg & Drop으로 타일의 level 조절등 대규모 업데이트 (0) | 2015.03.27 |
|---|---|
| [WIN API] 3일차. 현재 보유중인 스프라이트시트를 활용하기위해서는.... (0) | 2015.03.24 |
| [WIN API] 2일차. 아이소 매트릭 문제 발생 (0) | 2015.03.24 |
| [WIN API] 1일차. 아이소 매트릭 타일(ISO MATRIX TILE)그리기. (0) | 2015.03.23 |
Dreg & Drop으로 타일의 level 조정가능
[Dreg & Drop으로 tile의 Level 조절 가능.]
Dreg시 3단계로 Level이 조절 가능하도록 해야 겠다.
새벽에 일어나 추가적으로 카메라 penning, Level조절가능, 화면 위치 초기화, 타일 생성, 타일 삭제, 전체 삭제를 추가 하였다.
버그 발견, tile의 level 조절시 뒤쪽 타일의 위치와 같을 경우, 조작 불가한 상황이 발생. 해당 타일 삭제후, 재 생성하면 해결가능
'WORK DIARY' 카테고리의 다른 글
| [WIN API] 4일차. hive tile 완성 & 문제 발견 (0) | 2015.04.15 |
|---|---|
| [WIN API] 3일차. 현재 보유중인 스프라이트시트를 활용하기위해서는.... (0) | 2015.03.24 |
| [WIN API] 2일차. 아이소 매트릭 문제 발생 (0) | 2015.03.24 |
| [WIN API] 1일차. 아이소 매트릭 타일(ISO MATRIX TILE)그리기. (0) | 2015.03.23 |
ADD BLEND방식을 사용해야 한다는 것을 알았는데...
(Alpha blend와 다른...)
어찌 쓰는거지.. google신에게 물어보는 중....
'WORK DIARY' 카테고리의 다른 글
| [WIN API] 4일차. hive tile 완성 & 문제 발견 (0) | 2015.04.15 |
|---|---|
| [WIN API] 3일차. Dreg & Drop으로 타일의 level 조절등 대규모 업데이트 (0) | 2015.03.27 |
| [WIN API] 2일차. 아이소 매트릭 문제 발생 (0) | 2015.03.24 |
| [WIN API] 1일차. 아이소 매트릭 타일(ISO MATRIX TILE)그리기. (0) | 2015.03.23 |
[문제발생 : 15/03/10 16:35]
랜더링 되는 부분을 다음과 같이 별도의 함수화 하였다.
void cISO::DrawRecISO()
{
for (int cal = 0; cal < maxcal; cal++)
{
for (int row = 0; row < maxrow; row++)
{
MoveToEx(getMemDC(), tile[cal][row].rec.left , tile[cal][row].pivot.y, NULL);
LineTo(getMemDC(), tile[cal][row].pivot.x , tile[cal][row].rec.top);
LineTo(getMemDC(), tile[cal][row].rec.right, tile[cal][row].pivot.y);
LineTo(getMemDC(), tile[cal][row].pivot.x , tile[cal][row].rec.bottom);
LineTo(getMemDC(), tile[cal][row].rec.left , tile[cal][row].pivot.y);
}
}
}
별다른 문제가 없어 보이는데, 렉이 엄청나게 생겼다.
아무래도 for문에 대한 부담으로 인한 렉인 듯 싶어, 다음과 같이 변경하였다.
void cISO::DrawRecISO(sTile* tile)
{
MoveToEx(getMemDC(), tile->rec.left , tile->pivot.y, NULL);
LineTo(getMemDC(), tile->pivot.x , tile->rec.top);
LineTo(getMemDC(), tile->rec.right, tile->pivot.y);
LineTo(getMemDC(), tile->pivot.x , tile->rec.bottom);
LineTo(getMemDC(), tile->rec.left , tile->pivot.y);
}
아예 호출시 해당 타일의 주소를 직접 보내는 방식으로 2중 for문을 줄임으로써, 발생되는 렉을 해결하였다.
(자다 생각났음)
'WORK DIARY' 카테고리의 다른 글
| [WIN API] 4일차. hive tile 완성 & 문제 발견 (0) | 2015.04.15 |
|---|---|
| [WIN API] 3일차. Dreg & Drop으로 타일의 level 조절등 대규모 업데이트 (0) | 2015.03.27 |
| [WIN API] 3일차. 현재 보유중인 스프라이트시트를 활용하기위해서는.... (0) | 2015.03.24 |
| [WIN API] 1일차. 아이소 매트릭 타일(ISO MATRIX TILE)그리기. (0) | 2015.03.23 |
일반적인 아이소 매트릭 구현방식.
MoveToEx와 LineTo를 이용하여, Rectangle을 그린 다음, 각 변의 중앙을 연결하는 방식으로 그림.
하나의 Rectangle를 그린 후, 다음 사각형을 그리기도 힘들 뿐더러, 매우 복잡한 방식으로 진행됨.
[일반적인 iso metrix구현 방식 (총 2번의 MoveToEX와 8번의 LineTo를 이용하여 작업하게 된다.)]
Pivot을 지정후 아이소 매트릭 구현방식.
우선적으로 지정된 pivot으로 부터 offset되어 rectangle의 Volume을 결정할 POINT자료형 변수를 이용하여, rectangle의 Volume을 먼저 설정함.
(그려질 rectangle의 크기를 우선적으로 결정해야 함)
POINT자료형 변수 pivot을 이용하여, 사각형이 배치될 위치를 지정함.
(이때 rectangle의 volume을 감안하여 간격을 조절하도록 함.)
pivot으로 부터의 지정된 x만큼의 거리와, y만큼의 거리만으로 아이소가 제작 가능.
[pivot이라는 기준과, offset이라는 기준이 정해져 있기 때문에, 외각 rectangle은 rectangle함수로 제작하며,
내부의 마름모꼴만 LineTo로 제작 가능]
그리고 개인적으로 RECT자료형 구조체 변수에 다음과 같이 설정해 놓고 사용중이다.
|
rect.left |
= |
pivot.x - offset.x; |
|
rect.top |
= |
pivot.y - offset.y; |
|
rect.right |
= |
pivot.y - offset.y; |
|
rect.bottom |
= |
pivot.y - offset.y; |
[Syntax]
tile.rec.left = tile.pivot.x - tile.offset.x;
tile.rec.right = tile.pivot.x + tile.offset.x;
tile.rec.top = tile.pivot.y - tile.offset.y;
tile.rec.bottom = tile.pivot.y + tile.offset.y;
MoveToEx(getMemDC(),tile.rec.left, tile.pivot.y, NULL);
LineTo(getMemDC(), tile.pivot.x, tile.rec.top);
LineTo(getMemDC(), tile.rec.right, tile.pivot.y);
LineTo(getMemDC(), tile.pivot.x, tile.rec.bottom);
LineTo(getMemDC(), tile.rec.left, tile.pivot.y);
picking까지 성공
내친김에 6각형도 성공 :D
'WORK DIARY' 카테고리의 다른 글
| [WIN API] 4일차. hive tile 완성 & 문제 발견 (0) | 2015.04.15 |
|---|---|
| [WIN API] 3일차. Dreg & Drop으로 타일의 level 조절등 대규모 업데이트 (0) | 2015.03.27 |
| [WIN API] 3일차. 현재 보유중인 스프라이트시트를 활용하기위해서는.... (0) | 2015.03.24 |
| [WIN API] 2일차. 아이소 매트릭 문제 발생 (0) | 2015.03.24 |


