/** * A simple set of functions to check our version 1.0 update service. * * @package WordPress * @since 2.3.0 */ /** * Check WordPress version against the newest version. * * The WordPress version, PHP version, and Locale is sent. Checks against the * WordPress server at api.wordpress.org server. Will only check if WordPress * isn't installing. * * @since 2.3.0 * @uses $wp_version Used to check against the newest WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @param bool $force_check Whether to bypass the transient cache and force a fresh update check. Defaults to false, true if $extra_stats is set. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_version_check( $extra_stats = array(), $force_check = false ) { if ( defined('WP_INSTALLING') ) return; global $wpdb, $wp_local_package; include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $php_version = phpversion(); $current = get_site_transient( 'update_core' ); $translations = wp_get_installed_translations( 'core' ); // Invalidate the transient when $wp_version changes if ( is_object( $current ) && $wp_version != $current->version_checked ) $current = false; if ( ! is_object($current) ) { $current = new stdClass; $current->updates = array(); $current->version_checked = $wp_version; } if ( ! empty( $extra_stats ) ) $force_check = true; // Wait 60 seconds between multiple version check requests $timeout = 60; $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( ! $force_check && $time_not_changed ) return false; $locale = get_locale(); /** * Filter the locale requested for WordPress core translations. * * @since 2.8.0 * * @param string $locale Current locale. */ $locale = apply_filters( 'core_version_check_locale', $locale ); // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_core', $current ); if ( method_exists( $wpdb, 'db_version' ) ) $mysql_version = preg_replace('/[^0-9.].*/', '', $wpdb->db_version()); else $mysql_version = 'N/A'; if ( is_multisite() ) { $user_count = get_user_count(); $num_blogs = get_blog_count(); $wp_install = network_site_url(); $multisite_enabled = 1; } else { $user_count = count_users(); $user_count = $user_count['total_users']; $multisite_enabled = 0; $num_blogs = 1; $wp_install = home_url( '/' ); } $query = array( 'version' => $wp_version, 'php' => $php_version, 'locale' => $locale, 'mysql' => $mysql_version, 'local_package' => isset( $wp_local_package ) ? $wp_local_package : '', 'blogs' => $num_blogs, 'users' => $user_count, 'multisite_enabled' => $multisite_enabled, ); $post_body = array( 'translations' => json_encode( $translations ), ); if ( is_array( $extra_stats ) ) $post_body = array_merge( $post_body, $extra_stats ); $url = $http_url = 'http://api.wordpress.org/core/version-check/1.7/?' . http_build_query( $query, null, '&' ); if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $options = array( 'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3 ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url( '/' ), 'headers' => array( 'wp_install' => $wp_install, 'wp_blog' => home_url( '/' ) ), 'body' => $post_body, ); $response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) return false; $body = trim( wp_remote_retrieve_body( $response ) ); $body = json_decode( $body, true ); if ( ! is_array( $body ) || ! isset( $body['offers'] ) ) return false; $offers = $body['offers']; foreach ( $offers as &$offer ) { foreach ( $offer as $offer_key => $value ) { if ( 'packages' == $offer_key ) $offer['packages'] = (object) array_intersect_key( array_map( 'esc_url', $offer['packages'] ), array_fill_keys( array( 'full', 'no_content', 'new_bundled', 'partial', 'rollback' ), '' ) ); elseif ( 'download' == $offer_key ) $offer['download'] = esc_url( $value ); else $offer[ $offer_key ] = esc_html( $value ); } $offer = (object) array_intersect_key( $offer, array_fill_keys( array( 'response', 'download', 'locale', 'packages', 'current', 'version', 'php_version', 'mysql_version', 'new_bundled', 'partial_version', 'notify_email', 'support_email' ), '' ) ); } $updates = new stdClass(); $updates->updates = $offers; $updates->last_checked = time(); $updates->version_checked = $wp_version; if ( isset( $body['translations'] ) ) $updates->translations = $body['translations']; set_site_transient( 'update_core', $updates ); if ( ! empty( $body['ttl'] ) ) { $ttl = (int) $body['ttl']; if ( $ttl && ( time() + $ttl < wp_next_scheduled( 'wp_version_check' ) ) ) { // Queue an event to re-run the update check in $ttl seconds. wp_schedule_single_event( time() + $ttl, 'wp_version_check' ); } } // Trigger a background updates check if running non-interactively, and we weren't called from the update handler. if ( defined( 'DOING_CRON' ) && DOING_CRON && ! doing_action( 'wp_maybe_auto_update' ) ) { do_action( 'wp_maybe_auto_update' ); } } /** * Check plugin versions against the latest versions hosted on WordPress.org. * * The WordPress version, PHP version, and Locale is sent along with a list of * all plugins installed. Checks against the WordPress server at * api.wordpress.org. Will only check if WordPress isn't installing. * * @since 2.3.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_plugins( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined('WP_INSTALLING') ) return false; // If running blog-side, bail unless we've not checked in the last 12 hours if ( !function_exists( 'get_plugins' ) ) require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); $plugins = get_plugins(); $translations = wp_get_installed_translations( 'plugins' ); $active = get_option( 'active_plugins', array() ); $current = get_site_transient( 'update_plugins' ); if ( ! is_object($current) ) $current = new stdClass; $new_option = new stdClass; $new_option->last_checked = time(); // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-plugins.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $plugin_changed = false; foreach ( $plugins as $file => $p ) { $new_option->checked[ $file ] = $p['Version']; if ( !isset( $current->checked[ $file ] ) || strval($current->checked[ $file ]) !== strval($p['Version']) ) $plugin_changed = true; } if ( isset ( $current->response ) && is_array( $current->response ) ) { foreach ( $current->response as $plugin_file => $update_details ) { if ( ! isset($plugins[ $plugin_file ]) ) { $plugin_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $plugin_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_plugins', $current ); $to_send = compact( 'plugins', 'active' ); $locales = array( get_locale() ); /** * Filter the locales requested for plugin translations. * * @since 3.7.0 * * @param array $locales Plugin locale. Default is current locale of the site. */ $locales = apply_filters( 'plugins_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 plugins $timeout = 3 + (int) ( count( $plugins ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'plugins' => json_encode( $to_send ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), 'all' => json_encode( true ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/plugins/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); foreach ( $response['plugins'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); foreach ( $response['no_update'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); if ( is_array( $response ) ) { $new_option->response = $response['plugins']; $new_option->translations = $response['translations']; // TODO: Perhaps better to store no_update in a separate transient with an expiry? $new_option->no_update = $response['no_update']; } else { $new_option->response = array(); $new_option->translations = array(); $new_option->no_update = array(); } set_site_transient( 'update_plugins', $new_option ); } /** * Check theme versions against the latest versions hosted on WordPress.org. * * A list of all themes installed in sent to WP. Checks against the * WordPress server at api.wordpress.org. Will only check if WordPress isn't * installing. * * @since 2.7.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_themes( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined( 'WP_INSTALLING' ) ) return false; $installed_themes = wp_get_themes(); $translations = wp_get_installed_translations( 'themes' ); $last_update = get_site_transient( 'update_themes' ); if ( ! is_object($last_update) ) $last_update = new stdClass; $themes = $checked = $request = array(); // Put slug of current theme into request. $request['active'] = get_option( 'stylesheet' ); foreach ( $installed_themes as $theme ) { $checked[ $theme->get_stylesheet() ] = $theme->get('Version'); $themes[ $theme->get_stylesheet() ] = array( 'Name' => $theme->get('Name'), 'Title' => $theme->get('Name'), 'Version' => $theme->get('Version'), 'Author' => $theme->get('Author'), 'Author URI' => $theme->get('AuthorURI'), 'Template' => $theme->get_template(), 'Stylesheet' => $theme->get_stylesheet(), ); } // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-themes.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time() - $last_update->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $theme_changed = false; foreach ( $checked as $slug => $v ) { if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) ) $theme_changed = true; } if ( isset ( $last_update->response ) && is_array( $last_update->response ) ) { foreach ( $last_update->response as $slug => $update_details ) { if ( ! isset($checked[ $slug ]) ) { $theme_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $theme_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $last_update->last_checked = time(); set_site_transient( 'update_themes', $last_update ); $request['themes'] = $themes; $locales = array( get_locale() ); /** * Filter the locales requested for theme translations. * * @since 3.7.0 * * @param array $locales Theme locale. Default is current locale of the site. */ $locales = apply_filters( 'themes_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 themes $timeout = 3 + (int) ( count( $themes ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'themes' => json_encode( $request ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/themes/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $new_update = new stdClass; $new_update->last_checked = time(); $new_update->checked = $checked; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); if ( is_array( $response ) ) { $new_update->response = $response['themes']; $new_update->translations = $response['translations']; } set_site_transient( 'update_themes', $new_update ); } /** * Performs WordPress automatic background updates. * * @since 3.7.0 */ function wp_maybe_auto_update() { include_once( ABSPATH . '/wp-admin/includes/admin.php' ); include_once( ABSPATH . '/wp-admin/includes/class-wp-upgrader.php' ); $upgrader = new WP_Automatic_Updater; $upgrader->run(); } /** * Retrieves a list of all language updates available. * * @since 3.7.0 */ function wp_get_translation_updates() { $updates = array(); $transients = array( 'update_core' => 'core', 'update_plugins' => 'plugin', 'update_themes' => 'theme' ); foreach ( $transients as $transient => $type ) { $transient = get_site_transient( $transient ); if ( empty( $transient->translations ) ) continue; foreach ( $transient->translations as $translation ) { $updates[] = (object) $translation; } } return $updates; } /** * Collect counts and UI strings for available updates * * @since 3.3.0 * * @return array */ function wp_get_update_data() { $counts = array( 'plugins' => 0, 'themes' => 0, 'wordpress' => 0, 'translations' => 0 ); if ( $plugins = current_user_can( 'update_plugins' ) ) { $update_plugins = get_site_transient( 'update_plugins' ); if ( ! empty( $update_plugins->response ) ) $counts['plugins'] = count( $update_plugins->response ); } if ( $themes = current_user_can( 'update_themes' ) ) { $update_themes = get_site_transient( 'update_themes' ); if ( ! empty( $update_themes->response ) ) $counts['themes'] = count( $update_themes->response ); } if ( ( $core = current_user_can( 'update_core' ) ) && function_exists( 'get_core_updates' ) ) { $update_wordpress = get_core_updates( array('dismissed' => false) ); if ( ! empty( $update_wordpress ) && ! in_array( $update_wordpress[0]->response, array('development', 'latest') ) && current_user_can('update_core') ) $counts['wordpress'] = 1; } if ( ( $core || $plugins || $themes ) && wp_get_translation_updates() ) $counts['translations'] = 1; $counts['total'] = $counts['plugins'] + $counts['themes'] + $counts['wordpress'] + $counts['translations']; $titles = array(); if ( $counts['wordpress'] ) $titles['wordpress'] = sprintf( __( '%d WordPress Update'), $counts['wordpress'] ); if ( $counts['plugins'] ) $titles['plugins'] = sprintf( _n( '%d Plugin Update', '%d Plugin Updates', $counts['plugins'] ), $counts['plugins'] ); if ( $counts['themes'] ) $titles['themes'] = sprintf( _n( '%d Theme Update', '%d Theme Updates', $counts['themes'] ), $counts['themes'] ); if ( $counts['translations'] ) $titles['translations'] = __( 'Translation Updates' ); $update_title = $titles ? esc_attr( implode( ', ', $titles ) ) : ''; $update_data = array( 'counts' => $counts, 'title' => $update_title ); /** * Filter the returned array of update data for plugins, themes, and WordPress core. * * @since 3.5.0 * * @param array $update_data { * Fetched update data. * * @type array $counts An array of counts for available plugin, theme, and WordPress updates. * @type string $update_title Titles of available updates. * } * @param array $titles An array of update counts and UI strings for available updates. */ return apply_filters( 'wp_get_update_data', $update_data, $titles ); } function _maybe_update_core() { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $current = get_site_transient( 'update_core' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) && isset( $current->version_checked ) && $current->version_checked == $wp_version ) return; wp_version_check(); } /** * Check the last time plugins were run before checking plugin versions. * * This might have been backported to WordPress 2.6.1 for performance reasons. * This is used for the wp-admin to check only so often instead of every page * load. * * @since 2.7.0 * @access private */ function _maybe_update_plugins() { $current = get_site_transient( 'update_plugins' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_plugins(); } /** * Check themes versions only after a duration of time. * * This is for performance reasons to make sure that on the theme version * checker is not run on every page load. * * @since 2.7.0 * @access private */ function _maybe_update_themes() { $current = get_site_transient( 'update_themes' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_themes(); } /** * Schedule core, theme, and plugin update checks. * * @since 3.1.0 */ function wp_schedule_update_checks() { if ( !wp_next_scheduled('wp_version_check') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_version_check'); if ( !wp_next_scheduled('wp_update_plugins') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_plugins'); if ( !wp_next_scheduled('wp_update_themes') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_themes'); if ( ( wp_next_scheduled( 'wp_maybe_auto_update' ) > ( time() + HOUR_IN_SECONDS ) ) && ! defined('WP_INSTALLING') ) wp_clear_scheduled_hook( 'wp_maybe_auto_update' ); } if ( ( ! is_main_site() && ! is_network_admin() ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) return; add_action( 'admin_init', '_maybe_update_core' ); add_action( 'wp_version_check', 'wp_version_check' ); add_action( 'upgrader_process_complete', 'wp_version_check', 10, 0 ); add_action( 'load-plugins.php', 'wp_update_plugins' ); add_action( 'load-update.php', 'wp_update_plugins' ); add_action( 'load-update-core.php', 'wp_update_plugins' ); add_action( 'admin_init', '_maybe_update_plugins' ); add_action( 'wp_update_plugins', 'wp_update_plugins' ); add_action( 'upgrader_process_complete', 'wp_update_plugins', 10, 0 ); add_action( 'load-themes.php', 'wp_update_themes' ); add_action( 'load-update.php', 'wp_update_themes' ); add_action( 'load-update-core.php', 'wp_update_themes' ); add_action( 'admin_init', '_maybe_update_themes' ); add_action( 'wp_update_themes', 'wp_update_themes' ); add_action( 'upgrader_process_complete', 'wp_update_themes', 10, 0 ); add_action( 'wp_maybe_auto_update', 'wp_maybe_auto_update' ); add_action('init', 'wp_schedule_update_checks'); ¿Cómo ven los políticos el videojuego?SesiónDeControl.com
Arrow

