블로그 이미지
래머
오늘도 열심히 개발하는 개발자입니다.

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2017. 12. 18. 13:11 Unity

NGUI같은경우 버튼의 눌림, 눌림 해제를 받을 수 있는데 반해서 유니티의 버튼은 클릭 이벤트만 등록이 가능한것 같습니다.

게임을 만들다 보면, 버튼이 눌려있는 동안 어떤 액션을 계속 수행하다가 눌림이 해제될때 액션을 중지 하는것과 같은 기능이 필요할때가 많은데


아래는 유니티의 버튼을 통해서 해당 기능을 구현하는 방법의 예입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
 
public class PointerListener : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
    bool _pressed = false;
    public void OnPointerDown(PointerEventData eventData)
    {
        Debug.Log("버튼이 눌려지고 있음");
        _pressed = true;
    }
 
    public void OnPointerUp(PointerEventData eventData)
    {
        Debug.Log("버튼 눌림이 해제됨");
        _pressed = false;
    }
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        if (_pressed)
        {
            //버튼이 눌려진동안 액션 
        }    
    }
}
 
cs


해당 스크립트를 버튼에 부착하고 사용하면됩니다.

posted by 래머
2017. 11. 26. 00:12 아두이노

노드 mcu 라는 재미있는 녀석을 발견해서 가지고 놀다가 

와이 파이 전송속도가 얼마정도 나올지 테스트 해보고 싶어졌습니다.


대충 서버를 만들고, 노드 mcu쪽은 와이파이 클라이언트 예제를 좀 수정했는데


테스트 방법은 다음과 같습니다.


서버측에서는 tcp서버소켓을 열고 특정포트를 리슨하고 있습니다.


클라이언트쪽에서는 와이파이연결을 초기화 하고, 서버의 ip와 포트에 WIFIClient를 통해서 접속합니다.


접속이 이루어지면 노드쪽에서는 특정한 값으로 초기화된 1024바이트 길이의 배열을 전송을 하고

서버에서는 클라이언트의 내용을 수신해서 내용물을 검사해서 오류가 있는지 확인하고

수신된 바이트 수를 기록해뒀다가 

매1초 경과시 마다 수신받은 바이트수를 출력하는 형태입니다.


클라이언트(노드mcu)는 일단 서버에 패킷을 보내고 나서 서버로 부터 다음 패킷을 보내라는 응답을 

받기전까지는 다음 패킷을 보내지 않습니다.


아래는 테스트 영상입니다.


해외어떤사이트에서 노드mcu전송속도가 형편없다고 들었는데

비록 내부 네트워크간의 전송이지만 생각보다 속도가 잘나오는거 같습니다.

70kb ~ 200kb정도 나오는거 같습니다.


한가지 문제점은 노드mcu에 달린 안테나가 부실해서 그런지 전력소모가 많아서 그런지 모르겠는데 

매우 불안정해서 연결이 매우 쉽게 끊어지는거 같습니다.



'아두이노' 카테고리의 다른 글

NodeMcu TFT lcd 연결  (0) 2019.02.06
nodemcu v3 핀맵  (0) 2017.11.12
밸런싱로봇 종합사항  (3) 2015.12.21
밸런싱로놋 mpu6050 센서방향  (0) 2015.12.19
MPU6050 자이로 가속도 센서  (0) 2015.07.25
posted by 래머
2017. 11. 12. 01:02 아두이노


'아두이노' 카테고리의 다른 글

NodeMcu TFT lcd 연결  (0) 2019.02.06
Node mcu 와이파이 속도 테스트  (0) 2017.11.26
밸런싱로봇 종합사항  (3) 2015.12.21
밸런싱로놋 mpu6050 센서방향  (0) 2015.12.19
MPU6050 자이로 가속도 센서  (0) 2015.07.25
posted by 래머
2017. 4. 18. 12:21 C/C++

https://msdn.microsoft.com/ko-kr/library/windows/desktop/dd797987(v=vs.85).aspx



윈도우 api를 통해 조이스틱 사용하는 법

