Category Archives: Iphone Programming

Những cách cải thiện tỉ lệ tương tác cho quảng cáo video có thưởng

Quảng cáo video có thưởng đang trở thành một xu hướng mới. Không chỉ các nhà phát triển nhỏ lẻ sử dụng như là một phương thức để kiếm thêm tiền mà những nhà phát triển game lớn cũng đang sử dụng nó như một trong những phương thức kiếm tiền chính của game. Điển hình như Half Brick với game Pixel mới ra “Dan The Man” dùng quảng cáo video như phương thức chính bên cạnh phương thức In App Purchase truyền thống.

storychapter1

Phương thức quảng cáo mới cũng đi kèm với cách thức mới để có thề mang lại hiệu quả cao. Cụ thể hơn chúng ta hãy nhìn qua những ý tưởng sau:

1 – Sử dụng xem video có thưởng như một phần của hướng dẫn ban đầu:
Zero Day là ngày đầu tiên mà người chơi bắt đầu game. Họ không biết bất cứ thứ gì về thế giới mà bạn tạo ra. Do đó họ sẽ làm mọi thứ mà bạn nói để có thể hiểu được game của bạn. Thế thì việc của bạn thật sự rất đơn giản, hãy nói họ bấm vào phần xem video có thưởng và làm cho nó trở thành một phần không thể thiếu khi họ chơi game.

2 – Cung cấp một phương thức vòng lặp cho người chơi:
Một vòng lặp không nhất thiết phải là một ngày, nó có thể là 8 giờ hay ngắn hơn là 4 h. Thời gian đủ dài để người chơi quay lại và nhận thường.

3 – Xem video để đổi lấy một hộp quả bất ngờ khó có thể kiếm được trong game:
Những phần thưởng độc đáo lúc nào cũng đem lại những hiệu quả bất ngờ. Hãy cho đi nhiều và bạn sẽ nhận lại nhiều hơn

4 – Xem video để phục hồi:
Rất đáng để xem nếu như bạn có một quân đội và chết hết nửa số lượng quân trong một trận đánh quan trọng. Đợi 30 phút hay chỉ 30 giây quảng cáo sẽ làm cho bạn trở lại với chiến trường, bạn sẽ chọn cái nào?

5 – Save me / Hồi sinh:
Maze Run và rất nhiều game đã dùng ý tưởng này

6 – Money and Money:
Xem video để lấy thêm 10 đồng và tiến hành nâng cấp hay phải tham chiến 1 trận đấu 15 phút để lấy 10.000 đồng?
Cứ cho và bạn có mất gì đâu nào!

7 – Nhân đôi hay x XXX lần EXP hay Gold:
Việc lấy tiền theo cấp số nhân rất hấp dẫn nếu có nhiều hiệu ứng được đưa vào và có tác dụng cùng lúc

8 – Tăng tốc thời gian xây dựng hay khai thác:
Những thứ này rất hấp dẫn khi chỉ cần xem 1 video bạn có thể nâng sản lượng của ruộng lúa lên gấp đôi trong 2 giờ.

9 – Hiển thị các quảng cáo khác để tăng khả năng tương tác:
Hãy hiện các quảng cáo banner, full screen,

Theo thống kê, tỉ lệ người sử dụng chấp nhận in app purchase chỉ chiếm 2 %, từ 25 đến 40 % chấp nhận tương tác với quảng cáo video tuỳ theo cách thức quảng cáo của bạn. Hiển thị các quảng cáo khác có thể dẫn đến điều sau đó

10 – Loại bỏ những khó chịu của quảng cáo với 30 s quảng cáo video:
Xem Reward Video và không thấy bất cứ quảng cáo nào trong vòng 1 giờ là một phần thưởng khá hấp dẫn cho những người chơi đang tập trung vào game

11 – Quảng cáo là một phần trong gameplay:
Một bình máu có thể là không cần thiết khi đi qua 1 phân cảnh. Tuy nhiên, nếu nó cần thiết thì người chơi cũng sẵn sàng bỏ ra 30 giây xem quảng cáo để bảo đảm mình không bị gián đoạn sau đó. Đó là kiều quảng cáo tốt khi bạn cho người chơi lựa chọn và làm cho họ cảm thấy dễ chịu hơn vì

12 – Quảng cáo giữa game giúp người chơi thư giản giữa một màn chơi dài:
Một màn chơi nên được kết thúc trong khoảng 3-5 phút và nếu màn chơi dài 10 phút thì nên để mắt người chơi được nghỉ ngơi sau mỗi 3-4 phút. Hãy nhấn mạnh đều này sau quảng cáo, bạn có thể sẽ không bị ghét bỏ lắm. Nếu người chơi thích thì bạn có thể bán được 1 remove purchase đấy.

