TMP 는 TextMesh Pro 의 약자구요

TMP 사용할때 마다 자주 찾는 메뉴인데 매번 까먹어서 적어둡니다.

default 에 넣어두면 별도로 폰트를 안넣어고 ui 만들면 알아서 들어가니 편합니다.

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




영상: 준비중

 

슈팅게임 진행상황

슈팅게임은 리소스와 구입한 리소스와의 문제들이 자꾸 쌓여서 진행이 느려지고 있습니다.
이거보다 좀더 쉬운 게임으로 바꿔야할꺼 같습니다.

 

헤데라 코인

광고에 헤데라 코인이 뜨길레 쌍심지를 켜고 사용해봤는데요.
가격말곤 괜찮은거 같긴합니다. 이더리움 2.0 을 먼저간 느낌이구요

개발언어로 java / javascript / go 언어를 지원하는게 특징입니다.

그런데 코딩이 어렵고 이더리움과는 환경이 많이 다르네요

이더에서 솔라나로 넘어가는 느낌?

 

대니머 DNMR 투자 썰

좋은 저가에 잡았는데 어이없는 매도 방식에 엄청 적은 이득으로 팔아버렸습니다.

이걸 계기로 전문투자를 위한 공부를 시작할 생각입니다.

 

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




화이트리스트 구현 #1 : https://serverdown.tistory.com/537

영상링크: https://youtu.be/jEpKPYbctlg

mapping 과 배열을 이용한 자료구조를 설명하려고 예를 든것일뿐
이렇게 복잡하게 구현할 필요는 굳이 없을것 같습니다.

소스코드 입니다.

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract Storage {

    uint public count = 0;

    mapping(address => uint) private map_addr;
    address[] list_addr;
    bool use_whitelist = true;

    constructor() {
        address a = 0x1e0A33d97f7793035704F5B0d896c631fb47BbE4;
        // map_addr[a] = 1;
        add_whitelist(a);
    }

    function is_whitelist(address addr) public view returns(uint) {
        return map_addr[addr];
    }

    function get_whitelist_by_no(uint no) public view returns(address) {
        return list_addr[no-1];
    }

    function get_whitelist_by_addr(address a) public view returns(uint) {
        return map_addr[a];
    }
    
    function is_whitelist_2() public view returns(uint) {
        return map_addr[msg.sender];
    }

    function add_whitelist(address a) public {
        require(map_addr[a] == 0);

        list_addr.push(a);
        uint no = list_addr.length;
        map_addr[a] = no;
    }
    
    function del_whitelist(address a) public {
        require(map_addr[a] != 0);

        uint no = map_addr[a];
        uint index = no - 1;
        uint last_no = list_addr.length;
        uint last_index = last_no - 1;
        address last_a = list_addr[last_index];
        list_addr[index] = last_a;
        list_addr.pop();

        delete map_addr[a];
        // map_addr[a] = 0;
        if(index == last_index) {
            return;
        }
        
        map_addr[last_a] = no;
    }

    function set_use_whitelist(bool b) public {
        use_whitelist = b;
    }
    
    function mint_a() public {
        if(use_whitelist) {
            require(is_whitelist_2() != 0);
        }

        count++;
        // _mint(no, link);
    }
}

 

화이트리스트를 추가 / 삭제할때마다 이벤트를 남기면 스마트컨트랙트를 굳지 조회할 필요없이
이벤트로그를 모아 보면 현재 화이트리스트에 무엇이 저장되어있는지 알 수 있습니다.
이벤트 구현은 이 부분을 참고해주세요 

이벤트 구현 참고자료: https://serverdown.tistory.com/498

 

코딩자습서/019 스마트컨트렉트 이벤트 모니터 만들어봅시다. / caver-js

이 기능은 이벤트 모니터 라고도 부르고 이벤트 감시기 라고도 부릅니다. 영어로는 watch 나 monitor 라고 부르더군요. 영상주소: https://www.youtube.com/watch?v=HxGpjz9LCc8 소스코드: https://github.com/Go..

serverdown.tistory.com

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




영상링크: https://www.youtube.com/watch?v=cWM3704pUns

mapping 을 사용했습니다.

단순한 형태로 작성한거구요

솔리디티 코드:

// SPDX-License-Identifier: GPL-3.0
// 0x281725fc1AD9AEDeFb8ADb1f4572E97CA918ED00

pragma solidity >=0.7.0 <0.9.0;

