전에 cih 막는 방법에 대해서 글을 남긴적이 있는데요.
빨리 만들라고 암호걸고 그랬는데 자주 참조하면 느려지니까
이번에 게임 출시하면서 라이트하게 변형해 보았습니다.
변수가 너무 많고 참조가 많은데 암호까지 걸고 있긴 너무 오래걸리니까요
아래 코드구요. 숫자를 문자로 만드는 부분입니다.
암호를 걸지 않아도 gamecih나 게임가디언 같은 툴로 고칠 수 없더군요.
그리고 생성자 보시면 size가 있는데
만약에 어느정도 자리수가 나올지 모르시면 그냥 생성 하시고
만랩이 99라면 3정도 넣으시면 됩니다.
이건 메모리 사용량을 줄이려는 것이구요.
남들 보기 좋으라고 수정한 것이 아니라 지저분하거나 그럴 수 있으니 커스텀 하시구요.
게임에 그대로 적용한거니 문제는 없을 것입니다.
그리고 더 편하게 만들 수도 있지만 calc 요렇게 사용했는데
이게 나중에 밸런스 관련 문제 생길때 주석 처리 해놓고 문제 부분 찾기 용이하더라구요 ㅎ
그 아래 추가 된 것이
CalcUnder는 최대값이 있는 연산이구요
CalcOver는 최소값이 있는 연산입니다.
레벨이 99면 CalcOver(1,99); 이런식으로 해서 그 이상이 되지 못하게 하는거죠.
여튼 연구해보시고 해킹 우려 없는 게임 만드시기 바랍니다~
public class t_guard_int {
protected byte[] value;
protected boolean is_minus;
public t_guard_int(){ value = new byte[11]; }
public t_guard_int(int size){ value = new byte[size]; }
public void Close(){ value = null; }
public void Set(int n){
int tmp_num,cur;
if(n<0){
is_minus = true;
cur = tmp_num = -n;
}
else{
is_minus = false;
cur = tmp_num = n;
}
int len = 0;
do{
++len;
cur /= 10;
}while( cur > 0);
value[len] = -1;
cur = len-1;
do{
value[cur--] = (byte)('a'+(tmp_num%10));
tmp_num /= 10;
}while( tmp_num > 0);
}
public int Get(){
int ret = 0;
for(int i=0;i<value.length;++i){
if(value[i]==-1){
if(is_minus) return -ret;
else return ret;
}
ret *= 10;
ret += value[i]-'a';
}
return -1;
}
public void Calc(int n){ Set(Get()+n); }
public void CalcOver(int n,int limit){
int tmp = Get()+n;
if(tmp>limit) tmp = limit;
Set(tmp);
}
public void CalcUnder(int n,int limit){
int tmp = Get()+n;
if(tmp<limit) tmp = limit;
Set(tmp);
}
}

너무나 좋은 아이디어네요. 덕분에 영감을 받아 만족스런 코드를 작성했습니다.
좋은 아이디어 공유해주셔서 감사합니다.