Kết luận:
Xem quảng cáo 1 cách vui vẻ chính là đích đến tiếp theo của ngành quảng cáo. Hãy bước theo xu hướng mới và bạn sẽ thành công hơn đấy.

Game tham khảo: Fighting Number

Khái niệm chung về Sprite Kit

Sprite Kit là engine riêng của Apple viết dành cho việc làm game 2D trong hệ sinh thái Apple (bao gồm IOS cả Ipad lẫn Iphone và tren môi trường Mac OS). Sprite Kit hiện nay sử dụng engine vật lý Chipmunk2D tuy nhiên đó là việc chạy ngầm. 

 

Sử dụng Sprite Kit có rất nhiều điểm lợi:

– Không chỉ có thể đơn giản hoá việc viết game 2D trên IOS mà còn có thể sử dụng engine vật lý làm game trở nên hấp dẫn hơn nhiều.

– Không bị giới hạn ở IOS mà còn có thể phát triển game cho máy tính của Apple trên Mac OS.

– Nói là giới hạn trên hệ sinh thái của Apple nhưng với các plugin hiện nay bạn hoàn toàn có thể port qua Android.

– Nhận được sự hỗ trợ mạnh mẽ của Apple từ việc nâng cấp đến sửa lỗi và quan trọng nhất là nó hoàn toàn tương thích với thư viện và môi trường của IOS và Mac OS.

– Miễn phí hoàn toàn.

– Không cần phải cài thêm bất cứ thứ gì để phát triển trên Xcode và đưa game lên Appstore cực dễ.

 

Trong Xcode chỉ cần New Project và chọn Sprite Kit là có thể bắt đầu chương trình:

 

Screen Shot 2014-09-01 at 10.39.22 PM

Hướng dẫn làm game đuổi hình bắt chữ

Game “Đuổi hình bắt chữ” đã trở thành một trào lưu trên các chợ ứng dụng vì cách chơi đơn giản, dễ dàng mà ai cũng chơi được. Nó không những giúp cho người chơi có thể nhớ thêm các từ ngữ tiếng Việt mà còn đem lại những tiếng cười sảng khoái vì đã giải được một câu đố khó, một chữ khó trong game.

Mình đã viết gong một game giống thế và hôm nay sẽ chia sẽ cách làm để các bạn làm quen với việc làm game:

Download game chính

Hôm nay chúng ta sẽ viết một game đuổi hình bắt chữ với Xcode và engine Sprite Kit của Apple. Nói chung thì dùng engine viết game nên cũng không khó lắm.

1. Đầu tiên chúng ta cần hiểu rõ game cần gì?

– Phần hiển thị của game bao gồm:

+ Hình nền của game tạo cảm giác thân thiện cho người dùng

+ 1 hình ảnh hiển thị để người chơi nhìn vào và đoán chữ

+ Dãy đáp án dành cho game

+ Dãy chữ gợi ý để người chơi nhập vào khi tìm kiếm đáp án

– Phần ngầm của game chính là đáp án của game được chúng ta lưu trữ lại trong bộ nhớ để kiểm tra đáp án của game xem có chính xác không.

* Phần quan trọng không kém là những file hình ảnh đi kèm để làm game. Mình kèm theo cho các bạn để quá trình học tập nhanh chóng hơn:

https://drive.google.com/folderview?id=0B38uO5_VDZL4NFV4MDlpLTM4WG8&usp=sharing

* Ngoài ra đây là game đã hoàn chỉnh của mình trên AppStore, có gì các bạn download ủng hộ nhé ^.^

Download game Đuổi hình bắt chữ trên AppStore

2. Sau khi đã biết tất cả những thứ cần thiết dành cho game thì chúng ta có thể bắt đầu rồi:

– Đầu tiên là thêm hình nền vào trong chương trình

SKSpriteNode * lkBackground = [SKSpriteNode spriteNodeWithImageNamed:@”Background”];

lkBackground.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));

[self addChild:lkBackground];

– Thế là xong hình nền, giờ ta thêm vào hình gợi ý ở phía trên hình nền nữa:

* Giờ là lúc chuẩn bị chỗ để lưu câu trả lời dành cho game

Trong file MyScene.h ta để một biến NSString để lưu giữ câu trả lời:

@interface LKMyScene : SKScene

{

NSString * lkAnswer;

}

@end

=> Biến NSString để lưu trữ câu trả lời

3. Loading game:

Bây giờ bắt đầu nạp câu hỏi vào trong game với hàm loadGame

-(void)LoadGame{

SKSpriteNode * lkCurrentPicture = [SKSpriteNode spriteNodeWithImageNamed:@”HinhGoiY”];

lkCurrentPicture.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame) + 220);

[self addChild:lkCurrentPicture];

 

lkAnswer = @”MaNao”;

}

=> Thế là ta có hình ảnh gợi ý và câu trả lời đã được nạp vào game

* Đây là tác phẩm cho tới giờ này: bao gồm hình nền và hình gợi ý