El videojuego: manual para políticos


2
Víctor Navarro

Periodista. Trabajo en el diario 20minutos y escribo sobre videojuegos en El Píxel Ilustre y Yorokobu. A veces me dejan escribir cosas en Mondo Píxel.


Escrito el 2 de diciembre de 2012 a las 11:49 | Clasificado en Videojuegos

Una institución pública elabora un informe sobre el videojuego y, por primera vez, aporta visiones diferentes, alejadas de la perspectiva negativa y los estereotipos.

Captura del juego Sim City
Captura del juego Sim City

Mariano Rajoy tiene una Playstation 3 en la Moncloa. Esto está demostrado. Hay fotos de su antigua casa en las que aparece la consola, y sería raro que la maquinita se hubiera quedado por el camino en la mudanza. Pero de tener la ‘Play 3’ en casa a comprender el videojuego como medio y como industria hay un trecho. Le pasa a él y le pasa a la gran mayoría de los políticos que hay en este país.

Hace una semana se divulgó por primera vez desde una institución pública un monográfico en el que se da una mirada al videojuego diferente a la que suele desprenderse de las palabras de diputados, concejales, delegados de Gobierno, ministros y similares. Se llama ‘Videojuegos y juventud‘ y lo publica el Observatorio de la Juventud del INJUVE, una institución que depende del Ministerio de Sanidad, Servicios Sociales e Igualdad.