Getting the Driver Capabilities(드라이버 능력확인)

The following example uses joyGetNumDevs and joyGetPos to determine whether the joystick services are available and if a joystick is attached to one of the ports.


다음은 조이스틱 서비스를 이용할 수 있고 포트에 연결되었는지 결정하기위해 joyGetNumDevs와  joyGetPos를 사용하는 예이다.


JOYINFO joyinfo; 
UINT wNumDevs, wDeviceID; 
BOOL bDev1Attached, bDev2Attached; 
 

//조이스틱 디바이스 개수가 0이면 if((wNumDevs = joyGetNumDevs()) == 0) return ERR_NODRIVER;


//조이스틱1이 연결되었는가? bDev1Attached = joyGetPos(JOYSTICKID1,&joyinfo) != JOYERR_UNPLUGGED;


//조이스틱2가 연결되었는가? bDev2Attached = wNumDevs == 2 && joyGetPos(JOYSTICKID2,&joyinfo) != JOYERR_UNPLUGGED;


//조이스틱1, 2중하나라도 연결되었다면 if(bDev1Attached || bDev2Attached) // decide which joystick to use 어떤조이스틱을 사용할지결정 wDeviceID = bDev1Attached ? JOYSTICKID1 : JOYSTICKID2; else return ERR_NODEVICE;




Capturing Joystick Input(조이스틱 입력 획득)


Most of the code controlling the joystick is in the main window function. In the following portion of the message handler, the application calls joySetCapture to capture input from the joystick JOYSTICKID1.

조이스틱을 제어하기위한 코드의 대부분은 메인 윈도우 함수안에 있다. 다음의 메시지 핸들러의 일부에서 어플리케이션은 JOYSTICKID1조이스틱에서 입력을 획득하기 위해 joySetCapture를 호출한다.