Khởi đầu game

Game đã có hình nền và hình gợi ý

4. Sinh ra thêm các chữ không có trong câu trả lời để làm cho game trở nên khó khăn hơn:

a. Hàm sinh chữ cái ngẫu nhiên:

– Để làm được điều này, ta cần có thêm 1 hàm sinh ra chữ cái ngẫu nhiên và đây chính là nó:

-(NSString*)lkGenRandomChar{

NSMutableString* string = [NSMutableString stringWithCapacity:1];

[string appendFormat:@”%C”, (unichar)(‘a’ + arc4random_uniform(25))];

return string;

}

=> Hàm này sẽ trả về một kí tự ngẫu nhiên trong bảng chữ cái

b. Ta lấy câu trả lời và tuần tự thêm các chữ cái ngẫu nhiên sao cho có đủ 12 chữ cái thì ngừng:

NSMutableString * lkQuestion = [NSMutableString stringWithString:lkAnswer];

lkHintCharArray = [[NSMutableArray alloc] init];

while (lkQuestion.length < 12) {

NSString * charNew = [self lkGenRandomChar];

[lkHintCharArray addObject:charNew];

[lkQuestion appendString:charNew];

}

=> Sử dụng một NSMutableString lưu trữ những kí tự để có thể sinh ra 12 chữ gợi ý cho game

c. Lúc này ta có 12 chữ cái vừa có câu trả lời vừa có những chữ cái thừa. Tuy nhiên câu trả lời lại nằm ngay đầu của chuỗi rất dễ đoán ra nên ta thay đổi vị trí nó một cách ngẫu nhiên bằng những dòng lệnh sau:

for (int i = 0; i < lkQuestion.length; i++) {

int randomNum = arc4random() % lkQuestion.length;

 

NSString * lkCharAtToPost = [lkQuestion substringWithRange:NSMakeRange(randomNum, 1)];

NSString * lkChar = [lkQuestion substringWithRange:NSMakeRange(i, 1)];

[lkQuestion replaceCharactersInRange:NSMakeRange(i, 1) withString:lkCharAtToPost];

[lkQuestion replaceCharactersInRange:NSMakeRange(randomNum, 1) withString:lkChar];

}

=> Thế là các chữ cái được trộn lẫn vào nhau và bây giờ không thể nhận ra được câu trả lời một cách dễ dàng nữa.

 

5. Sinh ra những ô chữ gơi ý trên giao diện:

– Để thể hiện các ô chữ trên giao diện chúng ta cần một đối tượng để có thể bắt hành động của người chơi.

a. Ô chữ gợi ý:

Tạo một đối tượng mới có template là SKSpriteNode và có tên là LKTileChar. Xcode sẽ sinh ra 2 file 1 header (.h) và file code (.m)

* Đây là những gì nên có trong file LKTileChar.h

#import <SpriteKit/SpriteKit.h>

@interface LKTileChar : SKSpriteNode

{

SKLabelNode * lkLabel;

}

-(instancetype) initWithCharacter:(NSString *)lkLetter;

@property NSString * lkCharacter;

@end

=> lkLabel để thể hiện chữ cái chứa trong ô còn lkCharacter là nội dung của nó.

 

* Đây là nội dung tong file LKTileChar.m:

#import “LKTileChar.h”

 

@implementation LKTileChar

-(instancetype) initWithCharacter:(NSString *)lkLetter{

LKTileChar * lkTitleChar = [LKTileChar spriteNodeWithImageNamed:@”Tile”];

lkLabel = [SKLabelNode labelNodeWithFontNamed:@”Arial-BoldItalicMT”];

lkLabel.fontSize = 39;

lkLabel.text = lkLetter;

lkLabel.verticalAlignmentMode = SKLabelVerticalAlignmentModeCenter;

lkLabel.position = CGPointMake(0,0);

 

lkTitleChar.lkCharacter = lkLetter;

[lkTitleChar addChild:lkLabel];

lkTitleChar.userInteractionEnabled = YES;

lkTitleChar.name = @”tileChar”;

return lkTitleChar;

}

@end

=> Chúng ta đã tạo ra mộ đối tượng có nền là hình ảnh của file “Tile.png” và có lkLabel để thể hiện chữ cái của nó.

(Chú ý: userInteractionEnabled cần được chuyển thành YES nếu không đối tượng sẽ không nhận được hành động của người dùng đâu, ngoài ra nó còn phải được nằm trên các đối tượng có enable = NO)

b. Thêm các ô gợi ý vào game:

– Thêm đoạn code sau đây vào phần LoadGame:

