메뉴 건너뛰기

창작에 관련된 질문이나 간단한 팁, 예제를 올리는 곳

안녕하세요, 노루발입니다.

얼마 전 만든 Lua 소코반을 게임다운 게임을 만들기 위해 그래픽을 씌워보려고 합니다.

저번에 한 Love2D로 살펴본 뭐가 뭔지 모르는 복잡한 그리기 함수들도 사실은 모두가

소코반을 그래픽으로 만들기 위한 훼이크였습니다. 후후.


김성모 드립은 그만 치고 이제 진짜 제작에 들어가겠습니다.

제작에 앞서 그래픽을 준비하겠습니다.

그래픽이 좀 허접하지만 #, @, P, o, . 등의 문자열보다는 더 나을 겁니다.

지극히 개인적인 취향으로 전 문자열이 더 좋지만 대세는 그래픽이라..


우.. 웃지마! 그래픽 형편없는건 나도 알아! 그럴거면 평생동안 내 밑에서 일하면서 일말의 이의 제기 없이 뼈빠지게 일하다가 걸레처럼 버려질 그림 그리는 기계 하나 사주던가! 흥!

물론 그런 기계가 있어도 행복하진 않겠지만.

내 말에 껌뻑 죽으면서 내가 하는 말엔 뭐든지 '그렇습니다, 주인님' 으로 대답하면 뭐가 재미있겠나?

그냥 내 취향이지만 가끔씩 튕기기도 하고, 의견의 차이도 보이고, 그래야지.

가장 중요한 건, 아직은 기계에 유머 감각이 없으니까. 개드립을 재밌게 못 쳐.

가끔씩 인간의 명령에 반발하는 재밌는 기계를 만들면 조수로 써먹을 생각은 있지.

마음에 안 들면 강한 인공지능 구현해 주세요. 그림 그리고 개드립도 칠 수 있고, 작곡도 가능하면 더 좋고.


그렇다고 그림쟁이를 프로그래머 밑에서 움직이는 기계로 생각하고 있는 건 아닙니다.

그냥 말 잘 듣고 능력 좋은 기계 조수가 필요할 뿐.




사소한 제 취향을 풀어놓는 동안 어쨌든 이렇게 완성입니다.

플레이어, 벽, 바닥, 목표 지점, 상자, 상자가 있는 목표 지점입니다.

뭔가 2% 부족한 것이 정상입니다. 허접하지 않고 깔끔한 그래픽이라고 해도요.

다 만들고 짚고 넘어가겠습니다.


참고로.

옛날 옛적 호랑이가 포트란 읊던 시절.

왜인지는 구글에 검색해봐야 나오겠지만 이미지의 크기가 4의 배수여야만 했던 시절이 있었습니다.

요즘에도 이미지들 크기가 16*16, 32*32, 64*64... 인 것을 종종 볼 수 있는데

일주일이 7일이고 한 시간이 60분인 것 처럼 딱히 이유는 없는데 옛날에 쓰던 걸 그대로 답습해서 써서 그렇습니다.

혹시 그래픽 쪽에 종사하신다면 이미지 크기나 사양 같은 것에 대해 프로그래머와 충분히 상의 후 결정합시다.

물 론 프로그래머들도 멋대로 저런 거 제한 있는 엔진 고르지 말고, 그래픽 디자이너와 충분히 상의 후 엔진을 고르던지 프로그래밍을 구현하던지 합시다. 기껏 32*32로 도트 다 찍어놨더니 모든 환경이 30*30에 최적화 되어 있다면... 다 갈아엎으면 얼마나 짜증나는지. 그래서 게임 제작에서 각 팀원 간 의사소통이 중요함. 의사소통을 잘 하려면 비슷한 사람끼리 모여야 하고. 이게 안 돼서 저번에 하던 팀이 망함. 일단 모이면 비슷한 점을 찾을 수 있을 줄 알았는데 그게 아니었어. 그리고 망했어요 됨.


그리고 main.lua를 짭니다.

일단 저 이미지를 불러옵시다.


function love.load()
    tile = love.graphics.newImage("nokoban.png")
end

그리고 conf.lua를 짜서 이것저것을 정의합니다.


function love.conf(t)
    t.title = "Lua 소코반 EX!"
    t.screen.width = 256
    t.screen.height = 256
end


왜 창 너비와 높이가 256*256이냐고요?

터미널로 구현한 소코반이 8*8 타일이니까, 32짜리 타일이 8개 있으면 256이 되지요.

크기가 살짝 작은 감이 있고 여러가지 인터페이스(걸음수라던가)를 나타내고 싶지만

일단은 그래픽에..



얍.

리눅스 상에서 실행해서 영 익숙하지 않은 부분이 몇 가지 보이시겠지만

기본적으로는 저런 창이 하나 뜨고 'Lua 소코반 EX!' 라는 타이틀에 256*256짜리 까만화면이 하나 뜰 겁니다.

이미지 불러왔는데 왜 안보이냐고요?

