Produttore: Xpressed | Download Link: AppStore |Prezzo: 2,39€
Voto Utenti: [ratings]
L’iPhone sembra una piattaforma nata per i giochi strategici: che si tratti di difendere castelli, basi spaziali o semplicemente far fuori i vermi dell’altra squadra, sicuramente questo genere di titoli – insieme alle varie corse automobilistiche – ha riscosso il maggior successo tra gli utenti. Da qualche giorno, però, sull’AppStore è disponibile l’ultima versione di uno strategico a turni che appare sensibilmente migliorato rispetto alla prima release e che riuscirà a coinvolgere tantissime persone: parliamo di Uniwar.
Uniwar è un gioco molto divertente, dalla grafica piuttosto spartana e poco accattivante, che, però, dopo i primi 10 minuti vi costringerà a rimandare gli impegni della giornata. Il “concept” del gioco è veramente elementare: il nostro obiettivo sarà quello di costruire armate, recuperare risorse, distruggere le milizie nemiche e conquistare le loro basi. Insomma, nulla di nuovo rispetto ai vari Warcraft, C&C e simili, con l’unica differenza che, come in una specie di Risiko, dopo aver condotto i nostri attacchi dovremo lasciare il turno al nostro avversario.
Dal menu principale è possibile accedere a 3 diverse modalità di gioco:
- Campaign;
- Solo;
- Online.
Nella modalità campagna prenderemo il comando della razza Sapiens (i soliti umani, chiaramente) e dovremo affrontare e sconfiggere le altre due razze del gioco Titans e Khraleans attraverso più di 50 livelli. Per farlo avremo a disposizione oltre 20 unità differenti, dalla fanteria ai carri armati (che ci supporteranno dall’inizio del gioco) fino agli elicotteri, sottomarini e altro ancora, che guadagneremo nel corso delle missioni. Ogni unità ha delle caratteristiche particolari, come la potenza di fuoco, la “portata” e la velocità di spostamento (ovvero il numero di esagoni che può attraversare per ogni turno).
Il campo di battaglia, infatti, influenza molto la strategia da adottare: gli esagoni che compongono l’area di gioco hanno caratteristiche differenti (pianure, foreste, montagne, mari, deserti) che influenzano il movimento delle nostre truppe. Per fare un esempio, un carro armato può oltrepassare deserti pianure e foreste, ma non può certo attraversare il mare, viceversa i sottomarini possono spostarsi solo negli esagoni dove è presente acqua.
Per ogni missione ci sono diversi obiettivi: costruire particolari edifici, prendere possesso delle basi nemiche, addestrare un certo numero di unità e, immancabile, fare fuori il Boss avversario, l’unità più potente della fazione avversa.
La modalità Solo ci permette, invece, di prendere il comando di una qualsiasi delle tre razze e di avere, da subito, tutti gli armamenti disponibili nel gioco. Si tratta di una modalità ideale per partite veloci, che durano il tempo di una decina di fermate di autobus ma che ci permettono di sperimentare l’intelligenza artificiale dei nostri avversari, davvero curata e, a volte, imprevedibile. Tuttavia, quello che rende Uniwar un vero “must-have” per gli appassionati del genere, è la modalità Play Online. Registrandosi sul portale del produttore, infatti, avremo accesso ai server di gioco e potremo sfidare utenti di tutto il mondo in partite all’ultimo robot: se ci siamo divertiti nella modalità campagna, giocare a Uniwar online diventerà una vera droga! I “maniaci” avranno addirittura la possibilità di gestire fino a 20 incontri contemporaneamente, roba da diventare matti!
Se il gioco è molto coinvolgente non possiamo tuttavia non sottolineare i suoi lati negativi: per prima cosa la grafica e le animazioni che non rendono giustizia al gameplay. In secondo luogo, il sonoro poco coinvolgente: avremmo onestamente gradito la possibilità di riprodurre le nostre playlist durante le sessioni di gioco. Ultimo, ma non certo meno importante, il “lag” (tempo di attesa) tra un turno e l’altro quando giochiamo online: anche qui i programmatori di Xpressed hanno ancora molto da lavorare.
In ogni caso, Uniwar resta davvero un bel gioco, dedicato a chi non si ferma troppo alle apparenze e apprezza più le dinamiche di gioco che il “look”. Il titolo è compatibile con iPhone e iPod Touch, richiede il firmware 2.2.1 e superiori e, per il momento, è localizzato solo in inglese. Buon divertimento!
// Logica completa dello shortcode 'app' function appstore_shortcode_logic($atts, $content = null) { // Attributi di default $atts = shortcode_atts(array( 'id' => '', 'img' => '', 'nome' => '', 'sottotitolo' => '', 'prezzo' => '', 'link' => '', 'store' => 'App Store', 'template' => '', 'inapp' => '', 'background' => '', 'link_icon' => '', ), $atts, 'card'); // Verifica del valore dell'attributo 'stile' $template_class = !empty($atts['template']) ? sanitize_html_class($atts['template']) : ''; // Verifica se il file JSON della cache esiste $cache_dir = '/srv/www/ispazio.net/www/wp-content/plugins/appstore_ispazio/app_cache/'; $cache_file = $cache_dir . "app_" . sanitize_key($atts['id']) . ".json"; // Determina se la cache è valida: JSON esiste, non scaduto E icona principale esiste sul disco $_app_id_check = sanitize_key($atts['id']); $_img_main_path = $cache_dir . "icon250_" . $_app_id_check . ".jpg"; $_cache_valid = file_exists($cache_file) && filesize($cache_file) > 0 && time() - filemtime($cache_file) < 31557600 && file_exists($_img_main_path); if ($_cache_valid) { $json = file_get_contents($cache_file); } else { // Interroga l'API di App Store e scarica il JSON utilizzando cURL $itunes_api_base = "https://itunes.apple.com/lookup?id=" . sanitize_key($atts['id']); $country_list = ['IT', 'US']; // puoi aggiungere altri paesi se vuoi $json = ''; $data = []; foreach ($country_list as $country) { $itunes_api_url = $itunes_api_base . "&country=" . $country; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $itunes_api_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0"); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json')); $json = curl_exec($ch); curl_close($ch); $data = json_decode($json, true); if (!empty($data['results'])) { break; // abbiamo trovato un risultato valido, fermiamo il ciclo } } if (isset($data['results'][0]['artworkUrl100'])) { $original_image_url = $data['results'][0]['artworkUrl100']; $new_image_url = str_replace('100x100bb.jpg', '250x250bb.jpg', $original_image_url); // Scarica e salva l'immagine dell'artwork sul tuo server $image_id = sanitize_key($atts['id']); $image_path = $cache_dir . "icon250_" . $image_id . ".jpg"; file_put_contents($image_path, file_get_contents($new_image_url)); if (function_exists('ispazio_convert_to_modern')) ispazio_convert_to_modern($image_path); // Modifica il JSON con l'URL dell'immagine dell'artwork sul tuo server $data['results'][0]['artworkUrl100'] = "https://www.ispazio.net/wp-content/plugins/appstore_ispazio/app_cache/icon250_" . $image_id . ".jpg"; // Crea anche versione 140px per template mini (retina 2x per 70x70) $icon140_path = $cache_dir . "icon140_" . $image_id . ".jpg"; if ( ! file_exists( $icon140_path ) && function_exists( 'imagecreatefromjpeg' ) ) { $src_img = @imagecreatefromjpeg( $image_path ); if ( $src_img ) { $dst_img = imagecreatetruecolor( 140, 140 ); imagecopyresampled( $dst_img, $src_img, 0, 0, 0, 0, 140, 140, imagesx( $src_img ), imagesy( $src_img ) ); imagejpeg( $dst_img, $icon140_path, 85 ); imagedestroy( $src_img ); imagedestroy( $dst_img ); if (function_exists('ispazio_convert_to_modern')) ispazio_convert_to_modern($icon140_path); } } // Sostituisci anche gli URL delle prime 4 immagini degli screenshot if (isset($data['results'][0]['screenshotUrls'])) { $screenshotUrls = $data['results'][0]['screenshotUrls']; $screenshotUrlsOnServer = array(); for ($i = 0; $i < min(count($screenshotUrls), 4); $i++) { $screenshotUrl = $screenshotUrls[$i]; $screenshotFilename = basename($screenshotUrl); $screenshotSavePath = $cache_dir . "screenshot_" . $image_id . "_" . $i . ".jpg"; // Scarica e salva l'immagine dello screenshot sul tuo server file_put_contents($screenshotSavePath, file_get_contents($screenshotUrl)); if (function_exists('ispazio_convert_to_modern')) ispazio_convert_to_modern($screenshotSavePath); // Modifica il JSON con l'URL dell'immagine dello screenshot sul tuo server $screenshotUrlsOnServer[] = "https://www.ispazio.net/wp-content/plugins/appstore_ispazio/app_cache/screenshot_" . $image_id . "_" . $i . ".jpg"; } // Aggiorna il JSON con gli URL delle immagini degli screenshot sul tuo server $data['results'][0]['screenshotUrls'] = $screenshotUrlsOnServer; } } // Salva il JSON nella cache solo se non è vuoto if (!empty($json)) { file_put_contents($cache_file, json_encode($data)); } } // Decodifica il JSON $data = json_decode($json, true); // Se il "nome" non è specificato nell'attributo, usa il trackName dal JSON $nome = isset($atts['nome']) && !empty($atts['nome']) ? $atts['nome'] : ($data['results'][0]['trackName'] ?? 'Scarica da App Store'); // Se il "sottotitolo" non è specificato nell'attributo, usa artistName dal JSON $sottotitolo = isset($atts['sottotitolo']) && !empty($atts['sottotitolo']) ? $atts['sottotitolo'] : ($data['results'][0]['artistName'] ?? ''); // Se il "prezzo" non è specificato nell'attributo, usa il formattedPrice dal JSON $formattedPrice = !empty($data['results'][0]['formattedPrice']) ? $data['results'][0]['formattedPrice'] : null; $prezzo = !empty($atts['prezzo']) ? $atts['prezzo'] : (!empty($formattedPrice) ? $formattedPrice : (!empty(trim($content)) ? trim($content) : 'OTTIENI')); // Se l'URL dell'immagine non è specificato nell'attributo, usa quello dal JSON $hide_image_class = ''; $card_body_style = ''; $container_style = ''; $container_extra_class = ''; if (isset($atts['img']) && trim($atts['img']) === 'scontiamolo') { $img = 'https://www.ispazio.net/wp-content/plugins/appstore_ispazio/app_cache/icon250_1506946624.jpg'; $container_extra_class = 'scontiamolo-mode'; } elseif (!empty($atts['img'])) { $img = $atts['img']; } else { $img = $data['results'][0]['artworkUrl100'] ?? "https://www.ispazio.net/wp-content/uploads/2022/10/appstore_icon.png"; } // Per template mini usa icon140 (70x70 retina) invece di icon250 if ( $template_class === 'mini' ) { $img = str_replace( 'icon250_', 'icon140_', $img ); } // Genera il link dell'app su App Store $link = !empty($atts['link']) ? $atts['link'] : "https://apps.apple.com/it/app/id" . $atts['id'] . "?platform=iphone"; $link_icon = !empty($atts['link_icon']) ? $atts['link_icon'] : $link; // HTML immagine con o senza effetto rotazione (in base a template) $img_html = ''; if (!empty($img)) { if ($template_class === 'striscia') { $img_html = '




































































































































































































































Accedi per lasciare un commento:
0 Commenti