for (int j = 0; j < 2;j++) {

for (int i = 0;i < 6;i++) {

NSString* letter = [lkQuestion substringWithRange:NSMakeRange(j*6 + i, 1)];

LKTileChar * myChar = [[LKTileChar alloc] initWithCharacter:[letter uppercaseString]];

myChar.position = CGPointMake(CGRectGetMinX(self.frame) + (i + 1)*100 + 39, CGRectGetMidY(self.frame) – 280 – j*100);

[self addChild:myChar];

}

}

=> Chỉ việc cắt ra từng chữ của lkQuestion mà ta đã tạo và trộn ngẫu nhiên sau đó thể hiện trên màn hình là xong.

Bây giờ bạn đã có 12 chữ cái ngẫu nhiên nằm dưới đáy màn hình rồi đó.

* Đây là hình ảnh sau khi đã tới bước này

Hình được thêm vào các chữ cái gợi ý

Hình đã được thêm vào những chữ cái gợi ý

Hình game mỗi lần chạy đều có gợi ý khác nhau

Hình game được chạy lần 2

6. Sinh ra những ô chữ đáp án trên game:

Các ô chữ đáp án cũng cần được quản lý theo những đối tượng riêng.

Tạo File mới LKTargetSlot là một Object

a. Nội dung file LKTargerSlot.h:

#import <SpriteKit/SpriteKit.h>

@interface LKTargetSlot : SKSpriteNode

{

SKLabelNode * lkLetterNode;

}

-(instancetype)initOnScreen;

@property NSString * lkContent;

@property int lkAnswerNumber;

-(void)lkSetContent:(NSString *)lkContentX;

@end

=> Tương tự lkLetterNode sẽ thể hiện còn lkContent là nội dung mà nó được nhận tuy nhiên còn có lkAnswerNumber để có thể biết được đây là ô chữ thứ bao nhiêu để xét tuần tự.

b. Nội dung file LKTargetSlot.m:

– Chúng ta sẽ đưa file .m như sau:

#import “LKTargetSlot.h”

@implementation LKTargetSlot

-(instancetype) initOnScreen{

LKTargetSlot * targetSlot = [LKTargetSlot spriteNodeWithImageNamed:@”Slot”];

 

targetSlot->lkLetterNode = [SKLabelNode labelNodeWithFontNamed:@”Arial-BoldItalicMT”];

targetSlot->lkLetterNode.fontColor = [UIColor whiteColor];

targetSlot->lkLetterNode.text = @””;

targetSlot->lkLetterNode.verticalAlignmentMode = SKLabelVerticalAlignmentModeCenter;

 

 

targetSlot.lkContent = @””;

targetSlot.userInteractionEnabled = YES;

targetSlot.name = @”targetChar”;

return targetSlot;

}

-(void)lkSetContent:(NSString *)lkContentX

{

[lkLetterNode removeFromParent];

self.lkContent = lkContentX;

lkLetterNode.text = lkContentX;

[self addChild:lkLetterNode];

}

@end

=> Với ô chữ đáp án cũng gần giống với ô chữ gợi ý tuy nhiên khác ở chỗ, ô chữ đáp án có thể hiện hoặc không chữ cái trong game nên chúng ta có thê 1 lệnh để thay đổi chữ cái.

=> Vậy là xong phần chuẩn bị cho việc thể hiện mọi đối tượng trong game

c. Thêm vào trong game các ô chữ đáp án:

– Hàm để thêm vào:

-(void)lkCreateTargetSlot:(int)lkNumber{

int lkNumberX = 0;

if(lkNumber % 2 == 1)

{

for (int i = 0; i < lkNumber; i++) {

LKTargetSlot * myChar = [[LKTargetSlot alloc] initOnScreen];

myChar.lkAnswerNumber = lkNumberX++;

myChar.name = @”targetChar”;

myChar.position = CGPointMake(i * (78 + 20) – (lkNumber/2 * 78 + (lkNumber-1)/2*20) + self.frame.size.width/2, CGRectGetMidY(self.frame) – 80);

[self addChild:myChar];

[lkTargetArray addObject:myChar];

}

} else {

for (int i = 0; i < lkNumber; i++) {

LKTargetSlot * myChar = [[LKTargetSlot alloc] initOnScreen];

myChar.lkAnswerNumber = lkNumberX++;

myChar.name = @”targetChar”;

myChar.position = CGPointMake(i * 100 – (((lkNumber +1)/2*70) + (lkNumber)/2*20) + self.frame.size.width/2 +45, CGRectGetMidY(self.frame) – 80);

[self addChild:myChar];

[lkTargetArray addObject:myChar];

}

}

}

=> Đây là lệnh để thêm các ô đáp án vào đúng vị trí của nó. Trong LoadGame ta thêm vào dòng này là xong:

[self lkCreateTargetSlot:(int)lkAnswer.length];

=> Thế là giao diện game đã hoàn chỉnh tuy nhiên các ô chữ vẫn chưa có phản ứng gì cả. Vậy hãy qua phần tiếp theo để hoàn tất cả game nào

* Bây giờ chúng ta có:

