File: /var/www/html/wp-content/mu-plugins/ethnic-unity-game-development-page.php
<?php
/**
* Plugin Name: Ethnic Unity Game Development Page
* Description: Creates and renders the Unity Game Development sub-service page under Game Development.
* Version: 1.0.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! function_exists( 'ethnic_unity_game_development_page_parent_id' ) ) {
function ethnic_unity_game_development_page_parent_id() {
static $parent_id = null;
if ( null !== $parent_id ) {
return $parent_id;
}
$page = get_page_by_path( 'services/game-development' );
if ( $page instanceof WP_Post ) {
$parent_id = (int) $page->ID;
} else {
$fallback = get_page_by_path( 'game-development' );
$parent_id = $fallback instanceof WP_Post ? (int) $fallback->ID : 0;
}
return $parent_id;
}
}
if ( ! function_exists( 'ethnic_unity_game_development_page_get_target_page' ) ) {
function ethnic_unity_game_development_page_get_target_page() {
static $page = false;
if ( false !== $page ) {
return $page instanceof WP_Post ? $page : null;
}
$page = get_page_by_path( 'services/game-development/unity-game-development' );
if ( ! ( $page instanceof WP_Post ) ) {
$fallback = get_page_by_path( 'unity-game-development' );
if ( $fallback instanceof WP_Post && (int) $fallback->post_parent === ethnic_unity_game_development_page_parent_id() ) {
$page = $fallback;
}
}
return $page instanceof WP_Post ? $page : null;
}
}
if ( ! function_exists( 'ethnic_unity_game_development_page_ensure_page' ) ) {
function ethnic_unity_game_development_page_ensure_page() {
static $did_run = false;
if ( $did_run ) {
return;
}
$did_run = true;
$parent_id = ethnic_unity_game_development_page_parent_id();
if ( ! $parent_id ) {
return;
}
$postarr = array(
'post_type' => 'page',
'post_title' => 'Unity Game Development',
'post_name' => 'unity-game-development',
'post_parent' => $parent_id,
'post_status' => 'publish',
'post_content' => '',
'comment_status' => 'closed',
'ping_status' => 'closed',
);
$page = get_page_by_path( 'services/game-development/unity-game-development' );
if ( $page instanceof WP_Post ) {
$needs_update = 'Unity Game Development' !== $page->post_title
|| (int) $page->post_parent !== $parent_id
|| 'publish' !== $page->post_status;
if ( $needs_update ) {
wp_update_post(
array_merge(
$postarr,
array(
'ID' => (int) $page->ID,
)
)
);
clean_post_cache( (int) $page->ID );
}
return;
}
$fallback = get_page_by_path( 'unity-game-development' );
if ( $fallback instanceof WP_Post ) {
wp_update_post(
array_merge(
$postarr,
array(
'ID' => (int) $fallback->ID,
)
)
);
clean_post_cache( (int) $fallback->ID );
return;
}
wp_insert_post( $postarr );
}
add_action( 'init', 'ethnic_unity_game_development_page_ensure_page', 5 );
}
if ( ! function_exists( 'ethnic_unity_game_development_page_is_target' ) ) {
function ethnic_unity_game_development_page_is_target() {
if ( is_admin() ) {
return false;
}
$page = ethnic_unity_game_development_page_get_target_page();
if ( ! ( $page instanceof WP_Post ) ) {
return false;
}
return (int) get_queried_object_id() === (int) $page->ID || is_page( (int) $page->ID );
}
}
if ( ! function_exists( 'ethnic_unity_game_development_page_url' ) ) {
function ethnic_unity_game_development_page_url( $path ) {
return home_url( '/' . ltrim( (string) $path, '/' ) . '/' );
}
}
if ( ! function_exists( 'ethnic_unity_game_development_page_contact_url' ) ) {
function ethnic_unity_game_development_page_contact_url( $args = array() ) {
return ethnic_consultation_route_contact_url( $args, ethnic_unity_game_development_page_url( 'contact-us' ) );
}
}
if ( ! function_exists( 'ethnic_unity_game_development_page_case_studies_url' ) ) {
function ethnic_unity_game_development_page_case_studies_url() {
return function_exists( 'ethnic_case_studies_archive_url' ) ? ethnic_case_studies_archive_url() : ethnic_unity_game_development_page_url( 'case-studies' );
}
}
if ( ! function_exists( 'ethnic_unity_game_development_page_data' ) ) {
function ethnic_unity_game_development_page_data() {
static $data = null;
if ( null !== $data ) {
return $data;
}
$data = array(
'metaTitle' => 'Unity Game Development Services | 2D, 3D & Cross-Platform Game Development',
'metaDescription' => 'Looking for Unity game development services? We build 2D and 3D games with Unity, support cross-platform production, and help businesses create scalable, engaging game experiences.',
'heroTitle' => 'Unity Game Development',
'heroText' => 'We provide Unity game development services for businesses that need scalable, engaging, and cross-platform games built for mobile, web, and interactive digital products with production planning and commercial clarity in view from the start.',
'heroPoints' => array(
'Unity-based 2D and 3D game development',
'Cross-platform production support',
'Prototyping, full production, and ongoing updates',
),
'overviewParagraphs' => array(
'Our Unity game development services support studios, startups, brands, and entertainment businesses that need an engine-focused partner for prototypes, MVPs, full production, gameplay systems, user interfaces, backend-connected features, and post-launch improvement. The goal is to make Unity practical for the product, not simply choose the engine by default.',
'Unity remains a flexible engine for different genres, visual styles, and platform targets, which makes it a strong fit for teams that need iteration speed, scalable workflows, and room to move from prototype into production without rebuilding the whole delivery path.',
'We focus on gameplay quality, technical performance, scalable architecture, and production efficiency across concept validation, development, optimization, and launch readiness so the game stays playable, maintainable, and commercially aligned.',
),
'overviewFeatures' => array(
array(
'icon' => 'engine',
'title' => 'Unity-Focused Production',
'copy' => 'Shape the workflow, systems, and delivery plan around how Unity can best support the game being built.',
),
array(
'icon' => 'asset',
'title' => '2D and 3D Game Capability',
'copy' => 'Support both 2D and 3D game development with the same engine foundation while adapting to the visual and gameplay needs of each product.',
),
array(
'icon' => 'platform',
'title' => 'Cross-Platform Delivery',
'copy' => 'Plan efficient production and deployment across mobile, web, desktop, and other targets where Unity is the right fit.',
),
array(
'icon' => 'live',
'title' => 'Live Product Support',
'copy' => 'Support updates, feature expansion, optimization, and operational improvements after the first release milestone.',
),
),
'overviewStats' => array(
array(
'label' => 'Engine role',
'value' => 'Prototype to production',
),
array(
'label' => 'Visual range',
'value' => '2D and 3D delivery',
),
array(
'label' => 'Target fit',
'value' => 'Mobile, web, desktop',
),
),
'whyUnityParagraphs' => array(
'Unity is often chosen because it balances practical iteration speed, flexible production workflows, and broad platform support. That makes it a strong option for teams that need to move from concept validation into a stable delivery path without making the engine itself the bottleneck.',
'It can support many kinds of products, from Unity mobile game development and casual games through multiplayer-connected experiences, educational titles, and branded interactive builds. The right fit depends on the game type, but Unity can serve both rapid prototyping and full production when the project scope aligns.',
),
'whyUnityHighlights' => array(
array(
'icon' => 'engine',
'title' => 'Flexible Engine for Multiple Game Types',
'copy' => 'Use Unity across different genres, mechanics, and visual directions without forcing the same product model onto every project.',
),
array(
'icon' => 'spark',
'title' => 'Efficient Prototyping and Iteration',
'copy' => 'Support faster experiments, feature validation, and gameplay refinement while ideas are still taking shape.',
),
array(
'icon' => 'platform',
'title' => 'Broad Platform Support',
'copy' => 'Plan for mobile, web, desktop, and related targets from one engine workflow where project fit makes sense.',
),
array(
'icon' => 'deploy',
'title' => 'Strong Production Workflow Alignment',
'copy' => 'Keep tools, assets, builds, and release processes aligned around a practical engine-centered delivery structure.',
),
array(
'icon' => 'controller',
'title' => 'Suitable for Startups and Established Product Teams',
'copy' => 'Match the engine approach to the size, scope, and maturity of the team delivering the product.',
),
),
'capabilitiesIntro' => 'Unity supports both 2D and 3D game development, but the production strengths, art pipeline needs, and gameplay priorities differ across those formats. We shape the delivery model around the visual direction, platform scope, and product goals of the project.',
'capabilityCards' => array(
array(
'icon' => 'puzzle',
'title' => '2D Game Development',
'copy' => 'Unity can support casual games, puzzle games, side-scrollers, strategy games, educational products, and stylized 2D experiences that benefit from efficient iteration and UI-driven production.',
'highlights' => array(
'Gameplay flexibility',
'Asset pipeline support',
'Interface integration',
'Production scalability',
),
'visualTitle' => '2D scene preview',
'visualCopy' => 'Sprites, HUD panels, level map, and progression overlays.',
),
array(
'icon' => 'action',
'title' => '3D Game Development',
'copy' => 'Unity also supports immersive gameplay, environment-based design, simulation-style products, and richer visual interaction with scene building, animation support, and performance-aware delivery.',
'highlights' => array(
'Gameplay flexibility',
'Asset pipeline support',
'Interface integration',
'Production scalability',
),
'visualTitle' => '3D scene preview',
'visualCopy' => 'Scene lighting, camera systems, animation, and environment flow.',
),
),
'platformParagraphs' => array(
'Unity can support cross-platform game development across mobile, web, desktop, and additional targets depending on the project scope. That broader reach can help businesses streamline production logic while still aiming for multiple player touchpoints.',
'The right deployment model depends on gameplay complexity, performance needs, audience expectations, and product goals. Shared production workflows can be useful, but they still need to respect platform-specific realities around UX, optimization, and release planning.',
),
'platformHighlights' => array(
array(
'icon' => 'deploy',
'title' => 'Shared Production Workflows',
'copy' => 'Keep core systems, content processes, and production logic aligned across multiple targets where Unity is a strong fit.',
),
array(
'icon' => 'platform',
'title' => 'Broader Reach Across Target Platforms',
'copy' => 'Use cross-platform game development strategies to serve more audiences without starting separate production paths from scratch.',
),
array(
'icon' => 'spark',
'title' => 'Efficient Iteration and Updates',
'copy' => 'Support feature updates, fixes, and production refinement through a more connected engine workflow.',
),
array(
'icon' => 'mobile',
'title' => 'Flexible Deployment Options',
'copy' => 'Evaluate platform targets based on game type, user behavior, and performance expectations before locking the release model.',
),
array(
'icon' => 'browser',
'title' => 'Strong Fit for Multi-Target Product Strategies',
'copy' => 'Unity can be especially useful when a product benefits from shared logic across several channels or experience types.',
),
),
'idealProjectsIntro' => 'Engine choice should follow product goals, gameplay complexity, platform targets, visual direction, and production workflow needs. Unity is a strong fit when flexibility, iteration speed, and multi-target potential are part of the product equation.',
'idealProjects' => array(
array(
'icon' => 'mobile',
'title' => 'Mobile Games',
'copy' => 'Support Unity mobile game development projects that need scalable production and commercial release planning.',
),
array(
'icon' => 'casual',
'title' => 'Casual and Puzzle Games',
'copy' => 'Use Unity for approachable gameplay loops, content-driven systems, and fast iteration cycles.',
),
array(
'icon' => 'asset',
'title' => '2D and 3D Indie-Style Games',
'copy' => 'Build stylized interactive products that need flexible art direction and manageable production workflows.',
),
array(
'icon' => 'education',
'title' => 'Educational and Training Games',
'copy' => 'Create guided experiences where clarity, structure, and interactive learning matter as much as presentation.',
),
array(
'icon' => 'multiplayer',
'title' => 'Multiplayer-Connected Games',
'copy' => 'Support products that combine Unity gameplay with connected systems, sessions, and backend-linked features.',
),
array(
'icon' => 'brand',
'title' => 'Branded Interactive Experiences',
'copy' => 'Develop game-like branded products, promotional builds, or audience engagement experiences with clearer production control.',
),
array(
'icon' => 'spark',
'title' => 'Prototype-Driven Projects',
'copy' => 'Move quickly through gameplay validation and concept testing before expanding into a larger production scope.',
),
array(
'icon' => 'live',
'title' => 'Live-Service or Update-Friendly Games',
'copy' => 'Support games that need continued iteration, feature growth, and ongoing production updates after launch.',
),
),
'ctaTitle' => 'Looking for Unity Game Development Services?',
'ctaText' => 'Talk with us about Unity-based game ideas, 2D or 3D production needs, cross-platform game development, prototyping, or post-launch support requirements with a team focused on engine fit, gameplay quality, and commercial clarity.',
'ctaHighlights' => array(
'Clarify whether Unity is the right engine for the product before production deepens',
'Plan 2D or 3D delivery, platform scope, and workflow needs with more confidence',
'Move from prototype through production and launch with a practical Unity-focused path',
),
'ctaSteps' => array(
array(
'title' => 'Review the product fit',
'copy' => 'Assess gameplay goals, platforms, visual direction, and production constraints before the engine path is locked in.',
),
array(
'title' => 'Shape the Unity delivery plan',
'copy' => 'Map systems, assets, workflows, targets, and launch needs into a practical production structure.',
),
array(
'title' => 'Move into production and support',
'copy' => 'Turn the plan into a working roadmap for prototyping, full production, release readiness, and continued updates.',
),
),
);
return $data;
}
}
if ( ! function_exists( 'ethnic_unity_game_development_page_heading' ) ) {
function ethnic_unity_game_development_page_heading( $eyebrow, $title, $copy = '' ) {
ob_start();
?>
<div class="ethnic-unity-game-heading">
<?php if ( $eyebrow ) : ?>
<p class="ethnic-unity-game-heading__eyebrow"><?php echo esc_html( $eyebrow ); ?></p>
<?php endif; ?>
<h2 class="ethnic-unity-game-heading__title"><?php echo esc_html( $title ); ?></h2>
<?php if ( $copy ) : ?>
<p class="ethnic-unity-game-heading__copy"><?php echo esc_html( $copy ); ?></p>
<?php endif; ?>
</div>
<?php
return ob_get_clean();
}
}
if ( ! function_exists( 'ethnic_unity_game_development_page_icon' ) ) {
function ethnic_unity_game_development_page_icon( $icon ) {
if ( function_exists( 'ethnic_game_development_page_icon' ) ) {
return ethnic_game_development_page_icon( $icon );
}
if ( function_exists( 'ethnic_services_page_icon' ) ) {
return ethnic_services_page_icon( 'game' );
}
return '<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="8.5" /><path d="M8.6 12.3 10.8 14.5 15.4 9.9" /></svg>';
}
}
if ( ! function_exists( 'ethnic_unity_game_development_page_render' ) ) {
function ethnic_unity_game_development_page_render() {
$data = ethnic_unity_game_development_page_data();
$consultation_url = ethnic_unity_game_development_page_contact_url(
array(
'intent' => 'consultation',
'service' => 'unity-game-development',
)
);
$team_url = ethnic_unity_game_development_page_contact_url(
array(
'intent' => 'team',
'service' => 'unity-game-development',
)
);
$quote_url = ethnic_unity_game_development_page_contact_url(
array(
'intent' => 'quote',
'service' => 'unity-game-development',
)
);
$case_studies_url = ethnic_unity_game_development_page_case_studies_url();
ob_start();
?>
<div class="ethnic-unity-game-page">
<section class="ethnic-unity-game-section ethnic-unity-game-section--hero">
<div class="ethnic-unity-game-shell">
<div class="ethnic-unity-game-hero">
<div class="ethnic-unity-game-hero__copy">
<p class="ethnic-unity-game-kicker">Engine-Focused Production</p>
<h1 class="ethnic-unity-game-hero__title"><?php echo esc_html( $data['heroTitle'] ); ?></h1>
<p class="ethnic-unity-game-hero__lead"><?php echo esc_html( $data['heroText'] ); ?></p>
<div class="ethnic-unity-game-actions">
<a class="ethnic-unity-game-button ethnic-unity-game-button--primary" href="<?php echo esc_url( $consultation_url ); ?>">Book a Free Consultation</a>
<a class="ethnic-unity-game-button ethnic-unity-game-button--secondary" href="<?php echo esc_url( $case_studies_url ); ?>">View Case Studies</a>
</div>
<ul class="ethnic-unity-game-hero__points" aria-label="Unity game development highlights">
<?php foreach ( (array) $data['heroPoints'] as $point ) : ?>
<li><?php echo esc_html( $point ); ?></li>
<?php endforeach; ?>
</ul>
</div>
<div class="ethnic-unity-game-hero__visual" aria-hidden="true">
<div class="ethnic-unity-game-editor">
<div class="ethnic-unity-game-editor__window">
<div class="ethnic-unity-game-editor__toolbar">
<span>Hierarchy</span>
<span>Scene</span>
<span>Game</span>
<span>Inspector</span>
</div>
<div class="ethnic-unity-game-editor__workspace">
<div class="ethnic-unity-game-editor__sidebar ethnic-unity-game-editor__sidebar--left">
<p>Editor objects</p>
<span>Player controller</span>
<span>Camera rig</span>
<span>Enemy spawner</span>
<span>UI canvas</span>
</div>
<div class="ethnic-unity-game-editor__preview">
<div class="ethnic-unity-game-editor__scene-card ethnic-unity-game-editor__scene-card--2d">
<p>2D scene</p>
<strong>Sprite layers / HUD / level path</strong>
</div>
<div class="ethnic-unity-game-editor__scene-card ethnic-unity-game-editor__scene-card--3d">
<p>3D scene</p>
<strong>Camera / lighting / action space</strong>
</div>
<div class="ethnic-unity-game-editor__hud">
<span>Objective rail</span>
<span>Ability UI</span>
<span>Progression overlay</span>
</div>
</div>
<div class="ethnic-unity-game-editor__sidebar ethnic-unity-game-editor__sidebar--right">
<p>Inspector</p>
<span>Animation</span>
<span>Physics</span>
<span>Input</span>
<span>Build target</span>
</div>
</div>
</div>
<div class="ethnic-unity-game-editor__panel ethnic-unity-game-editor__panel--pipeline">
<p>Pipeline</p>
<strong>Prototype, content, test, optimize, deploy</strong>
</div>
<div class="ethnic-unity-game-editor__panel ethnic-unity-game-editor__panel--targets">
<p>Target matrix</p>
<div class="ethnic-unity-game-editor__targets">
<span>iOS</span>
<span>Android</span>
<span>Web</span>
<span>PC</span>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="ethnic-unity-game-section" id="overview">
<div class="ethnic-unity-game-shell">
<?php echo ethnic_unity_game_development_page_heading( 'Service Overview', 'Unity game development services built for teams that need engine-specific delivery without losing sight of gameplay, performance, and commercial outcomes.', 'We support concept validation through launch readiness while keeping the Unity workflow practical, scalable, and easy to align around.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<div class="ethnic-unity-game-overview">
<div class="ethnic-unity-game-overview__content">
<div class="ethnic-unity-game-prose">
<?php foreach ( (array) $data['overviewParagraphs'] as $paragraph ) : ?>
<p><?php echo esc_html( $paragraph ); ?></p>
<?php endforeach; ?>
</div>
<div class="ethnic-unity-game-card-grid ethnic-unity-game-card-grid--overview">
<?php foreach ( (array) $data['overviewFeatures'] as $feature ) : ?>
<article class="ethnic-unity-game-card ethnic-unity-game-card--feature">
<div class="ethnic-unity-game-card__icon">
<?php echo ethnic_unity_game_development_page_icon( $feature['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
<h3><?php echo esc_html( $feature['title'] ); ?></h3>
<p><?php echo esc_html( $feature['copy'] ); ?></p>
</article>
<?php endforeach; ?>
</div>
</div>
<div class="ethnic-unity-game-overview__visual" aria-label="Unity production overview">
<div class="ethnic-unity-game-overview-board">
<div class="ethnic-unity-game-overview-board__header">
<p>Unity production overview</p>
<strong>Gameplay systems, assets, UI, optimization, and release support flowing through one engine-led workflow.</strong>
</div>
<div class="ethnic-unity-game-overview-board__lanes">
<span>Gameplay</span>
<span>Assets</span>
<span>Optimization</span>
<span>Launch</span>
</div>
<div class="ethnic-unity-game-overview-board__stats">
<?php foreach ( (array) $data['overviewStats'] as $stat ) : ?>
<div class="ethnic-unity-game-overview-board__stat">
<strong><?php echo esc_html( $stat['value'] ); ?></strong>
<span><?php echo esc_html( $stat['label'] ); ?></span>
</div>
<?php endforeach; ?>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="ethnic-unity-game-section ethnic-unity-game-section--soft" id="why-unity">
<div class="ethnic-unity-game-shell">
<?php echo ethnic_unity_game_development_page_heading( 'Why Unity', 'Unity is a strong engine choice when a project benefits from flexibility, production speed, and cross-platform potential without making the workflow harder than it needs to be.', 'The engine can support rapid prototyping and full production alike, but the real value comes from how well the Unity workflow aligns with the product and team behind it.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<div class="ethnic-unity-game-stack">
<div class="ethnic-unity-game-stack__copy">
<div class="ethnic-unity-game-prose">
<?php foreach ( (array) $data['whyUnityParagraphs'] as $paragraph ) : ?>
<p><?php echo esc_html( $paragraph ); ?></p>
<?php endforeach; ?>
</div>
<div class="ethnic-unity-game-card-grid ethnic-unity-game-card-grid--why">
<?php foreach ( (array) $data['whyUnityHighlights'] as $highlight ) : ?>
<article class="ethnic-unity-game-card ethnic-unity-game-card--why">
<div class="ethnic-unity-game-card__icon">
<?php echo ethnic_unity_game_development_page_icon( $highlight['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
<h3><?php echo esc_html( $highlight['title'] ); ?></h3>
<p><?php echo esc_html( $highlight['copy'] ); ?></p>
</article>
<?php endforeach; ?>
</div>
</div>
<div class="ethnic-unity-game-stack__visual" aria-label="Unity workflow visual">
<div class="ethnic-unity-game-workbench">
<div class="ethnic-unity-game-workbench__header">
<p>Unity workflow board</p>
<strong>Prototype speed, scene building, asset flow, testing, and builds working in one connected production rhythm.</strong>
</div>
<div class="ethnic-unity-game-workbench__cards">
<div>
<small>Prototype</small>
<span>Rapid mechanic validation</span>
</div>
<div>
<small>Scene work</small>
<span>2D and 3D content alignment</span>
</div>
<div>
<small>Systems</small>
<span>Gameplay, UI, connected features</span>
</div>
<div>
<small>Delivery</small>
<span>Optimization and multi-target builds</span>
</div>
</div>
<div class="ethnic-unity-game-workbench__flow">
<span>Prototype</span>
<span>Build</span>
<span>Test</span>
<span>Ship</span>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="ethnic-unity-game-section" id="2d-3d-capabilities">
<div class="ethnic-unity-game-shell">
<?php echo ethnic_unity_game_development_page_heading( '2D and 3D Capabilities', 'Unity can support both 2D and 3D game development, but the right production path depends on the interaction model, content needs, and visual direction of the product.', $data['capabilitiesIntro'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<div class="ethnic-unity-game-card-grid ethnic-unity-game-card-grid--capabilities">
<?php foreach ( (array) $data['capabilityCards'] as $index => $card ) : ?>
<article class="ethnic-unity-game-capability-card">
<div class="ethnic-unity-game-capability-card__visual <?php echo 0 === $index ? 'ethnic-unity-game-capability-card__visual--2d' : 'ethnic-unity-game-capability-card__visual--3d'; ?>">
<p><?php echo esc_html( $card['visualTitle'] ); ?></p>
<strong><?php echo esc_html( $card['visualCopy'] ); ?></strong>
<div class="ethnic-unity-game-capability-card__frame">
<span>Gameplay</span>
<span>Assets</span>
<span>UI</span>
<span>Scale</span>
</div>
</div>
<div class="ethnic-unity-game-capability-card__body">
<div class="ethnic-unity-game-card__icon">
<?php echo ethnic_unity_game_development_page_icon( $card['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
<h3><?php echo esc_html( $card['title'] ); ?></h3>
<p><?php echo esc_html( $card['copy'] ); ?></p>
<ul class="ethnic-unity-game-capability-card__highlights">
<?php foreach ( (array) $card['highlights'] as $highlight ) : ?>
<li><?php echo esc_html( $highlight ); ?></li>
<?php endforeach; ?>
</ul>
</div>
</article>
<?php endforeach; ?>
</div>
</div>
</section>
<section class="ethnic-unity-game-section ethnic-unity-game-section--soft" id="cross-platform-benefits">
<div class="ethnic-unity-game-shell">
<?php echo ethnic_unity_game_development_page_heading( 'Cross-Platform Benefits', 'Unity can be a strong fit for cross-platform game development when the product benefits from shared production logic and multi-target release planning.', 'That cross-platform advantage still needs to be matched to game type, audience, performance, and business goals so the production path stays realistic.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<div class="ethnic-unity-game-stack">
<div class="ethnic-unity-game-stack__copy">
<div class="ethnic-unity-game-prose">
<?php foreach ( (array) $data['platformParagraphs'] as $paragraph ) : ?>
<p><?php echo esc_html( $paragraph ); ?></p>
<?php endforeach; ?>
</div>
<div class="ethnic-unity-game-card-grid ethnic-unity-game-card-grid--platform">
<?php foreach ( (array) $data['platformHighlights'] as $highlight ) : ?>
<article class="ethnic-unity-game-card ethnic-unity-game-card--platform">
<div class="ethnic-unity-game-card__icon">
<?php echo ethnic_unity_game_development_page_icon( $highlight['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
<h3><?php echo esc_html( $highlight['title'] ); ?></h3>
<p><?php echo esc_html( $highlight['copy'] ); ?></p>
</article>
<?php endforeach; ?>
</div>
</div>
<div class="ethnic-unity-game-stack__visual" aria-label="Unity platform matrix">
<div class="ethnic-unity-game-platform-matrix">
<div class="ethnic-unity-game-platform-matrix__core">Unity build core</div>
<div class="ethnic-unity-game-platform-matrix__node ethnic-unity-game-platform-matrix__node--ios">iOS</div>
<div class="ethnic-unity-game-platform-matrix__node ethnic-unity-game-platform-matrix__node--android">Android</div>
<div class="ethnic-unity-game-platform-matrix__node ethnic-unity-game-platform-matrix__node--web">Web</div>
<div class="ethnic-unity-game-platform-matrix__node ethnic-unity-game-platform-matrix__node--pc">PC</div>
<div class="ethnic-unity-game-platform-matrix__node ethnic-unity-game-platform-matrix__node--other">Other targets</div>
<div class="ethnic-unity-game-platform-matrix__note">Deployment strategy depends on platform expectations, performance needs, game type, and the wider product plan.</div>
</div>
</div>
</div>
</div>
</section>
<section class="ethnic-unity-game-section" id="ideal-project-types">
<div class="ethnic-unity-game-shell">
<?php echo ethnic_unity_game_development_page_heading( 'Ideal Project Types', 'Unity is a strong fit for many kinds of game and interactive product work when flexibility, iteration speed, and platform range matter to the delivery plan.', $data['idealProjectsIntro'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<div class="ethnic-unity-game-card-grid ethnic-unity-game-card-grid--projects">
<?php foreach ( (array) $data['idealProjects'] as $project ) : ?>
<article class="ethnic-unity-game-card ethnic-unity-game-project-card">
<div class="ethnic-unity-game-project-card__art">
<div class="ethnic-unity-game-card__icon">
<?php echo ethnic_unity_game_development_page_icon( $project['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
<span class="ethnic-unity-game-project-card__beam"></span>
</div>
<h3><?php echo esc_html( $project['title'] ); ?></h3>
<p><?php echo esc_html( $project['copy'] ); ?></p>
</article>
<?php endforeach; ?>
</div>
</div>
</section>
<section class="ethnic-unity-game-section ethnic-unity-game-section--cta" id="cta">
<div class="ethnic-unity-game-shell">
<div class="ethnic-unity-game-cta">
<div class="ethnic-unity-game-cta__copy">
<div class="ethnic-unity-game-cta__intro">
<p class="ethnic-unity-game-kicker ethnic-unity-game-kicker--light">Ready to Talk</p>
<p class="ethnic-unity-game-cta__note">Planning around Unity-based game ideas, 2D or 3D production needs, cross-platform strategies, prototyping, and post-launch support.</p>
</div>
<h2><?php echo esc_html( $data['ctaTitle'] ); ?></h2>
<p class="ethnic-unity-game-cta__lead"><?php echo esc_html( $data['ctaText'] ); ?></p>
<div class="ethnic-unity-game-actions">
<a class="ethnic-unity-game-button ethnic-unity-game-button--primary" href="<?php echo esc_url( $team_url ); ?>">Talk to Our Team</a>
<a class="ethnic-unity-game-button ethnic-unity-game-button--secondary" href="<?php echo esc_url( $quote_url ); ?>">Get a Free Quote</a>
</div>
<ul class="ethnic-unity-game-cta__highlights" aria-label="Unity game development CTA highlights">
<?php foreach ( (array) $data['ctaHighlights'] as $highlight ) : ?>
<li><?php echo esc_html( $highlight ); ?></li>
<?php endforeach; ?>
</ul>
</div>
<aside class="ethnic-unity-game-cta__panel" aria-label="What happens next">
<div class="ethnic-unity-game-cta__visual">
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div class="ethnic-unity-game-cta__panel-header">
<p class="ethnic-unity-game-cta__panel-eyebrow">What Happens Next</p>
<h3 class="ethnic-unity-game-cta__panel-title">Shape the right Unity production path for a prototype, full game build, multi-target release, or long-term product update cycle.</h3>
</div>
<ol class="ethnic-unity-game-cta__steps">
<?php foreach ( (array) $data['ctaSteps'] as $index => $step ) : ?>
<li class="ethnic-unity-game-cta__step">
<span class="ethnic-unity-game-cta__step-number"><?php echo esc_html( sprintf( '%02d', $index + 1 ) ); ?></span>
<div class="ethnic-unity-game-cta__step-copy">
<strong><?php echo esc_html( $step['title'] ); ?></strong>
<p><?php echo esc_html( $step['copy'] ); ?></p>
</div>
</li>
<?php endforeach; ?>
</ol>
<div class="ethnic-unity-game-cta__panel-note"><strong>Focus:</strong> engine fit, 2D or 3D capability, cross-platform release planning, and Unity-centered production support.</div>
</aside>
</div>
</div>
</section>
</div>
<?php
return ob_get_clean();
}
}
if ( ! function_exists( 'ethnic_unity_game_development_page_styles' ) ) {
function ethnic_unity_game_development_page_styles() {
$base_styles = '';
if ( function_exists( 'ethnic_game_development_page_styles' ) ) {
$base_styles = str_replace(
array(
'ethnic-game-development-target',
'ethnic-game',
),
array(
'ethnic-unity-game-development-target',
'ethnic-unity-game',
),
ethnic_game_development_page_styles()
);
} elseif ( function_exists( 'ethnic_devops_services_page_styles' ) ) {
$base_styles = str_replace(
array(
'ethnic-devops-development-target',
'ethnic-devops-services-target',
'ethnic-devops',
),
array(
'ethnic-unity-game-development-target',
'ethnic-unity-game-development-target',
'ethnic-unity-game',
),
ethnic_devops_services_page_styles()
);
}
return $base_styles . <<<'CSS'
.ethnic-unity-game-page {
--ethnic-unity-game-accent: #3b82f6;
--ethnic-unity-game-accent-dark: #1d4ed8;
--ethnic-unity-game-cyan: #22d3ee;
--ethnic-unity-game-lime: #93c5fd;
}
.ethnic-unity-game-section--hero {
background:
radial-gradient(circle at 14% 18%, rgba(59, 130, 246, 0.26), transparent 24%),
radial-gradient(circle at 86% 16%, rgba(34, 211, 238, 0.18), transparent 20%),
linear-gradient(180deg, #08111f, #12203f 56%, #16305f);
}
.ethnic-unity-game-hero__title {
max-width: 8ch;
}
.ethnic-unity-game-hero__lead {
max-width: 62ch;
}
.ethnic-unity-game-card__icon,
.ethnic-unity-game-platform-card__icon,
.ethnic-unity-game-dashboard,
.ethnic-unity-game-faq__marker,
.ethnic-unity-game-dashboard__journey-step span {
background-color: rgba(59, 130, 246, 0.08);
color: var(--ethnic-unity-game-accent-dark);
}
.ethnic-unity-game-visual__floating li::before,
.ethnic-unity-game-checklist li::before,
.ethnic-unity-game-cta__highlights li::before {
background: var(--ethnic-unity-game-accent);
box-shadow: 0 0 0 5px rgba(59, 130, 246, 0.14);
}
.ethnic-unity-game-cta::before {
background:
linear-gradient(90deg, rgba(59, 130, 246, 0.05) 1px, transparent 1px),
linear-gradient(0deg, rgba(59, 130, 246, 0.05) 1px, transparent 1px);
}
.ethnic-unity-game-cta .ethnic-unity-game-kicker--light,
.ethnic-unity-game-heading__eyebrow {
border-color: rgba(59, 130, 246, 0.18);
color: var(--ethnic-unity-game-accent-dark) !important;
-webkit-text-fill-color: var(--ethnic-unity-game-accent-dark);
}
.ethnic-unity-game-cta .ethnic-unity-game-kicker--light {
color: #1d4ed8 !important;
-webkit-text-fill-color: #1d4ed8;
box-shadow: 0 14px 36px rgba(59, 130, 246, 0.14);
}
.ethnic-unity-game-overview-board,
.ethnic-unity-game-toolchain,
.ethnic-unity-game-workbench {
background:
radial-gradient(circle at top right, rgba(59, 130, 246, 0.08), transparent 26%),
radial-gradient(circle at bottom left, rgba(34, 211, 238, 0.06), transparent 24%),
linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(242, 247, 255, 0.98));
}
.ethnic-unity-game-overview-board__lanes span,
.ethnic-unity-game-chip-list span,
.ethnic-unity-game-toolchain__eyebrow,
.ethnic-unity-game-toolchain__badges span {
background: rgba(59, 130, 246, 0.08);
border: 1px solid rgba(59, 130, 246, 0.12);
color: var(--ethnic-unity-game-accent-dark);
}
.ethnic-unity-game-overview-board__stat,
.ethnic-unity-game-toolchain__stage,
.ethnic-unity-game-workbench__cards div,
.ethnic-unity-game-capability-card,
.ethnic-unity-game-platform-matrix,
.ethnic-unity-game-project-card {
background: rgba(255, 255, 255, 0.84);
border: 1px solid rgba(59, 130, 246, 0.1);
}
.ethnic-unity-game-editor {
position: relative;
min-height: 590px;
}
.ethnic-unity-game-editor__window {
position: relative;
padding: 18px;
border-radius: 30px;
background: rgba(255, 255, 255, 0.95);
box-shadow: 0 28px 60px rgba(7, 13, 34, 0.24);
}
.ethnic-unity-game-editor__toolbar {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.ethnic-unity-game-editor__toolbar span,
.ethnic-unity-game-editor__targets span {
display: inline-flex;
align-items: center;
min-height: 32px;
padding: 0 12px;
border-radius: 999px;
background: rgba(59, 130, 246, 0.08);
border: 1px solid rgba(59, 130, 246, 0.12);
color: var(--ethnic-unity-game-accent-dark);
font-size: 12px;
font-weight: 800;
letter-spacing: 0.08em;
line-height: 1;
text-transform: uppercase;
}
.ethnic-unity-game-editor__workspace {
display: grid;
grid-template-columns: minmax(120px, 0.52fr) minmax(0, 1fr) minmax(120px, 0.52fr);
gap: 16px;
margin-top: 16px;
}
.ethnic-unity-game-editor__sidebar,
.ethnic-unity-game-editor__scene-card,
.ethnic-unity-game-editor__hud,
.ethnic-unity-game-editor__panel {
border-radius: 24px;
border: 1px solid rgba(255, 255, 255, 0.08);
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.05)),
rgba(9, 17, 34, 0.76);
backdrop-filter: blur(12px);
box-shadow: 0 20px 40px rgba(7, 13, 34, 0.18);
}
.ethnic-unity-game-editor__sidebar {
display: grid;
align-content: start;
gap: 10px;
padding: 18px;
}
.ethnic-unity-game-editor__sidebar p,
.ethnic-unity-game-editor__scene-card p,
.ethnic-unity-game-editor__panel p,
.ethnic-unity-game-workbench__header p,
.ethnic-unity-game-capability-card__visual p,
.ethnic-unity-game-platform-matrix__note,
.ethnic-unity-game-platform-matrix__core,
.ethnic-unity-game-platform-matrix__node,
.ethnic-unity-game-workbench__cards small {
margin: 0;
}
.ethnic-unity-game-editor__sidebar p,
.ethnic-unity-game-editor__scene-card p,
.ethnic-unity-game-editor__panel p,
.ethnic-unity-game-capability-card__visual p,
.ethnic-unity-game-workbench__header p,
.ethnic-unity-game-workbench__cards small {
color: rgba(255, 255, 255, 0.72);
font-size: 11px;
font-weight: 800;
letter-spacing: 0.12em;
line-height: 1.3;
text-transform: uppercase;
}
.ethnic-unity-game-editor__sidebar span,
.ethnic-unity-game-editor__scene-card strong,
.ethnic-unity-game-editor__panel strong,
.ethnic-unity-game-capability-card__visual strong {
color: #ffffff;
}
.ethnic-unity-game-editor__sidebar span {
display: flex;
align-items: center;
min-height: 36px;
padding: 0 12px;
border-radius: 14px;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.06);
font-size: 13px;
font-weight: 600;
line-height: 1.4;
}
.ethnic-unity-game-editor__preview {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 14px;
}
.ethnic-unity-game-editor__scene-card {
display: grid;
align-content: end;
gap: 10px;
min-height: 222px;
padding: 20px;
}
.ethnic-unity-game-editor__scene-card--2d {
background:
radial-gradient(circle at 26% 22%, rgba(34, 211, 238, 0.18), transparent 20%),
linear-gradient(180deg, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.04)),
linear-gradient(180deg, #20345f, #112345 58%, #0b182f);
}
.ethnic-unity-game-editor__scene-card--3d {
background:
radial-gradient(circle at 76% 20%, rgba(59, 130, 246, 0.18), transparent 18%),
linear-gradient(180deg, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.04)),
linear-gradient(180deg, #1d3153, #13243f 60%, #0a1528);
}
.ethnic-unity-game-editor__scene-card strong,
.ethnic-unity-game-editor__panel strong,
.ethnic-unity-game-capability-card__visual strong,
.ethnic-unity-game-workbench__header strong {
font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
font-size: 18px;
font-weight: 700;
line-height: 1.3;
}
.ethnic-unity-game-editor__hud {
grid-column: span 2;
display: flex;
flex-wrap: wrap;
gap: 10px;
padding: 18px;
}
.ethnic-unity-game-editor__hud span {
display: inline-flex;
align-items: center;
min-height: 34px;
padding: 0 12px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.08);
color: rgba(255, 255, 255, 0.84);
font-size: 12px;
font-weight: 700;
line-height: 1;
}
.ethnic-unity-game-editor__panel {
position: absolute;
display: grid;
gap: 8px;
padding: 18px;
}
.ethnic-unity-game-editor__panel--pipeline {
left: -10px;
top: 112px;
max-width: 224px;
}
.ethnic-unity-game-editor__panel--targets {
right: -10px;
bottom: 34px;
max-width: 226px;
}
.ethnic-unity-game-editor__targets {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-top: 4px;
}
.ethnic-unity-game-card-grid--why,
.ethnic-unity-game-card-grid--platform {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.ethnic-unity-game-card-grid--capabilities,
.ethnic-unity-game-card-grid--projects {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.ethnic-unity-game-workbench,
.ethnic-unity-game-platform-matrix {
border-radius: 28px;
box-shadow: var(--ethnic-unity-game-shadow);
padding: 24px;
}
.ethnic-unity-game-workbench__header strong,
.ethnic-unity-game-overview-board__header strong {
color: var(--ethnic-unity-game-text);
}
.ethnic-unity-game-workbench__header strong {
display: block;
margin-top: 10px;
font-size: 24px;
font-weight: 700;
line-height: 1.25;
letter-spacing: -0.04em;
}
.ethnic-unity-game-workbench__cards {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 14px;
margin-top: 20px;
}
.ethnic-unity-game-workbench__cards div {
display: grid;
gap: 8px;
padding: 18px;
border-radius: 20px;
}
.ethnic-unity-game-workbench__cards span {
color: var(--ethnic-unity-game-text);
font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
font-size: 17px;
font-weight: 700;
line-height: 1.3;
}
.ethnic-unity-game-workbench__flow {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
margin-top: 20px;
}
.ethnic-unity-game-workbench__flow span {
position: relative;
display: flex;
align-items: center;
justify-content: center;
min-height: 56px;
padding: 10px 12px;
border-radius: 18px;
background: rgba(59, 130, 246, 0.08);
border: 1px solid rgba(59, 130, 246, 0.12);
color: var(--ethnic-unity-game-accent-dark);
font-size: 12px;
font-weight: 800;
letter-spacing: 0.06em;
line-height: 1.4;
text-align: center;
text-transform: uppercase;
}
.ethnic-unity-game-workbench__flow span::after {
content: "";
position: absolute;
right: -12px;
top: 50%;
width: 12px;
height: 1px;
background: rgba(59, 130, 246, 0.18);
}
.ethnic-unity-game-workbench__flow span:last-child::after {
display: none;
}
.ethnic-unity-game-capability-card,
.ethnic-unity-game-project-card {
height: 100%;
border-radius: 28px;
box-shadow: var(--ethnic-unity-game-shadow);
overflow: hidden;
}
.ethnic-unity-game-capability-card__visual {
display: grid;
align-content: end;
gap: 10px;
min-height: 220px;
padding: 22px;
}
.ethnic-unity-game-capability-card__visual--2d {
background:
radial-gradient(circle at 22% 22%, rgba(34, 211, 238, 0.16), transparent 20%),
linear-gradient(180deg, #20335e, #13244a 58%, #0b172f);
}
.ethnic-unity-game-capability-card__visual--3d {
background:
radial-gradient(circle at 78% 20%, rgba(59, 130, 246, 0.18), transparent 18%),
linear-gradient(180deg, #1f3050, #12233d 60%, #0a1425);
}
.ethnic-unity-game-capability-card__frame {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-top: 6px;
}
.ethnic-unity-game-capability-card__frame span {
display: inline-flex;
align-items: center;
min-height: 32px;
padding: 0 12px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.08);
color: rgba(255, 255, 255, 0.82);
font-size: 12px;
font-weight: 700;
line-height: 1;
}
.ethnic-unity-game-capability-card__body {
display: grid;
gap: 16px;
padding: 24px;
}
.ethnic-unity-game-capability-card__highlights {
display: grid;
gap: 10px;
padding: 0;
margin: 0;
list-style: none;
}
.ethnic-unity-game-capability-card__highlights li {
position: relative;
padding-left: 20px;
color: var(--ethnic-unity-game-muted);
font-size: 14px;
line-height: 1.6;
}
.ethnic-unity-game-capability-card__highlights li::before {
content: "";
position: absolute;
left: 0;
top: 0.55em;
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--ethnic-unity-game-accent);
box-shadow: 0 0 0 5px rgba(59, 130, 246, 0.12);
}
.ethnic-unity-game-platform-matrix {
position: relative;
display: grid;
place-items: center;
min-height: 420px;
}
.ethnic-unity-game-platform-matrix__core,
.ethnic-unity-game-platform-matrix__node {
position: absolute;
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 126px;
min-height: 46px;
padding: 0 16px;
border-radius: 999px;
border: 1px solid rgba(59, 130, 246, 0.12);
background: rgba(255, 255, 255, 0.92);
box-shadow: 0 16px 36px rgba(15, 23, 42, 0.08);
color: var(--ethnic-unity-game-text);
font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
font-size: 15px;
font-weight: 700;
line-height: 1.2;
text-align: center;
}
.ethnic-unity-game-platform-matrix__core {
width: 170px;
height: 170px;
border-radius: 50%;
background:
radial-gradient(circle at top left, rgba(59, 130, 246, 0.16), transparent 36%),
linear-gradient(180deg, #ffffff, #eff6ff);
border: 1px solid rgba(59, 130, 246, 0.14);
font-size: 20px;
}
.ethnic-unity-game-platform-matrix__node::before {
content: "";
position: absolute;
inset: 50% auto auto 50%;
width: 1px;
height: 1px;
}
.ethnic-unity-game-platform-matrix__node--ios {
top: 18px;
left: 50%;
transform: translateX(-50%);
}
.ethnic-unity-game-platform-matrix__node--android {
right: 18px;
top: 116px;
}
.ethnic-unity-game-platform-matrix__node--web {
right: 26px;
bottom: 112px;
}
.ethnic-unity-game-platform-matrix__node--pc {
left: 24px;
bottom: 112px;
}
.ethnic-unity-game-platform-matrix__node--other {
left: 18px;
top: 116px;
}
.ethnic-unity-game-platform-matrix__note {
position: absolute;
left: 24px;
right: 24px;
bottom: 24px;
padding: 16px 18px;
border-radius: 20px;
background: rgba(255, 255, 255, 0.82);
border: 1px solid rgba(59, 130, 246, 0.1);
color: var(--ethnic-unity-game-muted);
font-size: 14px;
line-height: 1.65;
text-align: center;
}
.ethnic-unity-game-platform-matrix__core::before,
.ethnic-unity-game-platform-matrix__core::after,
.ethnic-unity-game-platform-matrix::before,
.ethnic-unity-game-platform-matrix::after {
content: "";
position: absolute;
background: rgba(59, 130, 246, 0.14);
}
.ethnic-unity-game-platform-matrix__core::before {
top: -62px;
left: 50%;
width: 1px;
height: 56px;
transform: translateX(-50%);
}
.ethnic-unity-game-platform-matrix__core::after {
bottom: -62px;
left: 50%;
width: 1px;
height: 56px;
transform: translateX(-50%);
}
.ethnic-unity-game-platform-matrix::before {
left: 62px;
top: 168px;
width: 82px;
height: 1px;
transform: rotate(-24deg);
}
.ethnic-unity-game-platform-matrix::after {
right: 62px;
top: 168px;
width: 82px;
height: 1px;
transform: rotate(24deg);
}
.ethnic-unity-game-project-card__art {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.ethnic-unity-game-project-card__beam {
width: 64px;
height: 8px;
border-radius: 999px;
background: linear-gradient(90deg, rgba(59, 130, 246, 0.82), rgba(34, 211, 238, 0.72));
box-shadow: 0 0 0 8px rgba(59, 130, 246, 0.06);
}
@media (max-width: 1200px) {
.ethnic-unity-game-card-grid--projects {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 1024px) {
.ethnic-unity-game-editor__workspace,
.ethnic-unity-game-card-grid--why,
.ethnic-unity-game-card-grid--platform,
.ethnic-unity-game-workbench__cards,
.ethnic-unity-game-workbench__flow {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.ethnic-unity-game-card-grid--capabilities,
.ethnic-unity-game-card-grid--projects {
grid-template-columns: 1fr;
}
}
@media (max-width: 767px) {
.ethnic-unity-game-editor {
min-height: auto;
}
.ethnic-unity-game-editor__workspace,
.ethnic-unity-game-editor__preview,
.ethnic-unity-game-card-grid--why,
.ethnic-unity-game-card-grid--platform,
.ethnic-unity-game-workbench__cards,
.ethnic-unity-game-workbench__flow,
.ethnic-unity-game-card-grid--capabilities,
.ethnic-unity-game-card-grid--projects {
grid-template-columns: 1fr;
}
.ethnic-unity-game-editor__hud {
grid-column: auto;
}
.ethnic-unity-game-editor__panel--pipeline,
.ethnic-unity-game-editor__panel--targets {
position: static;
max-width: none;
margin-top: 16px;
}
.ethnic-unity-game-platform-matrix {
min-height: auto;
padding-top: 24px;
}
.ethnic-unity-game-platform-matrix__core,
.ethnic-unity-game-platform-matrix__node,
.ethnic-unity-game-platform-matrix__note {
position: static;
transform: none;
width: auto;
height: auto;
margin-top: 14px;
}
.ethnic-unity-game-platform-matrix__core {
width: 160px;
height: 160px;
}
.ethnic-unity-game-platform-matrix::before,
.ethnic-unity-game-platform-matrix::after,
.ethnic-unity-game-platform-matrix__core::before,
.ethnic-unity-game-platform-matrix__core::after,
.ethnic-unity-game-workbench__flow span::after {
display: none;
}
}
CSS;
}
}
if ( ! function_exists( 'ethnic_unity_game_development_page_body_class' ) ) {
function ethnic_unity_game_development_page_body_class( $classes ) {
if ( ethnic_unity_game_development_page_is_target() ) {
$classes[] = 'ethnic-unity-game-development-target';
}
return $classes;
}
add_filter( 'body_class', 'ethnic_unity_game_development_page_body_class' );
}
if ( ! function_exists( 'ethnic_unity_game_development_page_print_head_assets' ) ) {
function ethnic_unity_game_development_page_print_head_assets() {
if ( ! ethnic_unity_game_development_page_is_target() ) {
return;
}
$data = ethnic_unity_game_development_page_data();
?>
<style id="ethnic-unity-game-development-page-inline-css" type="text/css">
<?php echo ethnic_unity_game_development_page_styles(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</style>
<meta name="description" content="<?php echo esc_attr( $data['metaDescription'] ); ?>" />
<?php
}
add_action( 'wp_head', 'ethnic_unity_game_development_page_print_head_assets', 120 );
}
if ( ! function_exists( 'ethnic_unity_game_development_page_document_title' ) ) {
function ethnic_unity_game_development_page_document_title( $title ) {
if ( ethnic_unity_game_development_page_is_target() ) {
$data = ethnic_unity_game_development_page_data();
return $data['metaTitle'];
}
return $title;
}
add_filter( 'pre_get_document_title', 'ethnic_unity_game_development_page_document_title', 50 );
}
if ( ! function_exists( 'ethnic_unity_game_development_page_replace_content' ) ) {
function ethnic_unity_game_development_page_replace_content( $content ) {
if ( ! ethnic_unity_game_development_page_is_target() || ! in_the_loop() || ! is_main_query() ) {
return $content;
}
static $rendered = false;
if ( $rendered ) {
return $content;
}
$rendered = true;
return ethnic_unity_game_development_page_render();
}
add_filter( 'the_content', 'ethnic_unity_game_development_page_replace_content', 1000 );
}