contract Storage {

    mapping(address => uint) private map_addr;
    bool use_whitelist = true;
    uint count = 0;
    
    constructor() {
        address a = 0x1e0A33d97f7793035704F5B0d896c631fb47BbE4;
        add_whitelist(a);
    }

    function is_whitelist(address addr) public view returns(uint) {
        return map_addr[addr];
    }

    function is_whitelist_2() public view returns(uint) {
        return map_addr[msg.sender];
    }

    function add_whitelist(address a) public {
        require(map_addr[a] == 0);

        map_addr[a] = 1;
    }
    
    function del_whitelist(address a) public {
        require(map_addr[a] != 0);

        // map_data[a] = 0;
        delete map_addr[a];
    }

    function set_use_whitelist(bool b) public {
        use_whitelist = b;
    }
    
    function mint_a() public {
        if(use_whitelist) {
            require(is_whitelist_2() != 0);
        }

        count++;
        // _mint(no, link);
    }
}

WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




영상주소: (준비중)
소스주소: https://github.com/GoToTheMetaverse/klay-tutorial-v2/tree/main 의 klaytn-etc-create-wallet 폴더 입니다.

코드:

const Caver = require("caver-js");
const caver = new Caver("");

const acc = caver.klay.accounts.create("aaaa@gmail.com");
console.log("addr", acc.address);
console.log("pkey", acc.privateKey);

 

caver 가 필요하니 

npm install caver-js 

 

추가로 비밀키로 지갑 주소를 뽑는 방법도 있습니다.

다음의 모듈이 필요합니다.
ethereum-private-key-to-address

설치해야하니 명령어를 입력해주세요.
npm install ethereum-private-key-to-address

 

const privateKeyToAddress = require("ethereum-private-key-to-address");
// pkey 는 비밀키입니다. 0x로 시작하는 문자열
const addr = privateKeyToAddress(pkey); 
console.log("addr", addr);

 

Math.random() 으로 64 글자를 조합하는 방법은 암호학적 안전하지 않다고 합니다.

링크1: https://yceffort.kr/2021/09/javascript-random-number 에서 "암호학" 으로 검색해보시면 내용을 찾으실 수 있습니다.
링크2: https://cwe.mitre.org/data/definitions/338.html

간단하게 만들수 있어서 예제에는 넣긴했어요

 

 

 

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




영상주소: https://www.youtube.com/watch?v=1Y73hFhND9w 
소스주소: https://github.com/GoToTheMetaverse/klay-tutorial-v2/tree/main 의 klaytn-01 폴더 입니다.

node v14 와 node v16 설명이 있습니다.

truffle 을 이용하는 방식은 클레이튼 업그레이드 시 버전이 바뀌는 경우가 있어서 
초보자분들이 사용하기 너무 어려울것 같습니다.

웹개발과 연동해서 개발하려면 truffle 이 편한점이 있긴합니다.
이미 완성된 솔리디티라면 오히려 Klaytn IDE 에서 진행하는게 좋다고 판단되는군요.

// 2022-06-11 기준 수동 설치시

npm install caver-js@1.8.0
npm install truffle-hdwallet-provider-klaytn
npm install -D truffle@5.5.6

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




소스코드: GoToTheMetaverse/vue-tutorial: vue 강좌 (github.com) 의 vue-1 폴더입니다.

영상: https://www.youtube.com/watch?v=52iKji9UK5U&t=619s 

MOTION ONE 튜터리얼 페이지: https://motion.dev/guides/quick-start

 

npm 버전은 16을 사용했습니다.

vue-cli 와 yarn 이 필요합니다.

node 설치 -> yarn 설치 -> vue 설치 -> 코드의 모듈 설치 순으로 진행합니다.
매우 귀찮은 걸차 길뿐 방법은 어렵지 않으니 차근차근 해보시면 
나중에 좋습니다.

yarn 설치:
npm install --global yarn

vue 설치:
yarn global add @vue/cli

코드 받아셔 vue-1 폴더 안에서 모듈을 설치합니다.
yarn install 

모듈설치할때 motion one 도 따라 설치됩니다.


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




영상: https://www.youtube.com/watch?v=j0zHTd2n07U 

 

홈페이지 서브메뉴 적용

민팅 메뉴 누르면 싫다고 흔들어줌

띠용용~

 

슈팅게임

1. 버그 - 경험치바
2. 총알 수가 늘어나는게 짝수일때 좀 보기 별로임
3. 적 등장조건이 시간이라 공격력이 강해지만 한가한 타임이 생김 
4. 총알의 에너지 소모량 늘려야겠음,
5. 버그? - 총알 수가 늘어날때 제대로 소모 안되는 느낌
6. 두번째 적기의 총알이 느려서 보기에 별로임
7. 두번째 적기 체력 대폭 상승이 필요
8. 총알 충돌 판정 이상하다.
9. 게임중 브금 루핑 ? 필요
10. 게임끝나면 적기 좀 치울것

 

게임 이야기 Ken Shape

- 도트로 그림을 그리고 두께 설정이 가능한 툴

유니티랑 잘 맞나보군요 ㄷㄷ

https://www.youtube.com/watch?v=HxHxwK9EHK4

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,