Giao diện game giờ đã hoàn chỉnh

Giao diện game hoàn chỉnh

7. Phản ứng dành cho các ô gợi ý:

Trước hết hãy làm cho các ô gợi ý có phản ứng.

a. Vào trong LKTileChar.m thêm vào dòng sau:

– Hàm sẽ chạy khi người dùng chạm vào đối tượng riêng. Đây là cách quản lý khá hay và đơn giản của Sprite Kit. Bạn có thể truy cập ngược từ cấp con sang các cấp cao hơn 1 cách dễ dàng trong khi bình thường phải dùng đến các delegate rất phức tạp.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

[self -> lkLabel removeFromParent];

LKMyScene * myScene = (LKMyScene *)self.scene;

[myScene lkGetTouch:self];

}

=> Đoạn mã này sẽ tự loại bỏ nó ra khỏi màn hình và sau đó truyền chính nó vào trong LKMyScene để chương trình xử lý.

b. Thêm vào file LKMyScene.h function:

-(void)lkGetTouch:(LKTileChar *)lkTileChar;

– Sau đó vào trong LKMyScene.m để hoàn tất nó:

-(void)lkGetTouch:(LKTileChar *)lkTileChar{

BOOL getChar = NO;

for (int i = 0; i < lkTargetArray.count; i++) {

LKTargetSlot * myChar = [lkTargetArray objectAtIndex:i];

if([myChar.lkContent isEqualToString:@””] && (!getChar)){

[myChar lkSetContent:lkTileChar.lkCharacter];

getChar = YES;

}

}

 

if (getChar) {

[lkSelectedArray addObject:lkTileChar];

[lkTileChar removeFromParent];

}

 

[self lkCheckAnswer];

}

=> Thay nội dung vào trong ô chữ đáp án và xem ô chữ đã được giải xong chưa nếu xong rồi thì kết thúc game.

8. Phản ứng dành cho ô đáp án:

– Nếu người chơi lỡ tay nhấn nhầm hoặc đoán không đúng thì sẽ chuyển đáp án ra.

a. Thêm vào trong LKTargetSlot.m những dòng lệnh sau:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

LKMyScene * myScene = (LKMyScene *)self.scene;

[myScene lkGetBackTileChar:self];

}

=> Gọi ngược về scene khi có chạm vào trong đáp án

b. Trong LKMyScene.h ta thêm interface:

-(void)lkGetBackTileChar:(LKTargetSlot *)lkTargetChar;

Trong file LKMyScene.m, hoàn thành nó:

-(void)lkGetBackTileChar:(LKTargetSlot *)lkTargetChar{

for (int i = 0; i < lkSelectedArray.count; i++) {

LKTileChar * lkTileChar = [lkSelectedArray objectAtIndex:i];

if ([lkTileChar.lkCharacter isEqualToString:lkTargetChar.lkContent]) {

[self addChild:lkTileChar];

[lkSelectedArray removeObject:lkTileChar];

[lkTargetChar lkSetContent:@””];

break;

}

}

}

=> Thế là xong phần phản ứng của game

9. Kiểm tra kết thúc:

Kiếm tra xem câu trả lời của người chơi đã đúng chưa nếu đúng rồi thì kết thúc trò chơi hiện câu thông báo Game đã hoàn thành.

-(BOOL)lkCheckAnswer{

NSMutableString * lkResult = [NSMutableString stringWithString:@””];

 

for (int i = 0; i < lkTargetArray.count; i++) {

LKTargetSlot * lkSlot = [lkTargetArray objectAtIndex:i];

if([lkSlot.lkContent isEqualToString:@””]){

return NO;

} else {

[lkResult appendString:lkSlot.lkContent];

}

}

 

if([[lkResult uppercaseString] isEqualToString:[lkAnswer uppercaseString]])

{

[self lkGameOver];

return YES;

} else

return NO;

}

-(void)lkGameOver{

SKLabelNode * lkGameOverLabel = [SKLabelNode labelNodeWithFontNamed:@”Arial-BoldItalicMT”];

lkGameOverLabel.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));

lkGameOverLabel.text = @”You got this string!! This game is over!!”;

[self addChild:lkGameOverLabel];

}

=> Hoàn tất game

* Hình game khi kết thúc:

Kết thúc game với thông báo

Kết thúc game

 

C. Những thứ cần thiết để phát triển game:

1. Những tài nguyên cần có:

– Mình kèm theo những hình ảnh mà mình sử dụng trong game để các bạn tiện sử dụng và làm cho nhanh.

https://drive.google.com/folderview?id=0B38uO5_VDZL4NFV4MDlpLTM4WG8&usp=sharing

=> Những file này được lưu trên google của mình nên các bạn cứ tự nhiên download về và thực hành nhé.

2. Chương trình mẫu cho những ai không làm được:

