Squirrel es un lenguaje de programación orientado a objetos e imperativo de alto nivel , diseñado para ser un lenguaje de scripting liviano que se adapta al tamaño, ancho de banda de memoria y requisitos de tiempo real de aplicaciones como los videojuegos .
MirthKit, un sencillo kit de herramientas para crear y distribuir juegos 2D multiplataforma de código abierto, utiliza Squirrel para su plataforma. [2] Code::Blocks lo utiliza ampliamente para crear scripts y también se utilizó en Final Fantasy Crystal Chronicles: My Life as a King . [3] [4] También se utiliza en Left 4 Dead 2 , Portal 2 y Thimbleweed Park para eventos con scripts y en NewDark , una actualización no oficial del motor Thief 2: The Metal Age , para facilitar medios adicionales y simplificados de crear scripts de eventos de misiones, además de los scripts C habituales . [5]
Características del lenguaje
- Tipificación dinámica
- Delegación
- Clases , herencia
- Funciones de orden superior
- Generadores
- Hilos cooperativos ( corrutinas )
- Recursión de cola
- Manejo de excepciones
- Gestión automática de memoria (principalmente recuento de referencias con recolector de basura de respaldo )
- Referencias débiles
- Tanto el compilador como la máquina virtual encajan en aproximadamente 7k líneas de código C++
- Cadenas de caracteres opcionales de 16 bits
Sintaxis
Squirrel utiliza una sintaxis similar a C.
- Factorial en Squirrel
función factorial ( x ) { si ( x <= 1 ) { devuelve 1 ; } de lo contrario { devuelve x * factorial ( x - 1 ); } }
- Generadores
función no_un_generador_de_números_aleatorios ( max ) { local last = 42 ; local IM = 139968 ; local IA = 3877 ; local IC = 29573 ; for (;;) { // bucles para siempre yield ( max * ( last = ( last * IA + IC ) % IM ) / IM ); } }
randtor local = no_un_generador_de_números_aleatorios ( 100 );
para ( local i = 0 ; i < 10 ; i += 1 ) imprimir ( ">" + reanudar randtor + "\n" );
- Clases y herencia
clase BaseVector { constructor (...) { si ( vargv.len () > = 3 ) { x = vargv [ 0 ]; y = vargv [ 1 ]; z = vargv [ 2 ] ; } } x = 0 ; y = 0 ; z = 0 ; }
clase Vector3 extiende BaseVector { función _add ( other ) { if ( other instanceof :: Vector3 ) return :: Vector3 ( x + other . x , y + other . y , z + other . z ); de lo contrario, arroja "parámetro incorrecto" ; } función Print () { :: print ( x + "," + y + "," + z + "\n" ); } }
local v0 = Vector3 ( 1 , 2 , 3 ) local v1 = Vector3 ( 11 , 12 , 13 ) local v2 = v0 + v1 ; v2 . Imprimir ();
Aplicaciones
Aplicaciones que utilizan Squirrel
- Code::Blocks , entorno de desarrollo integrado
- Enduro/X , servidor de aplicaciones en clúster
- Electric Imp, una plataforma IoT de extremo a extremo [6]
Juegos que utilizan Squirrel
- Enjambre alienígena [7]
- Antinomia de las flores comunes [8]
- Leyendas de Apex [9]
- Hermanos de batalla
- Contagio [7]
- Counter Strike: Ofensiva global [7]
- CRSED: ALIMENTOS
- Final Fantasy Crystal Chronicles: Mi vida como rey [3]
- IV-MP de GTA IV [10]
- Quedan 4 muertos 2 [7]
- La libertad desatada [11]
- Mafia II : Multijugador M2 [12]
- Sangre Melty: Tipo Lumina [13]
- Amanecer nuclear [7]
- TTD abierto [14]
- Portal 2 [7]
- Guerrero de las sombras
- Simutrans [15]
- Sonic Unleashed (PS2/Wii) [16]
- Súper Tux
- Equipo Fortress 2 [7]
- Parque de la Hierba Dedal [17]
- Thief II (actualización no oficial del motor NewDark) [18]
- Caída del Titán [7]
- Vice City Multiplayer , [19] un mod para Grand Theft Auto: Vice City [20]
- Bajo la Noche en el Nacimiento [21]
- Trueno de guerra
- Zero no Tsukaima - Maigo no Period a Ikusen no Symphony (PS2)
- Zero no Tsukaima - Muma ga Tsumugu Yokaze no Nocturne (PS2)
- Zero no Tsukaima - Shou-akuma a Harukaze no Concerto (PS2)
Historia
El lenguaje se hizo público en 2003 bajo la licencia zlib/libpng . [22] En noviembre de 2010, la licencia se cambió a la licencia MIT para permitir que el proyecto se alojara en Google Code . [23] [24] Es desarrollado y mantenido por Alberto Demichelis.
Véase también
Referencias
- ^ "ardilla/HISTORIA en master - albertodemichelis/ardilla - GitHub".
- ^ Wiki para desarrolladores de MirthKit Archivado el 11 de febrero de 2014 en Wayback Machine
- ^ por Brandon Boyer (21 de febrero de 2008). "Gamasutra - Cobertura del evento GDC 2008". gamasutra.com . Gamasutra .
- ^ "Exclusivo: Entre bastidores del debut de Final Fantasy en WiiWare". gamasutra.com . Gamasutra . 23 de junio de 2008 . Consultado el 22 de septiembre de 2011 .
- ^ "L4D2 Vscripts - Comunidad de desarrolladores de Valve". developer.valvesoftware.com . Consultado el 6 de julio de 2018 .
- ^ "Guía de programación de Electric Imp". electricimp.com .
- ^ abcdefgh "VScript". valvesoftware.com . 20 de agosto de 2014 . Consultado el 17 de enero de 2015 .
- ^ "th155-decomp". GitHub . Consultado el 19 de octubre de 2020 .
- ^ "¿Qué demonios? ¿Es una nuez consumible? Por favor, ayuda. Me ha salido un código de error. ¿A alguno de vosotros le ha pasado esto antes?". reddit.com . 2019-03-24 . Consultado el 2021-09-04 .
- ^ "iv-multiplayer.com". www.iv-multiplayer.com . Archivado desde el original el 7 de junio de 2012. Consultado el 6 de julio de 2018 .
- ^ "Liberty Unleashed" (Libertad desatada) . Consultado el 4 de diciembre de 2019 .
- ^ "m2-multiplayer.com". www.m2-multiplayer.com . Archivado desde el original el 2013-01-02 . Consultado el 2018-07-06 .
- ^ "undernightinbirth". GitHub . Consultado el 18 de agosto de 2024 .
- ^ "AI:Página principal - OpenTTD". wiki.openttd.org . Consultado el 6 de julio de 2018 .
- ^ "Simutrans-Squirrel-API: Página principal". dwachs.github.io . Consultado el 6 de julio de 2018 .
- ^ "Wiki de recursos de VG". wiki.vg-resource.com . Consultado el 4 de septiembre de 2021 .
- ^ "Blog de Thimbleweed Park: motor". blog.thimbleweedpark.com . Consultado el 6 de julio de 2018 .
- ^ "NewDark 1.25: ¿Script de Squirrel?". ttlg.com . 2017-03-20 . Consultado el 2019-12-25 .
- ^ Vice City Multijugador
- ^ "¡Bienvenido al sitio web de VC-MP!". Archivado desde el original el 5 de abril de 2006. Consultado el 4 de mayo de 2014 .
- ^ "undernightinbirth". GitHub . Consultado el 18 de agosto de 2024 .
- ^ "El lenguaje de programación Squirrel". SourceForge . Consultado el 6 de julio de 2018 .
- ^ "Pasando a code.google.com y la licencia MIT - El lenguaje - Squirrel - El lenguaje de programación". forum.squirrel-lang.org . Consultado el 6 de julio de 2018 .
- ^ "Archivo de código de Google: almacenamiento a largo plazo para el alojamiento de proyectos de código de Google". code.google.com . Consultado el 6 de julio de 2018 .
Enlaces externos
- Sitio web oficial