Na terceira e última parte das “Dicas e Estratégia Travian“, irei explicar como é que devemos atacar os inimigos e defender as nossas aldeias.
O ataque no início do jogo deve ser utilizado para roubar recursos. É importante não perder tropas e trazer alguns recursos, de modo a compensar o investimento que fizemos em unidades militares.
Um ataque pode ser realizado de dois modos diferentes: assalto e normal. O modo de assalto reduz o confronto entre as tropas e é o mais indicado quando o objectivo é apenas roubar recursos. Já o modo de ataque normal é o método escolhido quando o que se pretende é eliminar todas as tropas do adversário.
A meu ver, as melhores unidades para assaltos são:
As restantes unidades militares foram excluidas por serem defensivas, terem custos elevados, baixa velocidade ou fraca capacidade de carga. No entanto, é possível efectuar assaltos com Imperianos (Romanos) ou Espadachins (Gauleses) sem grandes problemas.
Para saber que aldeias assaltar/atacar podem seguir um dos seguintes métodos:
- Podem usar um ou vários espiões para espiar uma aldeia e saber quantas tropas é que o jogador tem. Depois devem usar o simulador de combates e saber com quantas unidades é que devem atacar, de modo a perder poucas tropas.
- Usar o Travian World Analyzer ou o Travian Tool para descobrirem se os vossos adversários têm desenvolvido as aldeias ou se já desistiram do jogo. Se desistiram, é uma boa oportunidade para conseguir mais uns recursos extra facilmente.
No que toca à defesa das aldeias, existem dois motivos que vos podem levam a defender as aldeias. Um deles é o facto de não quererem que roubem os vossos recursos, e outro motivo, é quando o atacante utiliza catapultas para destruir campos ou edifícios.
Estas duas situações podem ser encaradas de maneira diferente. No meu caso, começo sempre por verificar se vêm ou não catapultas no ataque. Para tal, basta comparar os tempos que a vossa unidade mais lenta demora até à aldeia atacante, com o tempo que demora o ataque à vossa aldeia, ou verificar se o ataque é em modo de assalto (as catapultas apenas atacam em modo normal).
Se vierem catapultas, preparo uma defesa apenas com unidades defensivas e com o herói. Não vale a pena usar as tropas atacantes para defender uma aldeia, estas podem ser usadas mais tarde para atacar quem vos atacou.
Se verificarem que no ataque à vossa aldeia não são utilizadas catapultas, e apenas querem roubar recursos, podem optar por transferir todos os recursos para outra aldeia e enviar as tropas todas como reforço para um oásis da mesma aldeia. Conclusão, quem atacou não leva nada porque transferiram todos os recursos e ainda poupam várias tropas, que poderão ser úteis para outros ataques.
No caso de estarem a ser permanentemente atacados e não conseguirem acompanhar o Travian com alguma frequência, o meu conselho é que produzam tropas defensivas e as enviem de imediato para um oásis vosso. Estejam atentos à quantidade de tropas que o atacante normalmente envia e quando tiverem tropas suficientes para eliminar grande parte das tropas do adversário, enviem as tropas de volta para a aldeia atacada.
Com este post, termina uma série de posts realizados com o objectivo de ajudar quem começou a jogar Travian à pouco tempo e partilhar alguns métodos já usados por jogadores mais experientes.
Na área de sistemas web uma coisa muito importante é o backup da base de dados, afinal um rotina imprópria no sistema pode alterar o banco de dados de forma errada comprometendo a integridade dos dados ou mesmo a consistência das informações. Além disso nenhuma empresa de hospedagem está livre de um problema sério com um servidor que coloque tudo a perder e como muitas não tiram backup podem criar um grande transtorno para o seu cliente.
Nós, da Trio Interativa, desenvolvemos muitos sistemas de gestão de eventos, muitas vezes, durante o processo de inscrições eletrônicas fazemos de três a quatro backup da base do cliente por dia. Além disse, trabalhamos muitas vezes nos sistemas enquanto são utilizados, ou seja, sempre estamos no risco, um código impróprio e podemos mudar tudo na base, então sempre que atualizamos um novo sistema fazemos backup da base também e os outros que normalmente fazemos ao longo do dia nos ajuda na detecção de erros e possíveis inconsistências nos dados.
Com o crescimento do número de clientes e os inúmeros eventos ocorrendo simultaneamente procuramos uma forma de fazer backup de forma rápida, eficiente e que fosse padronizada. Nas muitas pesquisas que fiz achei a uma rotina excelente do Fabio Berbet de Paula, fiz algumas interações no código para padronizá-las para nossa realidade e hoje qualquer profissional da TRIO tem um link para cada cliente, onde com a penas um clique fazemos o backup integral da base em um arquivo ZIP, perfeito e de forma íntegra. Tudo muito fácil e rápido. Veja o código com comentários e as interações que fiz.
Antes de mais nada agradeço ao Fabio Berbet o desenvolvimento do sistema. Para fazer o download do sistema e da classe clique aqui!.
<?/*
Programa usado para fazer o dump de uma base de dados do MySQL
Por: Fabio Berbert de Paula <fabio@vivaolinux.com.br>
Rio de Janeiro, 26 de Novembro de 2002
link: http://www.vivaolinux.com.br/script/Backup-do-MySQL-via-PHP
Livres Adaptações: Plínio Cruz - Clube da Informática
- Inclusão de arquivo padrão de conexão com a base
- rotina "Lista de Tabelas"
- Padronização do nome do arquivo a ser gravado
*/// classe phpzip.inc.php para criar os arquivos compactadosrequire'phpzip.inc.php';// variaveis de banco de dados de acordo com o arquivo padrão de conexão$db_name='';//Nome do banco de dados$hostdb='';//server do banco de dados$userdb='';//Usuário de log do banco de dados$passdb='';//senha do usuário do banco de dados/////////////////////////////////////////////////////////////////////////////////////////////////////Vamos montar a litas das tabelas do banco de dados escolhido//Essa rotina foi incluída a original do Fábio, pois antes tínhamos que nomear as tabelas que//queríamos guardar. Com a nova rotina ele faz o backup do banco como um todo, não precisando//atualizar o sistema cada vez que você altera a base de dados///////////////////////////////////////////////////////////////////////////////////////////////////$nome=$db_name;$link=mysql_connect("$hostdb","$userdb","$passdb");$resultado_tabelas=mysql_list_tables($nome);$qntd_tabelas=@mysql_numrows($resultado_tabelas);if($qntd_tabelas==0){print"<li>Nenhuma tabela foi encontrada neste banco de bados</li>";die;//Assim "mato" o sistema quando existe um erro}else{//Aqui vamos criar a rotina para montar a listagem de tabelasfor($i=0;$i<$qntd_tabelas;$i++){//Temos que determinar as tabelas que não precisam de backup//no meu caso pode ser tabelas como crm, cep, cidade, estado, etc.//No exemplo não faremos backup da "cep" e concatemos as restantesif(mysql_tablename($resultado_tabelas,$i)!='cep'){$tabelas[]=mysql_tablename($resultado_tabelas,$i);};};//Temos a array de tabelas pronta};// as tabelas que quero//$tabelas = array ('artigos','assuntos'); - Original da rotina do Fabio, onde você montava o array manualmente//com as tabelas que desejava, a rotina acima faz automaticamente só isso$tempdir="/tmp";// diretorio temporario//$filename = 'sql.'.time().'.txt'; - Modo do Fabio de construir o nome do arquivo$data=date("dmyhi",time());$filename='nomedocliente.'.$data.'.txt';//Inclui o nome do banco de dados no nome e a data completa//Isso porque trabalho com phpmyadmin e MySqlFront e os dois trabalham com essa extensão//o conteúdo é o mesmo, portanto não fará diferença na hora da gravação//Na minha opinião facilita para aramazenamento de vários clientes na mesma pasta no servidor local// variaveis do sistema$incluir_insert=1;// imprime os INSERT's tambem// ----------------------------------------------------// BLOCO PRINCIPAL// conectar ao banco de dados$con=mysql_pconnect($hostdb,$userdb,$passdb);mysql_select_db($db_name);// imprimir tipo do documento na tela// imprimir o dump do banco de dados//chdir($tempdir);$fp=fopen($filename,"w");for($x=0;$x<count($tabelas);$x++){$saida= getTableDef($db_name,$tabelas[$x],"\n");fputs($fp,$saida."\n\n");if($incluir_insert){
getTableContentFast($db_name,$tabelas[$x],'','');fputs($fp,"\n\n");}}fclose($fp);// gerar o arquivo zipado$zipname=ereg_replace("txt$","zip",$filename);$zip=new PHPZip();$files[]=$filename;$zip->Zip($files,$zipname);$tamanho=filesize($zipname);// imprimir arquivo p/ downloadheader("Content-Type: application/zip");header("Content-Length: $tamanho");header("Content-Disposition: attachment; filename=$zipname");header("Content-Transfer-Encoding: binary");// abrir e enviar o arquivo$fp=fopen("$zipname","r");fpassthru($fp);fclose($fp);// remover os arquivos temporarios//unlink($filename);unlink($zipname);// FIM DO PROGRAMA// --------------------------------------------------------// --------------------------------------------------------// PROCEDIMENTOS - Baseado no csdigo do phpmyadminfunction sqlAddslashes($a_string='',$is_like=FALSE){if($is_like){$a_string=str_replace('\\','\\\\\\\\',$a_string);}else{$a_string=str_replace('\\','\\\\',$a_string);}$a_string=str_replace('\'','\\\'',$a_string);return$a_string;}// end of the 'sqlAddslashes()' functionfunction backquote($a_name,$do_it=TRUE){if($do_it&& PMA_MYSQL_INT_VERSION >=32306&&!empty($a_name)&&$a_name!='*'){if(is_array($a_name)){$result=array();reset($a_name);while(list($key,$val)=each($a_name)){$result[$key]='`'.$val.'`';}return$result;}else{return'`'.$a_name.'`';}}else{return$a_name;}}// end of the 'backquote()' function/**
* Returns $table's CREATE definition
*
* @param string the database name
* @param string the table name
* @param string the end of line sequence
*
* @return string the CREATE statement on success
*
* @global boolean whether to add 'drop' statements or not
* @global boolean whether to use backquotes to allow the use of special
* characters in database, table and fields names or not
*
* @see PMA_htmlFormat()
*
* @access public
*/function getTableDef($db,$table,$crlf){global$drop;global$use_backquotes;global$con;$schema_create='';if(!empty($drop)){$schema_create.='DROP TABLE IF EXISTS '.
backquote($table).';'.$crlf;}// For MySQL < 3.23.20$schema_create.='CREATE TABLE '.
backquote($table).' ('.$crlf;$local_query='SHOW FIELDS FROM '. backquote($table).' FROM '. backquote($db);$result=mysql_query($local_query,$con);while($row=mysql_fetch_array($result)){$schema_create.=' '.
backquote($row['Field']).' '.$row['Type'];if(isset($row['Default'])&&$row['Default']!=''){$schema_create.=' DEFAULT \''.
sqlAddslashes($row['Default']).'\'';}if($row['Null']!='YES'){$schema_create.=' NOT NULL';}if($row['Extra']!=''){$schema_create.=' '.$row['Extra'];}$schema_create.=','.$crlf;}// end whilemysql_free_result($result);$schema_create=ereg_replace(','.$crlf.'$','',$schema_create);$local_query='SHOW KEYS FROM '. backquote($table).' FROM '. backquote($db);$result=mysql_query($local_query,$con);while($row=mysql_fetch_array($result)){$kname=$row['Key_name'];$comment=(isset($row['Comment'])) ? $row['Comment']:'';$sub_part=(isset($row['Sub_part'])) ? $row['Sub_part']:'';if($kname!='PRIMARY'&&$row['Non_unique']==0){$kname="UNIQUE|$kname";}if($comment=='FULLTEXT'){$kname='FULLTEXT|$kname';}if(!isset($index[$kname])){$index[$kname]=array();}if($sub_part>1){$index[$kname][]= backquote($row['Column_name']).'('.$sub_part.')';}else{$index[$kname][]= backquote($row['Column_name']);}}// end whilemysql_free_result($result);while(list($x,$columns)=@each($index)){$schema_create.=','.$crlf;if($x=='PRIMARY'){$schema_create.=' PRIMARY KEY (';}elseif(substr($x,0,6)=='UNIQUE'){$schema_create.=' UNIQUE '.substr($x,7).' (';}elseif(substr($x,0,8)=='FULLTEXT'){$schema_create.=' FULLTEXT '.substr($x,9).' (';}else{$schema_create.=' KEY '.$x.' (';}$schema_create.=implode($columns,', ').')';}// end while$schema_create.=$crlf.');';return$schema_create;}// end of the 'getTableDef()' function/**
* php >= 4.0.5 only : get the content of $table as a series of INSERT
* statements.
* After every row, a custom callback function $handler gets called.
*
* Last revision 13 July 2001: Patch for limiting dump size from
* vinay@sanisoft.com & girish@sanisoft.com
*
* @param string the current database name
* @param string the current table name
* @param string the 'limit' clause to use with the sql query
* @param string the name of the handler (function) to use at the end
* of every row. This handler must accept one parameter
* ($sql_insert)
*
* @return boolean always true
*
* @global boolean whether to use backquotes to allow the use of special
* characters in database, table and fields names or not
* @global integer the number of records
* @global integer the current record position
*
* @access private
*
* @see PMA_getTableContent()
*
* @author staybyte
*/function getTableContentFast($db,$table,$add_query='',$handler){global$use_backquotes;global$rows_cnt;global$current_row;global$con;global$fp;$local_query='SELECT * FROM '. backquote($db).'.'. backquote($table).$add_query;$result=mysql_query($local_query,$con);if($result!=FALSE){$fields_cnt=mysql_num_fields($result);$rows_cnt=mysql_num_rows($result);// Checks whether the field is an integer or notfor($j=0;$j<$fields_cnt;$j++){$field_set[$j]= backquote(mysql_field_name($result,$j),$use_backquotes);$type=mysql_field_type($result,$j);if($type=='tinyint'||$type=='smallint'||$type=='mediumint'||$type=='int'||$type=='bigint'||$type=='timestamp'){$field_num[$j]=TRUE;}else{$field_num[$j]=FALSE;}}// end for// Sets the schemeif(isset($GLOBALS['showcolumns'])){$fields=implode(', ',$field_set);$schema_insert='INSERT INTO '. backquote($table).' ('.$fields.') VALUES (';}else{$schema_insert='INSERT INTO '.
backquote($table).' VALUES (';}$search=array("\x00","\x0a","\x0d","\x1a");//\x08\\x09, not required$replace=array('\0','\n','\r','\Z');$current_row=0;@set_time_limit($GLOBALS['cfg']['ExecTimeLimit']);// loic1: send a fake header to bypass browser timeout if data// are bufferized - part 1if(!empty($GLOBALS['ob_mode'])||(isset($GLOBALS['zip'])||isset($GLOBALS['bzip'])||isset($GLOBALS['gzip']))){$time0=time();}while($row=mysql_fetch_row($result)){$current_row++;for($j=0;$j<$fields_cnt;$j++){if(!isset($row[$j])){$values[]='NULL';}elseif($row[$j]=='0'||$row[$j]!=''){// a numberif($field_num[$j]){$values[]=$row[$j];}else{// a string$values[]="'".str_replace($search,$replace,
sqlAddslashes($row[$j]))."'";}}else{$values[]="''";}// end if}// end for// Extended inserts caseif(isset($GLOBALS['extended_ins'])){if($current_row==1){$insert_line=$schema_insert.implode(', ',$values).');';}else{$insert_line='('.implode(', ',$values).');';}}else{// Other inserts case$insert_line=$schema_insert.implode(', ',$values).');';}unset($values);// Call the handlerfputs($fp,$insert_line."\n");// loic1: send a fake header to bypass browser timeout if data// are bufferized - part 2if(isset($time0)){$time1=time();if($time1>=$time0+30){$time0=$time1;header('X-pmaPing: Pong');}}// end if}// end while}// end if ($result != FALSE)mysql_free_result($result);returnTRUE;}// end of the 'getTableContentFast()' function?>
Depois do primeiro post sobre como evoluir a primeira aldeia no Travian, com algumas dicas e estratégias a seguir de início, o importante agora é percebermos em que altura e em que condições é que devemos avançar para a construção da segunda aldeia.
Para fundar uma aldeia no Travian é preciso ter o Palácio ou Residência a nível 10 e pontos de cultura suficientes, só depois é que é possível construirmos os três colonizadores necessários. Cada colonizador requer um investimento volumoso, pelo que é necessário garantir algumas condições:
- A Capital não deve estar sobre ataque;
- Devemos ter uma produção de recursos elevada;
- O Mercado deve estar pelo menos a nível 4;
- Ter as tropas necessárias para proteger duas aldeias.
Depois de garantidas as condições mencionadas antes, podemos procurar um local para fundar a segunda aldeia. Existem 2 tipos de aldeias no Travian:
- As comuns, idênticas à aldeia quando começamos o jogo;
- As raras, com mais campos de cereais.
As raras têm a vantagem de conseguirem armazenar mais tropas, pois a sua produção de cereais é muito elevada, mas têm a desvantagem de produzirem pouco dos restantes recursos. Estas aldeias são muito procuradas por jogadores que pretendem jogar mais tempo e por quem tem um exercito numeroso.
Convém também ter atenção aos oásis perto desse terreno, pois são uma boa forma de aumentarmos a produção de um ou mais recursos.
Os filmes de Roland Emmerich são sinônimos com efeitos visuais superlativos – “O Dia depois de Amanhã”, “Independence Day” e agora “2012″. Centenas de artistas produziram cerca de 1.500 tomadas de efeitos visuais usando softwares de criação de entretenimento digital da Autodesk, Inc. (NASDAQ: ADSK) para executar a maioria dos efeitos espetaculares de “2012″.
A civilização Maia deixou para a humanidade um calendário, com a data final em 2012. Essa é uma data importante para diversos governos, culturas, religiões e cientistas. A profecia Maia foi bem documentada, discutida e analisada. O filme “2012″ é uma aventura épica sobre um cataclismo global, que provoca o fim do mundo, e conta a história da luta heróica dos sobreviventes. “2012″ foi dirigido por Roland Emmerich, com roteiro de Harald Kloser e Roland Emmerich e produção de Harald Kloser, Mark Gordon e Larry Franco.
“A escala dos efeitos visuais de ‘2012’ é assombrosa. O filme é um estudo de caso perfeito para analisar o alcance do nosso portfólio de produtos para produção cinematográfica, inclusive nosso software Maya – Vencedor do Prêmio da Academia pelo Destaque em Efeitos Visuais,” disse Stig Gruman, vice-presidente de entretenimento digital da Autodesk Mídia e Entretenimento. “As ferramentas Autodesk são concebidas tendo em vista a criatividade, flexibilidade e interoperabilidade, liberando os visionários criativos, artistas e as equipes de produção para que se concentrem no trabalho em vez da tecnologia”. Em uma entrevista para o MSN, Roland Emmerich diretor, co-autor e produtor executivo de “2012″ – declarou “Basicamente, é a tecnologia original que é tão incrível. Ela oferece essa nova liberdade que eu realmente aproveito ao máximo.”
Uncharted Territory, principal produtora de efeitos visuais (VFX) e co-produtora de “2012″, criou mais de 400 tomadas usando principalmente o software Autodesk 3ds Max para modelagem, mapeamento UV, manipulação de personagens e animação; softwares Autodesk Maya e Autodesk Softimage para modelagem; e software Autodesk MotionBuilder para as imagens preliminares, captura de movimento e animação final. Como co-produtor e supervisor de VFX para o filme, Marc Weigert declarou, “Estamos usando o 3ds Max desde a fundação de nossa empresa, portanto já é quase uma tradição. Também há inúmeros plug-ins para esse software fantástico, o que fez dele ainda mais indispensável para o sucesso das tomadas.” A Uncharted Territory criou a sequência da destruição completa de Los Angeles e Las Vegas, totalmente geradas no computador (CG), com realismo fotográfico. O supervisor de efeitos de CG, Ari Sachter-Zeltzer, disse que o “formato OpenEXR do software 3ds Max permitiu que nós executássemos um volume incrível de trabalho em um prazo relativamente curto.” Weigert completou, “O formato Autodesk FBX também nos poupou bastante tempo. Ele facilitou o intercâmbio de arquivos entre os diversos pacotes de software Autodesk e nos ajudou a cumprir o orçamento e o prazo.”
A Double Negative usou o Maya para criar mais de 200 tomadas, inclusive a destruição da Basílica de São Pedro no Vaticano. A destruição envolveu a simulação de fumaça e poeira, multidões digitais e um ambiente completamente gerado por computação gráfica. A Double Negative construiu uma gigantesca rocha vulcânica e nuvem de cinza, erupções de lava e a ruptura das falhas no parque Yellowstone. O supervisor de CG, Gavin Graham, disse, “O Maya está no centro de nosso canal de processamento e foi um núcleo essencial para nosso fluxo de trabalho. Desde o início do processo nos layouts, animações e criação de elementos, até a finalização, a capacidade de uso de scripts nos permitiu gerenciar cenas de grande complexidade. Achamos que o Maya foi especialmente benéfico para os nossos canais de processamento de iluminação e dinâmica. Ele nos ajudou a gerar efeitos verossímeis, ainda que bastante elaborados, de um jeito fácil para o artista”.
A Sony Pictures Imageworks (SPI) executou 154 tomadas, inclusive um colossal ambiente de CG de um estaleiro construído dentro das montanhas do Himalaia. A SPI integrou automaticamente essas extensões de cenários digitais com a placa fotográfica da ação ao vivo. John Haley, supervisor de CG da SPI, disse, “O Maya permitiu que nossos modeladores construíssem nove navios, de um quilômetro de comprimento, completos com milhares de passageiros, centenas de trabalhadores e dúzias de veículos. Além disso, nossa equipe de modelagem criou vários quilômetros quadrados de terreno acidentado no alto das montanhas, e ainda contou com os recursos de animação e layout do Maya para dar vida a essas cenas enormes totalmente geradas no computador.”
Os artistas da Scanline VFX criaram mais de 10 tomadas complexas de simulação de água, inclusive a de um porta-aviões em um maremoto sendo arremessado contra a Casa Branca. As ferramentas usadas pela Scanline VFX incluem o 3ds Max, o plug-in VRay e um sistema proprietário de simulação, o Flowline. “Mais de 95% de nossas tomadas foram totalmente geradas no computador, e criar tudo isso exigiu um espaço em disco de 1.200 terabytes. A vantagem do 3ds Max é que ele pode trabalhar com conjuntos enormes de dados, e podemos fazer boa parte do trabalho com o software de fábrica mesmo,” afirmou Stephan Trojansky, supervisor sênior de efeitos visuais da Scanline VFX.
A Evil Eye Pictures produziu 45 tomadas de ambientes e telas verdes para o “2012.” John L. Jack, cofundador da Evil Eye, disse, “Usamos os efeitos de fluidos e partículas do software Maya para criar a respiração e a neve de CG para uma das principais sequências, e para fazer o trabalho de integração do nosso ambiente e a pintura mate”.