– Mình kèm theo chương trình đã được viết hoàn chỉnh để các bạn sử dụng tham khảo luôn

<Các bạn chịu khó vào blog huygamer.wordpress.com để tải nhé>

https://drive.google.com/file/d/0B38uO5_VDZL4RlRPQjBZdGtlNVE/edit?usp=sharing

3. Chương trình hoàn chỉnh trên AppStore:

– Chương trình hoàn chỉnh có quá nhiều thứ nên mình không thể hướng dẫn chi tiết như chương trình mẫu được. Tuy nhiên nếu các lập trình viên IOS Việt Nam muốn có để tham khảo thì có thể liên hệ. Mã nguồn của game này cũng không quá quý giá đến mức mình không chia sẽ được, nên thấy ai hợp thì cùng nhau chia sẽ thôi.

Đây là link để download game trên AppStore, nếu được các bạn úng hộ download cho game Việt nhé. Viết hướng dẫn này mất cả 7 h (nguyên 1 ngày chủ nhật đoá).

Download game on App Store

4. Lời nhắn:

– Đây chỉ là một game nhỏ của mình và mình muốn đưa ra cho mọi người tham khảo, việc viết một hướng dẫn như thế này rất tốn công sức vì vậy, nếu muốn đăng trên các website của các bạn thì làm ơn để lại đường link tới website của mình và để lại 1 dòng comment trên blog huygamer.wordpress.com này để mình biết cái. Mình không muốn giấu những kiến thức này nhưng cũng không muốn những người chỉ đi copy và paste để ra bài chẳng ra 1 cái gì hết chỉ toàn chữ từ trên xuống dưới lại không có bold hay quote nào cả thật là mất thẩm mỹ vô cùng.

– Vì viết quá nhiều có những khúc mình quên mất một số dòng code và vị trí nó ở đâu thì các bạn có thể để lại comment để mình chỉnh sửa lại cũng được. Mình cũng sẽ để lại source code dành cho các bạn, nếu muốn sử dụng cứ pm. Những nước khác đang phát triển game cực thịnh và sẵn sàng chia sẽ kiến thức để phát triển ngành game của họ nhanh hơn còn Việt Nam có được tí code hay kiến thức thì cố gắng giấu vì sợ mọi người biết sẽ giành chén cơm củ mình. Thế thì muôn đời Việt Nam cũng chả bao giờ phát triển nổi.

 

 

 

Những khái niệm chung khi tham gia vào các mạng quảng cáo di động

Bạn muốn kiếm được tiền từ những mạng quảng cáo di động như startapp, chartboost thì đầu tiên các bạn phải có được các khái niệm cơ bản về quảng cáo đã.

 

1. Publisher:

Publisher hay còn gọi là Affiliate tức là chúng ta những người sẽ thực hiện các quảng cáo cho các khách hàng thông qua các mạng quảng cáo để lấy tiền hoa hồng. Chúng ta có thể thực hiện quảng cáo thông qua các banner, link text, hay các quảng cáo toàn màn hình (full screen), more apps để có được hiệu quả như mong muốn. Các kết quả cũng được đo qua khá nhiều chỉ số trong đó thường là hành động Click quảng cáo, đăng kí thành viên hay download 1 app nào khác. Khi có kết quả như mong muốn, các mạng quảng cáo sẽ trả tiền cho các lập trình viên, cá biệt có thể lên tới 28 $ chỉ cho 1 lần download 1 ứng dụng cao cấp nào đó. 

2. Advertiser

Advertiser, còn được gọi là Merchant, là một công ty hoặc cá nhân có Website bán hàng hóa hoặc dịch vụ trực tuyến, và/hoặc chấp nhận đặt hàng và thanh toán online. Advertiser hợp tác với Publisher để quảng cáo hàng hóa, dịch vụ giúp họ. Publisher đặt banner, link text hoặc link sản phẩm trên Website hoặc đặt trong các Email khuyến mãi, danh mục kết quả tìm kiếm của họ để nhận tiền hoa hồng quảng cáo.

3. Marketing theo hiệu quả quảng cáo là gì? (Performance-based Marketing)

Là trả tiền cho những hành động được thực hiện bởi khách hàng trên Website, thay vì phải trả trước một khoản tiền cố định để lấy chỗ quảng cáo. Một chương trình chia sẻ lợi nhuận trong đó Publisher nhận được hoa hồng khi mang lại đăng ký, đặt mua hàng cho Advertiser.

4. Hoa hồng thanh toán là gì?

Hoa hồng thanh toán là số tiền thu nhập mà Publisher nhận được khi thực hiện được một giao dịch cụ thể trên Website của Advertiser, như bán hàng, đăng ký thành viên, bình chọn khảo sát…

5. Click là gì?