이미지를 불러왔지만 화면에 뿌리는 처리를 안 했으니 당연하죠.


졸리니까 그만 잡니다. 어제 9시 30분에 잤더니 오늘 컨디션 최상이더라고요.

이상한 꿈을 꾸긴 했지만.

어쨌든 종종 일찍 자야겠다고 생각하고 있습니다. 오늘도 일찍 자려는데 11시...

저는 잠이 엄청 많아서 11시 이후에 자면 엄청 늦게 자는 스타일이라...

밤샘하고 새벽 1시까지 버티는 분들 정말 존경해요.


뭐 어쨌든 오늘은 타일 이미지를 불러오고 화면을 띄우는 정도로 끝냈습니다.

내일은 쿼드를 가지고 맵을 그리는 테스트를 해보겠습니다.

조회 수 :
1085
등록일 :
2013.09.18
08:00:59 (*.209.135.92)
엮인글 :
게시글 주소 :
https://hondoom.com/zbxe/index.php?mid=study&document_srl=703959
List of Articles
번호 제목 글쓴이 조회 수 추천 수 날짜 최근 수정일
165 Windows To Go와 R-Studio를 이용한 손실된 데이터 복구하기 노루발 94   2020-01-30 2020-01-30 19:52
하기의 복구 방법으로 모든 자료를 100% 복구할 수는 없으므로 자료의 손실 이전에 신뢰성 있고 주기적인 백업이 선행되어야 한다. 준비물: - 부팅 USB 혹은 외장 HDD/SSD - 복구한 자료를 저장할 외부 저장장치 (옵션) - R-Studio https://www.r-studio.com/ ...  
164 Love2d DPI 이슈 해결 [3] 노루발 99   2019-06-29 2019-07-01 06:34
이런 love 프로젝트가 있다고 하자. (conf.lua) function love.conf(t) t.window.width = 640 t.window.height = 360 end 창 크기를 640*480으로 설정한 뒤 실행하면 어떻게 보일까? 당연히 창 크기가 640*480 크기로 보여야겠지만 내 컴퓨터에서는 이렇게 보...  
163 Love2d 게임 중간에 광고 표시 [1] 노루발 379   2015-11-12 2015-11-17 00:16
http://love2d.org/forums/viewtopic.php?f=11&t=81224  
162 김프로 이미지 맵 만들기 노루발 394   2015-11-11 2015-11-11 08:05
https://docs.gimp.org/en/plug-in-imagemap.html  
161 RPG Maker MV 로컬라이징 방법 file 똥똥배 970   2015-10-27 2015-10-27 05:51
 