case WM_CREATE: 
    //리턴값이 0이 아닌경우 요청이 실패한것이다.
    if(joySetCapture(hWnd, JOYSTICKID1, NULL, FALSE)) 
    { 

//비프음을 출력하고 메시지 박스로 안내 후 프로그램 종료 MessageBeep(MB_ICONEXCLAMATION); MessageBox(hWnd, "Couldn't capture the joystick.", NULL, MB_OK | MB_ICONEXCLAMATION); PostMessage(hWnd,WM_CLOSE,0,0L); } break;

Processing Joystick Messages(조이스틱메시지처리)

The following example illustrates how an application could respond to joystick movements and changes in the button states. When the joystick changes position, the application moves the cursor and, if either button is pressed, draws a bullet hole on the desktop. When a joystick button is pressed, the application draws a hole on the desktop and plays a sound continuously until a button is released. The messages to watch are MM_JOY1MOVE,MM_JOY1BUTTONDOWN, and MM_JOY1BUTTONUP.

다음의 예는 어플리케이션이 어떻게 조이스틱의 이동과 버튼의 상태변화에 응답할 수 있는지 예를 보여준다. 조이스틱의 위치가 변할때 어플리케이션에서 커서를 이동시키고, 버튼이 눌릴경우, 데스크탑에 총알구멍을 그린다. 조이스틱 버튼이 눌리는경우, 어플리케이션은 구멍을 그리고 동시에 버튼 눌림이 해제될때까지 사운드를 플레이 한다. 해당 메시지 들은 MM_JOY1MOVEMM_JOY1BUTTONDOWN, MM_JOY1BUTTONUP 으로 관찰된다.


case MM_JOY1MOVE : // changed position 위치이동됨 if((UINT) wParam & (JOY_BUTTON1 | JOY_BUTTON2)) //wParam에는 버튼 눌림상태가 포함되있다. DrawFire(hWnd); DrawSight(lParam); // calculates new cursor position break; case MM_JOY1BUTTONDOWN : // button is down 조이스틱1 버튼눌림 if((UINT) wParam & JOY_BUTTON1) //1번 버튼이 눌린경우 { PlaySound(lpButton1, SND_LOOP | SND_ASYNC | SND_MEMORY); DrawFire(hWnd); } else if((UINT) wParam & JOY_BUTTON2) //2번 버튼이 눌린경우 { PlaySound(lpButton2, SND_ASYNC | SND_MEMORY | SND_LOOP); DrawFire(hWnd); } break; case MM_JOY1BUTTONUP : // button is up , 조이스틱1 버튼 눌림해제 sndPlaySound(NULL, 0); // stops the sound break;


posted by 래머
2017. 3. 1. 17:02 Unity

C:\Users\사용자이름\AppData\Roaming\Unity\Asset Store-5.x\

에 다운받은 애셋이 있다.

posted by 래머
2017. 2. 14. 17:33 Unity

Texture2D.GetPixels


https://docs.unity3d.com/540/Documentation/ScriptReference/Texture2D.GetPixels.html


Texture2D.GetPixels32


https://docs.unity3d.com/540/Documentation/ScriptReference/Texture2D.GetPixels32.html



해당 텍스쳐의 내용을 Color 또는 Color32형태로 얻어온다.


이 기능을 사용하기 위해서는 반드시 텍스쳐에 읽기/쓰기 가능 플래그를 임포트 셋팅에서 설정해야 한다.



Texture2D.SetPixels


https://docs.unity3d.com/540/Documentation/ScriptReference/Texture2D.SetPixels.html



Texture2D.SetPixels32


https://docs.unity3d.com/540/Documentation/ScriptReference/Texture2D.SetPixels32.html



이함수들은 오직 ARGB32, RGB24, Alpha8포맷의 텍스쳐들에만 작동한다. 또한 텍스쳐들은 읽기 가능 플래그가 설정되어 있어야한다.


posted by 래머
2017. 1. 29. 09:28 Unity

Editor폴더내에 Resources폴더를 만들경우 유니티의 Resources.Load함수를 통해서 리소스 로드가 가능하다.

단, 빌드시에는 Editor/Resources 폴더의  리소스 들은 제외된다.

posted by 래머
2016. 12. 29. 06:32 포트폴리오

5년경 지나서 이젠 기억도 가물가물합니다.


MMORPG제작시의 자료입니다.

기억을 더듬어 서버를 셋팅하고 플레이 가능한 상태로 만들어 봤습니다.


아래는 게임영상입니다.

해당 게임은 베타테스트까지만 진행하고 회사가 없어지는 바람에 출시는 못했습니다.




아래는 그때당시 제작했던 툴중하나입니다.


MFC로 만들었고 자체엔진이었습니다.


밤새며 셰이더 프로그래밍 하던 기억이 나네요.


이제는 유니티나 언리얼같은 훌륭한 게임엔진들을 쉽게 사용가능하다보니

이런것들이 별 의미가 없지만, 그래도 밑바닦 부터의 경험이 많은 도움이 되었던것 같습니다.


이프로젝트 당시 제가 맡았던 파트는 서버, 엔진, 클라이언트 전체 파트였지만, 주로 서버와 엔진쪽 작업을 했던것 같습니다.


아래는 툴의 작동영상입니다.


이툴은 게임 배경을 편집하거나 지형내에 몬스터배치를 한다거나 하는 역할입니다.





아래영상은 바로위 게임 개발전에 작업했던 MMORPG아더스의 플레이 영상입니다.

당시에 저는 프로그램파트 전체를(서버, 엔진, 클라이언트, 각종툴작업) 맡아 작업을 했었습니다.

아더스의 경우 게임아지트를 통해서 일차로 출시를 했고 후에 FDISK를통해서도 서비스를 진행했었습니다.

기획1, 프로그래밍1, 그래픽1해서 3인으로 작업을했었습니다.

그래픽이 구려보이긴합니다만, SSAO, 캐스케이드셰도우맵 등 그당시 나름 최신의 기술들을 심혈을 기울여 구현했었습니다.

최신의 스피드트리 엔진도 도입했습니다.




'포트폴리오' 카테고리의 다른 글

웹소켓 채팅서버  (0) 2018.06.13
유니티 연습  (0) 2018.06.12
버스터마스터 for Kakao입니다.  (0) 2016.12.29
소셜카지노 게임  (0) 2016.12.29
골드 스푼 메이커 게임 소개  (0) 2016.01.07
posted by 래머
2016. 12. 29. 06:11 포트폴리오

첫 모바일 게임 버스트 마스터 for Kakao입니다.


2013년도 경에 출시 했습니다.


프로그램 파트 전체를 맡아 진행했습니다.


게임서버는 c# 비동기 소켓 기반으로 제작했고

JSP 기반으로 운영툴 및 일부 기능을 제작했습니다.


클라이언트는 유니티 4버전대로 제작했습니다.


유클라우드의 클라우드서버를 이용해 서비스 했습니다.


현재는 서비스 중지 상태입니다.


아래는 게임영상중 일부입니다.





'포트폴리오' 카테고리의 다른 글

유니티 연습  (0) 2018.06.12
MMORPG 입니다.  (0) 2016.12.29
소셜카지노 게임  (0) 2016.12.29
골드 스푼 메이커 게임 소개  (0) 2016.01.07
던전워즈 게임소개입니다,  (0) 2015.10.15
posted by 래머
2016. 12. 29. 06:02 포트폴리오

가장 최근의 프로젝트로

페이스북 소셜 카지노 게임입니다.


서버파트에서


 게임서버 제작, 


각종 시뮬레이터 및 게임로직 구현, 


각종 운영툴 제작(통계생성, 통계조회, 메일 발송서비스, 페이스북 알림메시지 발송서비스), 


페이스북 연동(회원연동, 결제시스템연동, 웹백엔드 기반작업) 


아마존 웹서비스 구성(ec2, elb, s3, cloud front, 각종 서버 셋팅(웹, db등등)) 


등을 맡았습니다.


클라이언트 파트에서는


액션스크립트3 기반의 tcp 통신 네트워크 모듈개발


각 게임별 서버 연동 API개발


기타 웹백엔드와 통신 및 데이터 구축 모듈 개발


클라이언트 파트 결제모듈 개발 


등을 맡았습니다.


게임서버는 c#비동기 tcp소켓 서버입니다. 

윈폼, 윈도우 서비스, 콘솔, 리눅스 데몬등(모노4.5기반에서)으로 작동가능합니다.,

DB는 MSSQL을 사용했습니다.


버스터마스터 게임 제작시 만들었던 c# 비동기 네트워크 모듈을 사용했는데, 다년간 개선하여 더욱 견고하게 작동하도록 했습니다.


웹의 경우 JSP(스프링)기반으로 아파치 + 톰캣 구성으로 현재도 서비스 중입니다.


아래는 게임 영상입니다.



아래는 제작한 시뮬레이터 중 하나의 영상입니다.

시뮬레이터의 경우 게임마다 존재하는데 게임의 특성에 따라서 구성에 차이가 있습니다.

역할은 게임데이터를 생성, 편집, 서버에 업로드, 게임해보기, 데이터추출, 게임시뮬레이션해보기

시뮬레이션 통계확인 등입니다.

윈폼(c#)으로 제작했습니다.


CMS웹페이지를 통해서 전반적인 운영이 가능하지만 일부툴의 경우 어플리케이션으로 만들기도 했습니다.

아래는 통계 추출용툴입니다.

서버에 누적된 로그를 조회해서 보여주거나 엑셀 파일로 저장하는 기능을 제공합니다.

윈폼으로 제작했고 서버의 경우 Node.js를 이용했습니다.

목적에 적합한 다양한 기술을 활용하는 재미가 있는것 같습니다.


'포트폴리오' 카테고리의 다른 글

MMORPG 입니다.  (0) 2016.12.29
버스터마스터 for Kakao입니다.  (0) 2016.12.29
골드 스푼 메이커 게임 소개  (0) 2016.01.07
던전워즈 게임소개입니다,  (0) 2015.10.15
플랫폼 게임 프레임웍  (0) 2015.07.06
posted by 래머