Click là hành động của Khách thực hiện mà sau đó họ được chuyển đến ứng dụng hay game thông qua một link của quảng cáo nằm trên ứng dụng của lập trình viên. Tần suất Click vào (CTR – Click-Through Rate) là phần trăm tỉ lệ số lượng click và số lượt quảng cáo xuất hiện.

6. CPA (cost per action) là gì?

CPA là phương thức trả tiền quảng cáo trong đó mức thanh toán được tính cho mỗi hành động của người dùng thực hiện. Đây có thể là hành động click vào quảng cáo, download hay thậm chí chỉ là xem qua website của người quảng cáo.

7. CPM (cost per thousand impressions) là gì?

CPM là phương thức trả tiền quảng cáo theo mỗi một ngàn lần xuất hiện của quảng cáo.

8. EPC (average earnings per 100 clicks) là gì?

EPC là phương pháp tính số tiền hoa hồng thu về từ mỗi 100 click, là số liệu cho Publisher, Advertiser trong Hệ Thống liên kết tham khảo, thể hiện mức chuyển đổi từ Click thành hoa hồng. Đối với Publisher, EPC của Advertiser thể hiện mức độ hiệu quả của lưu lượng truy cập chuyển thành doanh số bán hàng. Đối với Advertiser, EPC của Publisher thể hiện mức hiệu quả của Publisher đưa lượng truy cập đến website của Advertiser. EPC được công bố dưới hai dạng, 7 ngày và 3 tháng.

9. Lượt xuất hiện (Impression) là gì?

Lượt xuất hiện là lần xuất hiện của Banner, Link Text hoặc ứng dụng được xuất hiện trên ứng dụng hay game.

10. Tỉ lệ thành công quảng cáo (Conversion rate)?

Tỉ lệ thành công quảng cáo là tỉ lệ % số lương người dùng thực hiện một hành động mục tiêu. Hành động này do Advertiser quyết định và có thể là số lượng lượt view đối với ứng dụng đó, số lượng download hay thậm chí là doanh thu đến từ khách hàng đó.

Kiếm tiền với Chartboost

Làm game di động hiện tại không chỉ là một sở thích, nó trở thành một nghề chính của lập trình viên. Đã là nghề nghiệp thì bạn cần phải sống được với nó mà không cần thêm những nguồn thu nhập khác. Một game ra đời có thể kiếm được hàng ngàn lượt download nhưng để biến nó thành tiền dành cho chúng ta những lập trình viên game đòi hỏi phải có chiến lược cụ thể. Bạn có thể thêm vào những in app purchase để tìm kiếm những người yêu thích game của bạn và mua để giúp trải nghiệm game tốt hơn, nhưng đó không phải là ý kiến hay với những game có dưới 10.000 lượt down. Với những game nhỏ, thêm quảng cáo là điều dễ dàng nhất. Sau này, bạn có thể tạo thành một mạng với quảng cáo của riêng mình với những game này, tuy nhiên đây là lúc liên kết để có thêm thu nhập.

Chartboost là một trong những mạng quảng cáo tốt nhất hiên nay. So với iAd chỉ chơi với những thị trường phát triển, revmob đã mạnh và chơi xấu với những nước nhỏ, Chartboost vươn lên với khả năng thu lợi nhuận cực lớn nếu bạn gặp đúng người sử dụng. Bạn tôi với game nhỏ của mình chỉ với hơn 1.000 lượt download đã có thể đem về hơn 50 $ chỉ với 10 download game từ chartboost. Có những game quảng cáo trên chartboost sẵn sàng cho bạn 28 $ chỉ để người dùng tải về và sử dụng. Như vậy, tiềm năng sử dụng chartboost rất cao so với các mạng quảng cáo khác như admob vốn chỉ trả được 7-8 $ nếu bạn có 1000 download.

Nào chúng ta bắt đầu thêm Chartboost vào trong ứng dụng của chúng ta.

1. Đầu tiên dĩ nhiên là đăng kí một tài khoản từ Chartboost

2. Thêm ứng dụng của bạn vào Dashboard của Chartboost:

3. Thêm các framework sau đây vào trong ứng dụng:

  • QuartzCore

  • SystemConfiguration

  • CoreGraphics

  • AdSupport

  • StoreKit

  • CoreMedia (SDK v4.4+)

  • AVFoundation (SDK v4.4+)

  • CoreData (SDK v4.4+)

4. Mã nguồn thêm Charstboost:

a. Trong AppDelegate.m ta import library của Charstboost:

#import “Chartboost.h”

Và code như sau:

– (void)applicationDidBecomeActive:(UIApplication *)application {

[Chartboost startWithAppId:@”YOUR_CHARTBOOST_APP_ID” appSignature:@”YOUR_CHARTBOOST_APP_SIGNATURE” delegate:self];

[[Chartboost sharedChartboost] showInterstitial:CBLocationHomeScreen];

}

=> Trong đó bạn sẽ phải thay App Id và App Signature vào trong ứng dụng để có thể nhận được quảng cáo từ Charstboost.

