/* ========================================================= FICHA · SEO / META / JSON-LD ========================================================= */ if (!function_exists('cez_seo_clean_text')) { function cez_seo_clean_text($value, int $limit = 0): string { $text = trim(preg_replace('/\s+/u', ' ', strip_tags((string)$value))); if ($limit > 0 && function_exists('mb_strlen') && mb_strlen($text, 'UTF-8') > $limit) { $text = rtrim(mb_substr($text, 0, $limit - 1, 'UTF-8')) . '…'; } elseif ($limit > 0 && strlen($text) > $limit) { $text = rtrim(substr($text, 0, $limit - 1)) . '…'; } return $text; } } if (!function_exists('cez_seo_companies_from_row')) { function cez_seo_companies_from_row(array $r, int $max = 3): array { $out = []; foreach (['compania','compania2','compania3','compania4','compania5','compania6'] as $field) { foreach (explode(',', (string)($r[$field] ?? '')) as $name) { $name = trim($name); if ($name !== '' && !in_array($name, $out, true)) { $out[] = $name; } } } return array_slice($out, 0, $max); } } if (!function_exists('cez_seo_platforms_from_codes')) { function cez_seo_platforms_from_codes(array $codes, array $sisToSistemaMap = [], int $max = 6): array { $out = []; foreach ($codes as $code) { $code = trim((string)$code); if ($code === '') { continue; } $label = trim((string)($sisToSistemaMap[$code] ?? $code)); if ($label !== '' && !in_array($label, $out, true)) { $out[] = $label; } } return array_slice($out, 0, $max); } } if (!function_exists('cez_ficha_meta_description')) { function cez_ficha_meta_description(array $r, array $context = []): string { $isEn = (($context['l'] ?? null) === 'en'); $pg = trim((string)($context['pg'] ?? '')); $item = trim((string)($context['itemDescription'] ?? '')); $name = trim((string)($r['nombre'] ?? '')); $subtitle = trim((string)($r['subtitulo'] ?? '')); $fullName = trim($name . ($subtitle !== '' ? ' - ' . $subtitle : '')); $companies = cez_seo_companies_from_row($r, 2); $companyText = implode(' / ', $companies); $yearText = trim((string)($context['anos_string'] ?? '')); $platforms = cez_seo_platforms_from_codes((array)($context['platforms'] ?? []), (array)($context['sisToSistemaMap'] ?? []), 5); $platformText = implode(', ', $platforms); $features = []; if ($pg === '') { if (!empty($r['comentario'])) { $features[] = $isEn ? 'review' : 'análisis'; } if ((int)($context['totalDescargasFicha'] ?? 0) > 0) { $features[] = $isEn ? 'downloads' : 'descargas'; } if ((int)($r['rscreens'] ?? 0) > 0) { $features[] = $isEn ? 'screenshots' : 'pantallas'; } if ((int)($r['rcovers'] ?? 0) > 0) { $features[] = $isEn ? 'covers' : 'carátulas'; } if ((int)($r['rmanual'] ?? 0) > 0) { $features[] = $isEn ? 'manuals' : 'manuales'; } if ((int)($context['rmags'] ?? 0) > 0) { $features[] = $isEn ? 'magazine reviews' : 'revistas'; } $features[] = $isEn ? 'credits' : 'créditos'; } if ($pg !== '' && $item !== '') { $desc = $isEn ? $item . ' of ' . $fullName . '. Additional material and information from Computer Emuzone' : $item . ' de ' . $fullName . '. Material e información complementaria en Computer Emuzone'; } else { $featureText = implode(', ', array_values(array_unique($features))); $desc = $isEn ? 'Game card of ' . $fullName . ($featureText ? ': ' . $featureText : '') : 'Ficha de ' . $fullName . ($featureText ? ': ' . $featureText : ''); } $tail = []; if ($companyText !== '') { $tail[] = $companyText; } if ($yearText !== '') { $tail[] = $yearText; } if ($platformText !== '') { $tail[] = ($isEn ? 'for ' : 'para ') . $platformText; } if ($tail) { $desc .= '. ' . implode(', ', $tail) . '.'; } return cez_seo_clean_text($desc, 165); } } if (!function_exists('cez_ficha_jsonld')) { function cez_ficha_jsonld(array $r, array $context = []): array { $isEn = (($context['l'] ?? null) === 'en'); $name = trim((string)($r['nombre'] ?? '')); $subtitle = trim((string)($r['subtitulo'] ?? '')); $fullName = trim($name . ($subtitle !== '' ? ' - ' . $subtitle : '')); $companies = cez_seo_companies_from_row($r, 6); $platforms = cez_seo_platforms_from_codes((array)($context['platforms'] ?? []), (array)($context['sisToSistemaMap'] ?? []), 12); $canonical = trim((string)($context['canonical'] ?? '')); $imageUrl = trim((string)($context['imageUrl'] ?? '')); $description = trim((string)($context['description'] ?? '')); $json = [ '@context' => 'https://schema.org', '@type' => 'VideoGame', 'name' => $fullName !== '' ? $fullName : $name, 'url' => $canonical, 'inLanguage' => $isEn ? 'en' : 'es', 'publisher' => [ '@type' => 'Organization', 'name' => 'Computer Emuzone', 'url' => 'https://computeremuzone.com/' ], ]; if ($description !== '') { $json['description'] = $description; } if ($imageUrl !== '') { $json['image'] = [$imageUrl]; } if ($canonical !== '') { $json['mainEntityOfPage'] = ['@type' => 'WebPage', '@id' => $canonical]; } if ($platforms) { $json['gamePlatform'] = $platforms; } if ($companies) { $json['creator'] = array_map(static fn($name) => ['@type' => 'Organization', 'name' => $name], $companies); } $years = preg_split('/[^0-9]+/', (string)($context['anos_string'] ?? ''), -1, PREG_SPLIT_NO_EMPTY); if (!empty($years)) { $json['datePublished'] = (string)min(array_map('intval', $years)); } $genreLabels = []; foreach ((array)($context['genres'] ?? []) as $g) { $label = trim((string)($g[$isEn ? 'nombre_en' : 'nombre'] ?? $g['nombre'] ?? '')); if ($label !== '' && !in_array($label, $genreLabels, true)) { $genreLabels[] = $label; } } foreach ((array)($context['subgenres'] ?? []) as $g) { $label = trim((string)($g[$isEn ? 'nombre_en' : 'nombre'] ?? $g['nombre'] ?? '')); if ($label !== '' && !in_array($label, $genreLabels, true)) { $genreLabels[] = $label; } } if ($genreLabels) { $json['genre'] = $genreLabels; } $dateModified = trim((string)($context['dateModified'] ?? '')); if ($dateModified !== '' && preg_match('/^\d{4}-\d{2}-\d{2}/', $dateModified)) { $json['dateModified'] = substr($dateModified, 0, 10); } $votos = (int)($context['votos'] ?? 0); $media = (float)($context['media'] ?? 0); if ($votos > 0 && $media > 0) { $json['aggregateRating'] = [ '@type' => 'AggregateRating', 'ratingValue' => round($media, 1), 'ratingCount' => $votos, 'bestRating' => 10, 'worstRating' => 1 ]; } $cezScore = isset($context['cezScore']) && $context['cezScore'] !== '' ? (float)$context['cezScore'] : 0.0; $reviewBody = cez_seo_clean_text($r['comentario'] ?? '', 500); if ($reviewBody !== '') { $review = [ '@type' => 'Review', 'reviewBody' => $reviewBody, 'author' => ['@type' => 'Organization', 'name' => 'Computer Emuzone'] ]; if ($cezScore > 0) { $review['reviewRating'] = [ '@type' => 'Rating', 'ratingValue' => round($cezScore, 1), 'bestRating' => 10, 'worstRating' => 1 ]; } $json['review'] = $review; } return array_filter($json, static fn($v) => $v !== '' && $v !== [] && $v !== null); } } Boleivol Beach (Ediciones Manali 1992) :: PC Zone
computer emuzone review
agamenon3
Review
agamenon3
Published on2019/02/15
From the same illustration of the main menu (which plagiarizes without flush the "Beach Volley cover"), it's obvious that the source of inspiration of Boleivol Beach is the aforementioned Ocean Software title.