Flavio Escribano, coordinador del texto y fundador del colectivo Arsgames, cuenta por e-mail que el objetivo era dar una visión global del mundo del videojuego “no ya como producto de una gigantesca industria cultural, que también, sino como artefacto estimulador de la innovación en la economía, la cultura, la creatividad, el arte o la educación”. En el monográfico participan expertos nacionales e internacionales de distintas áreas y relaciona el videojuego con temas como la economía, la industria, el lenguaje del videojuego, la sanidad, la educación o la igualdad. Por eso Escribano se refiere a él en varias ocasiones como “Libro Blanco”.

Atacando al mito
[document file=”http://www.injuve.es/sites/default/files/2012/46/publicaciones/Revista98_1_0.pdf” width=”275″ height=”350″]

Muchas de las ideas que se exponen en este documento se dan de bruces con la postura de  los políticos en numerosas polémicas relacionadas con el videojuego. En la introducción, Flavio Escribano desmiente dos de los topicazos más habituales: la adicción y la violencia. Recordemos que para las elecciones generales de 2011, Rubalcaba llevaba en su programa electoral la inclusión de los videojuegos e internet en el Plan Nacional sobre Drogas. Escribano escribe que “la mayoría de las personas que utilizan videojuegos no lo hacen de forma abusiva” y que puede suceder que una persona “cautivada por el encanto de un videojuego” abuse puntualmente en el número de horas hasta que acabe el juego, pero recuerda que no es nada que no suceda con otros productos, como las series de televisión, por ejemplo.

También se oye a menudo que los videojuegos “fomentan la violencia”. Hay decenas de ejemplos. Desde las numerosas polémicas de los ‘Call of Duty‘, hasta el caso de ‘The Wheelman‘, juego ambientado en Barcelona y protagonizado por Vin Diesel que la concejala de Educación de la ciudad condal pedía que se retirara porque no quería violencia en las calles de su barrio, aunque fuera virtual. Javi Sánchez, periodista y coautor del monográfico, recuerda, también por e-mail, que “durante el primer gobierno del PP se quiso prohibir un juego en el que se atropellaba embarazadas” y “hasta se pretendía legislar la prohibición de videojuegos para mayores de 18 años“. El juego se llamaba ‘Carmaggedon 2′ y, por cierto, dice Sánchez que lo ha jugado y ni rastro de embarazadas.

Eurídice Cabañes, actual presidenta de Arsgames y autora de varios apartados del texto, explica (por e-mail, sí) que está “ampliamente demostrado” que la violencia simulada no genera conductas de violencia real y también apunta al valor educativo que tienen los videojuegos, incluso los agresivos. Cabañes menciona un vídeo en el que Mateo, un niño de 11 años, cuenta lo que ha aprendido de los videojuegos bélicos y los libros que le han animado a leer.

[media url=”http://www.youtube.com/watch?v=_4PgSqf3LvM” width=”100%” height=”400″]

Muchos de estos juegos, además, estaban pensados para adultos. Sí, esto sucede a menudo: los chavales juegan a títulos para mayores. Pero Escribano subraya que los videojuegos son el único producto cultural que siempre indica en la carátula la edad recomendada y el tipo de contenidos que se va a encontrar el jugador (violencia, lenguaje soez, escenas sexuales, drogas, alcohol…). Los padres tienen métodos sencillos para evitar que sus hijos accedan a juegos inadecuados para su edad. Además, señala que los títulos no recomendados para mayores de 18 años no son los que copan las listas de los más vendidos.

[document file=”http://www.injuve.es/sites/default/files/2012/46/publicaciones/Revista98_4.pdf” width=”100%” height=”350″]

En cualquier caso, la edad media del consumidor de videojuegos oscila entre los 25 y los 30 años. De niños nada. Sánchez aclara en su artículo para el monográfico que los videojuegos “no son juguetes”. El periodista escribe que hace tiempo que “rapiñando las narrativas de la literatura, el cine, la música, la ilustración, etcétera, el videojuego se presentaba como algo más que un juguete”. Es un lenguaje potentísimo.

Ante casos concretos como el de ETA en el ‘Counter Strike‘, Javi Sánchez explica: “Cómo vas a llorar y amenazar con prohibir, si en Estados Unidos llevan años sacando juegos con Bin Laden, los talibanes y el 11S como telón de fondo”. “He de admitir que el videojuego tiene este glamuroso potencial de tocar las narices que me encanta“, comenta Flavio Escribano, “lo que sí parece es que otros países tienen mayor capacidad de ‘reutilizar’ a los muertos de sus guerras en películas y videojuegos que España”.

Entonces, ¿el texto que publica el INJUVE tiene alguna aplicación práctica? ¿Supondrá un cambio de actitud de las instituciones y los políticos hacia el videojuego? No, el cambio no llega tan fácilmente. “Hemos logrado crear un Libro Blanco que pueda servir de referencia”, dice Escribano, “de primera piedra para que otras instituciones sigan construyendo un tejido consolidado con el videojuego como protagonista en nuestro país y en Europa”.

Otra experiencia
[document file=”http://www3.unileon.es/dp/ado/ENRIQUE/Documento/libro-videojuegos.pdf” width=”275″ height=”350″]

‘Videojuegos y juventud’ es el primer análisis exhaustivo difundido desde un organismo público sobre el videojuego, pero no es la primera vez que un departamento del Gobierno aborda este tema. El Ministerio de Trabajo y Asuntos Sociales publicó durante la primera legislatura del Gobierno de Zapatero un texto titulado ‘La diferencia sexual en el análisis de los videojuegos’. Este texto refleja muchos de los prejuicios hacia el medio que se han mencionado antes y, de alguna forma, queda obsoleto tras la publicación de este Libro Blanco.

Eurídice Cabañes firma en el monográfico de INJUVE el artículo ‘El sexo de los píxeles. Del yo-mujer al yo-tecnológico’. Ambos documentos sostienen que los videojuegos son sexistas, pero Cabañes explica que el texto anterior al suyo no profundizaba  en las causas y las implicaciones y, sobre todo, los autores desconocen y demonizan el mundo del videojuego.

[document file=”http://www.injuve.es/sites/default/files/2012/46/publicaciones/Revista98_11.pdf” width=”275″ height=”350″]

En la publicación del Instituto de la Mujer “la violencia como argumento contra los videojuegos llega a tal extremo que afirman que matar marcianitos es violento y que el hecho de que no se considere así porque son seres amorfos va contra el principio de atención a la diversidad”, explica Cabañes, que concluye que “el sexismo en los videojuegos es un problema real que necesita soluciones, pero posicionarse en contra del videojuego hace un flaco favor”.

En su texto para ‘Videojuegos y juventud’, Cabañes analiza la presencia de la mujer en los videojuegos, la presencia constante de los estereotipos de ‘femme fatale’, de ‘lolita’ o de mujer cuidadora frente a los de macho alfa y caballero andante. Pero más adelante se pregunta por las consecuencias de esta situación: si los videojuegos son una de las herramientas más potentes de alfabetización digital, señala, estos tópicos contribuyen al distanciamiento de las niñas de la tecnología y acentúan la brecha de género.

Cómo convencer a un político

Los políticos no han tratado especialmente bien al videojuego hasta ahora, pero ¿qué se puede hacer para que cambien de actitud? Javi Sánchez tiene una propuesta:

Deberían mirar quiénes ocupan o han ocupado los primeros puestos de capitalización bursátil a nivel mundial o en sus mercados, como cuando Nintendo se puso en cabeza del Nikkei, y hacerse un par de preguntas

Sí, la economía no es mal argumento. Más todavía cuando el mercado del videojuego está al alza y hace varios años que mira por encima del hombro a la música y el cine. Muchos países, incluso algunos emergentes, lo consideran ya un sector estratégico. Sánchez hace notar que la postura del Gobierno hacia el videojuego no puede ser más negativa, tampoco en el aspecto económico: “Si el videojuego es un medio cultural propiciado por el I+D, sólo hay que ver las medidas tomadas por el Ejecutivo en ambos campos para hacerse una idea”.

Flavio Escribano también apunta que España “invierte en la parte más cara (educación) y no en la más barata (emprendimiento)“, así que “esa cantidad de materia gris joven está aprovechando el dinero invertido en su educación en otros países”. La solución del Ejecutivo es privatizar porque no sabe sacar provecho de la inversión en educación, dice Escribano, pero cree que la solución debería pasar por estimular los proyectos emprendedores. Eurídice Cabañes apunta también que una persona joven que quiera dedicarse al videojuego “no encontrará formación específica dentro de la educación pública”.

Pero no hay que pintarlo todo tan negro, vaya, que sí hay avances. “En marzo de 2009 se reconoció el videojuego como industria cultural y poco después se incluyó en el plan de ayudas culturales”, señala Cabañes. Gamelab, la principal feria española del videojuego, tiene cada vez más proyección internacional y en octubre de 2010 nacía Academia de las Artes y las Ciencias Interactivas con el apoyo del Ministerio de Cultura. El monográfico Videojuegos y juventud pone por escrito y con el sello del Gobierno una forma de entender los videojuegos muy necesaria para seguir avanzando. Otro pasito más.

Los votantes dicen...
  1. […] nuestro país todavía no se dan las mejores condiciones para que se asiente una industria fuerte del videojuego, pese a que somos el cuarto mercado de Europa y el que crece más rápido. En 2011, […]

  2. […] Cómo ven los políticos el videojuego (Víctor Navarro) […]

Comparte tu punto de vista

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>