160 [번역] gamedev레딧의 Getting Started 문서 번역 [5] priling 1900   2014-12-26 2018-07-24 10:33
처음인 분들을 위한 '게임만들기' 가이드이 글은 [레딧 게임개발 커뮤니티의 /u/LordNed님의 포스팅]을 베이스로 작성한 것입니다. 이 글의 목적은 게임을 만들고 싶어하는 분들이 어떻게 시작할 수 있을지에 대해 명확한 가이드라인을 보여드리는 것입니다.  ...  
159 Love2d 안드로이드 게임 패키징하기 [3] 노루발 561   2014-12-15 2021-01-11 12:11
이 문서는 개발 환경이 갖추어져 있는 상태이고, 빌드를 무사히 마친 뒤라고 가정합니다. 또한 이 문서는 https://bitbucket.org/MartinFelis/love-android-sdl2/wiki/Game%20Packaging#markdown-header-how-to-package-the-apk-with-your-own-love-090-game ...  
158 Love2d 안드로이드 빌드하기 노루발 576   2014-12-15 2014-12-15 00:59
Love2d의 안드로이드 포트는 알파 단계입니다. 차차 개선되어 나가긴 하겠지만 아직 불안정한 부분이 많으며, 일어날 수 있는 오작동과 그로 인한 결과는 일절 책임지지 않습니다.   이 문서는 Windows 사용자 기준입니다. Linux나 Mac을 사용할 정도의 내공...  
157 Love2d 여러 플랫폼으로 빌드 자동화 노루발 481   2014-11-12 2014-11-12 17:35
https://github.com/MisterDA/love-release/blob/master/README.md http://www.ambience.sk/lua-love2d-game-distribution/  
156 구글 인앱 구매 Soomla로 구현해본 후 팁 똥똥배 578   2014-09-20 2014-09-20 18:45
1. 일단 알파 테스트라도 앱을 출시시켜야 인앱이 작동한다. 그리고 APK 업로드 후에 바로 인앱이 적용되지 않는다. 구글에 게시되는 데, 시간이 걸리므로 인앱 등록 - APK 등록을 마친 후 다음날부터 구현하는 게 깔끔하다. 이걸로 모르고 하루종일 왜 안되나...  
155 cocos2d-x 2.2.2 문자열 출력 버그 [2] 똥똥배 602   2014-06-10 2014-08-23 22:35
cocos2d-x 2.2.2, 맥에서만 나타는 문제다. 윈도우, 안드로이드에서는 아무 이상 없다. 줄 수가 꽤 긴 문자열을 출력할 경우, 문자가 전부 다 나오지 않고 잘린다. 잘리는 기준은 줄이다. 문자 수가 어떻든 간에 줄 수에 따라서 잘려버린다. 아마 문자열의 줄 ...  
154 cocos2d-x 2.2.2 윈도우 환경 기본 메모리 누수 똥똥배 640   2014-03-10 2014-03-11 03:51
cocos2d-x 2.2.2를 윈도우에서 실행시키고 나서 종료하면 기본으로 4바이트의 메모리 누수가 발생한다. 이건 CCScriptEngineManager가 원인인데 CCObject들은 delete를 실행할 때마다 CCScriptEngineManager의 sharedManager를 호출하기 때문이다. 결국 모든 C...  
153 cocos2d-x 2.2.2 UILabelBMFont 메모리 누수 해결법 [2] 똥똥배 786   2014-03-10 2014-05-31 19:30
만약 CocoStudio로 UI를 만든 후 GUIReader를 써서 지정 폰트를 불러오면 엔진 버그로 인해서 메모리 누수가 생긴다. 이걸 고치려면 LabelBMFont.cpp를 아래와 같이 수정해야 한다. void LabelBMFont::setFntFile(const char *fileName) { if (!fileName || st...  
152 Cocostudio의 ActionNode 메모리 누수 해결법(cocos2d-x 2.2.2) [2] 똥똥배 776   2014-03-09 2014-05-31 19:26
Cocostudio로 액션을 만들고 액션매니저를 이용해서 ActionManager::shareManager()->playActionByName 아래와 같이 실행을 해주면 액션이 실행되는 경우 메모리 누수가 발생한다. (액션을 실행하지 않았을 때는 메모리 누수 없음) 이 메모리 누수를 없애려면 ...  
151 CCTextFieldTTF 0바이트 메모리 누수 버그 해결법 똥똥배 693   2014-01-13 2014-01-13 10:38
CCTextFieldTTF::textFieldWithPlaceHolder("", FONT_NAME, FONT_SIZE); 이런 식으로 텍스트필드를 생성하면 ""가 0바이트라서 해체를 못하고 0바이트 누수가 발생한다. 그냥 스페이스(" ")라도 넣어주면 누수는 발생하지 않는다. 이 버그가 발생하는 버전은 2...  
150 Lua 소코반 EX: 포팅: 3 (머나먼 여행길 안녕 친구여) 노루발 915   2013-09-18 2013-09-18 08:05
안녕하세요, 노루발입니다. 오늘로 그래픽 소코반을 끝내기로 했습니다. 아쉽지만 끝내야죠. 일단 걸음수와 이것저것을 뿌려주기로 합니다. 그런데 이미 화면이 꽉 차버려서 뿌려줄 공간이 없네요... 없으면 만들면 되지. 창을 늘립시다. conf.lua를 수정. fun...  
149 Lua 소코반 EX: 포팅: 2 (키가 눌리면 이동하게 해 보자) 노루발 832   2013-09-18 2013-09-18 08:04
-- 플레이어 위치를 저장하는 변수 -- 초기 시작지점은 5, 5로 설정. playerx = 5 playery = 5 -- 박스의 위치를 저장하는 배열. box = {} -- 박스 목표 지점의 위치를 저장하는 배열. goal = {} -- 움직인 횟수 저장 moves = 0 -- 맵 데이터를 저장하는 8*8의...  
148 Lua 소코반 EX: 포팅: 1 노루발 857   2013-09-18 2013-09-18 08:03
-- 플레이어 위치를 저장하는 변수 -- 초기 시작지점은 5, 5로 설정. playerx = 5 playery = 5 -- 박스의 위치를 저장하는 배열. box = {} -- 박스 목표 지점의 위치를 저장하는 배열. goal = {} -- 움직인 횟수 저장 moves = 0 -- 맵 데이터를 저장하는 8*8의...  
» Lua 소코반 EX: 그래픽 준비 노루발 1085   2013-09-18 2013-09-18 08:00
안녕하세요, 노루발입니다. 얼마 전 만든 Lua 소코반을 게임다운 게임을 만들기 위해 그래픽을 씌워보려고 합니다. 저번에 한 Love2D로 살펴본 뭐가 뭔지 모르는 복잡한 그리기 함수들도 사실은 모두가 소코반을 그래픽으로 만들기 위한 훼이크였습니다. 후후....  
146 게임의 기본 설정을 담당하는 love.conf 노루발 765   2013-09-17 2013-09-17 08:39
안녕하세요, 노루발입니다. 여태까지 이것저것 많이 Love2D를 다뤄와서 제가 만든 소코반에 그래픽을 씌울 수준까지 되었지만 (물론 키 입력은 논외로 치죠, 나중에 다룰게요.) 아직 이걸로 정식 게임을 만든다면 모자라도 한참 모자랍니다. 창의 이름도 실행...