Unfortunately, Boleivol Beach is a very poor title that is light years away from the Ocean game. In fact, the tremendous lack of spelling present in the title already serves as a warning (that "Boleivol" ... uffff).

Boleivol Beach is a particular beach volleyball game, since it only allows matches between unipersonal teams (nothing to play in pairs, as in reality).

In addition, the program practically lacks options and game modes. It does not allow to participate in competitions, or change opponent, or even vary the level of competition of the only existing opponent. In Boleivol Beach we can only play against a single opponent in a single scenario. It's a good thing that we have the possibility of playing against some friend in the two-player mode, which if not ...

As for the matches themselves say that they have a duration of 5 sets, to the best of 15 points each. These 5 sets have to be played in their entirety, yes or yes (even if one of the participants has won the first three).

RATING



- GRAPHICS: The unoriginal illustration of the menu and the background decoration are acceptable. By against the players of both teams, although of acceptable size, more like mannequins prepared for a boxing match than volleyball players.

- ANIMATION: The animations of the players are unrealistic, very rigid. At least both players and the ball move fluidly.

- SOUND: There are only two sounds .... Well, beeps, to be more exact. We have the one that sounds when hitting the ball and the one that sounds when any of the players gets a point. Nothing else.

- PLAYING: The control of our character is somewhat particular. In theory it is simple (four arrow keys plus one for the hit or jump). Now, it may take us a few minutes to successfully hit the ball, because when we retreat, our player will tend to fail in receptions, while if we try to hit the ball as we advance we will have much more success. Once this is controlled, winning the computer will be a simple task. Two player mode saves something to the program.

RESUME



Loose from start to finish, Boleivol Beach is a sort of "low cost" version of games like Kings of the Beach or Beach Volley. Very short, unrealistic and quite easy to overcome, in which only saves (and that is not the panacea) the modality for two players.
First published in: Juegos Liberados
RATINGSratings

CEZ

Total 3.2
Editorial rating
Current rating and category breakdown.
#448 in pc #87 in Sport
Current CEZ rating 3.2
Graphics 3.9
Music 1.2
Gameplay 3.3
Presentation -

Community & Magazines

Votes
8
Participation
#274 in pc #51 in Sport
Rating Votes
1 1
2 1
3 1
6 1
8 2
9 1
10 1
Users
Users
5.9
#323 in pc #59 in Sport
developing teamdeveloping team
commentcomment
AFFILIATES
In CEZ and other CEZ Zones
thanksthanks
There are no registered contributions for this card yet.