b. Sau đó chỉ cần show Interistial như trên là ứng dụng đã được tích hợp Charstboost vào rồi.

=> Đây là phần cơ bản, có những lệnh nâng cao cho phép chúng ta có thể có được những phản hồi vào làm cho trải nghiệm của người dùng trở nên tốt hơn nữa. Giờ thì cứ làm với những thứ này trước đã.

c. Chạy thử Chartboost, các bạn có thể vào website và tuỳ chọn Test Mode để xem game có chạy quảng cáo không.

Mạng này cập nhật nhiều thông tin và kiểm tra khá là lâu. Thông thường thì mất khoảng 2 h để có quảng cáo test. Muốn có thống kê thì phải chờ tới ngày hôm sau mới có, tuy nhiên quảng cáo nhiều nên dễ dàng hơn cho người phát triển.

Website của Chartboost: https://www.chartboost.com

 

  • Note:

Hiện tại, mình đang làm code game cho network này. Ai cần làm game liên hệ: nguyenngoch@gmail.com nhé.

Tiny Sea – Wonderful Undersea World

Tiny Sea – Wonderful Undersea World

New world is opened for you. You can feed your fish and do a lot of things for fun here.

Your tiny sea will become more and more beautiful with your hand.

It is the tiny world of sea with colourful fish and great environment.

* More than 8 decorates for your tiny sea

From coral to seaweed or sea star

* Beautiful fish

* Easy to feed your fish

* See your fish swing

Touch to the screen to drop the fish food.

Game Center is enable for see what you have with all the world.

DON’T LET YOUR FISH HUNGRY. Come and make the tiny world with us!

Link to download: View in App Store

Starting Menu screen 

 

Shopping to make your tiny sea more beautiful 

 
Beautiful Sea
 

 

 

Đưa AppFlood vào trong ứng dụng

I. Lời nói đầu:

– Những mạng quảng cáo giờ đây đã gần như hoàn chỉnh, họ không cần những nhà phát triển độc lập những người đem lại sức mạnh cho mạng của họ nữa. Điển hình như Admob, lợi nhuận đã giảm hơn 3 lần so với năm trước, những thuật toán và những tính toán hoàn toàn giúp ỡ cho những game hay những hãng lớn mà bỏ qua những hãng nhỏ hay những người đơn lẻ. iAd chỉ chú trọng đến những nước đã phát triển như Mỹ, Canada, Úc. 

– Những hãng mới như Revmob thì gian lận với những nước nhỏ do những nước như Việt Nam không có tiếng nói với những nước như họ. 

– AppFlood là một hãng mới và đáng để thử do chỉ phụ thuộc vào hiệu quả của chương trình chứ không phải chỉ hiển thị. Việc một ứng dụng được người sử dụng cài vào máy của họ thông qua chúng ta có thể lên tới 1 $ trong khi những người chơi không hề mất gì. 

– Ngoài ra với thời gian trả tiền có thể nói khó có hãng nào cạnh tranh được (96 h sau khi request), AppFlood là một điểm đến hấp dẫn cho những lập trình viên nhỏ lẻ như chúng ta. Bên cạnh đó, AppFlood còn có hệ thống chia sẽ băng thông nghĩa là bạn giới thiệu người khác download thì bạn cũng có được lượt download từ họ.

II. Những bước chuẩn bị để thêm SDK vào ứng dụng:

1. Thêm những framework sau đây vào ứng dụng:

  • libz.dylib
  • Security.framework
  • MobileCoreServices.framework
  • Foundation.framework
  • UIKit.framework
  • CoreGraphics.framework
  • QuartzCore.framework
  • AdSupport.framework (chuyển framework này về optional)

2. Vào trong Setting của Project:

Link Binary With Librarie: Thêm -ObjC

3. Thêm SDK của AppFlood vào trong ứng dụng

Bao gồm file  AppFlood.h 

và file library .a

III. Phần Code:

#import “AppFlood.h”

=> Vào đầu chương trình

[AppFlood initializeWithId:@”cFscPCwdj74ViRv” key:@”wsOkmUKj159L503c224d” adType: APPFLOOD_AD_ALL];

=> Khởi tạo AppFlood với ID và key nằm trong Dashboard.

+ Chúng ta đã hoàn tất việc đưa SDK của AppFlood vào trong chương trình. Tuy nhiên chúng ta cần chọn loại quảng cáo vào trong chương trình.

Có 4 loại quảng cáo mà Appflood đề xuất cho chúng ta.

1. Full Screen:

[AppFlood showFullscreen];

2. More Games Panel:

[AppFlood showPanel:APPFLOOD_PANEL_TOP];

3. OfferWall:

[AppFlood showOfferWall: APPFLOOD_PANEL_TOP];

4. Interstitial:

[AppFlood showInterstitial];