Code Wizard - Unity Asset Store - Nephasto

Un conjunto de herramientas para mejorar la calidad del c贸digo de los desarrollos de tus juegos.

馃洅 Store

Code Wizard’ te proporciona un conjunto de herramientas muy 煤tiles para mejorar tu c贸digo y hacer tu d铆a a d铆a mas sencillo. Estas herramientas son:

  • 'Build History', recopila informaci贸n de todas las builds que has hecho.
  • 'Code Templates', genera con un solo click mejores y mas personalizadas plantillas de c贸digo.
  • 'Ensure That', blinda t煤 c贸digo contra variables con valores no deseados.
  • 'Code Sonar', encuentra f谩cilmente todo tu c贸digo usado en la escena actual y los objetos que los usan.

Build History

 

Mantiene un seguimiento de todas las builds que haces y te muestra toda la informaci贸n que te interesa. Tambien puedes exportar toda la informaci贸n guardada a otros sistemas mediente un fichero CSV. Abre esta herramienta en ‘Window > Nephasto > Code Wizard > Build History’ (o pulsando Ctrl/cmd + Alt + h) y ver谩s algo como esto:

 

En la parte superior ver谩s una lista con la informaci贸n sobre todas las compilaciones que hagas. La primera columna (1) muestra si la compilaci贸n finaliz贸 correctamente o no.

En la siguiente columna (2) aparece la plataforma de la build. La tercera y la cuarta columna muestran la fecha (3) y cu谩nto tiempo dur贸 (4).

En las dos siguientes puedes ver cuantos archivos se procesaron (5) y el tama帽o final (6). La 煤ltima columna (8) te informa sobre cuantos errores y warnings se produjeron.

Finalmente, puedes hacer clic en el icono de la papelera (8) para borrar esa fila.

Activando algunos de los checkbox de la parte inferior (9) puedes activar una forma m谩s visual de ver par谩metros como la duraci贸n, ficheros, tama帽o y errores/warnings.

 

Por 煤ltimo puedes importar (10) / exportar (11) o borrar todos los datos (12) pulsando en alguno de los botones de la parte inferior.

Code Templates

 

Cuando creas un nuevo MonoBehaviour, el c贸digo que genera el Editor es algo como esto:

 

Poco 煤til y nada sexy. No incluye el namespace de tu proyecto, ni ese header genial de tu empresa, ni el historial y puede que tampoco te guste el indentado del c贸digo usado. Normalmente lo borras y lo escribes todo desde cero, 驴verdad?

隆Nunca m谩s! Con la ayuda del ‘Code Template’ y con un solo clic (en realidad dos), tendr谩s algo como esto:

 

Lo primero que debes hacer es configurar tus preferencias, abriendo ‘Editor > Project Settings > Code Wizard’ y selecciona ‘Code Templates’.

 

Primero debes ingresar tus datos (1): nombre, email y website (opcional). Todos estos datos se guardan localmente, por lo que no interferir谩n con otros usuarios de tu control de versiones.

Lo siguiente son los datos de la empresa (2): nombre, email, website y su localizaci贸n. Finalmente en ‘Product’ podr谩s configurar el nombre del producto.

Lo siguiente que debes configurar es como quieres que se genere el c贸digo. Lo primero es que tipo de licencia quieres usar. Si no encuentras ninguna, puedes crear tu podr铆a plantilla seleccionando ‘Custom’. Si lo haces deber谩s crear un fichero de texto y a帽adirlo justo debajo. En el fichero podr谩s usar todas estas keywords:

  • {SHORT_DATE}: la fecha actual, en formato corto (p.ej. 01/01/2077).
  • {LONG_DATE}: la fecha actual, en formato largo (p.ej. Jueves, Diciembre 29, 2077).
  • {SHORT_TIME}: la hora actual, en formato corto (p.ej. 5:00 PM).
  • {LONG_TIME}: la hora actual, en formato largo (p.ej. 5:00:00 PM).
  • {YEAR}: el a帽o actual (p.ej. 2077).
  • {DAY}: el d铆a actual (p.ej. Jueves).
  • {COMPANY_NAME}: el nombre de la empresa.
  • {COMPANY_WEB}: la web de la empresa.
  • {COMPANY_EMAIL}: el email de la empresa.
  • {COMPANY_LOCATION}: la localizaci贸n de la empresa.
  • {COMPANY_ADDRESS}: la direcci贸n de la empresa.
  • {PRODUCT_NAME}: el nombre del producto.
  • {AUTHOR_NAME}: el autor que cre贸 el fichero.
  • {AUTHOR_WEB}: la web del autor.
  • {AUTHOR_EMAIL}: el email del autor.
  • {FILENAME}: el nombre del fichero actual y su extensi贸n.

Por ejemplo, una licencia custom como esta:

{PRODUCT_NAME}.

COPYRIGHT (C) {YEAR} {COMPANY_NAME} 鈥 ALL RIGHTS RESERVED.
UNAUTHORIZED COPYING OF THIS FILE, VIA ANY MEDIUM IS STRICTLY PROHIBITED.

THE SOFTWARE IS PROVIDED 鈥淎S IS鈥, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Generar铆a un c贸digo como este:

 

Si activas ‘History’, a帽adiras la secci贸n history a la cabecera. En ‘Coding style’ selecciona si quieres usar espacio (80% en Github) o TABs (18% en Githab) para indentar los bloques de c贸digo. El estilo para indentar bloques de c贸digo lo puedes cambiar en ‘Indent style’, que puede ser 鈥Kernighan and Ritchie鈥 o 鈥Allman鈥.

Si usas un namespace, a帽adelo en ‘Namespace’. Si te gusta usar #region, act铆valas en ‘Use #region’. Tambi茅n puedes a帽adir autom谩ticamente las funciones m谩s usadas cuando creas un MonoBehavior si activas ‘Add MB. methods’.

Por 煤ltimo puedes configurar el comportamiento de la herramienta en ‘Behaviour’. Esta configuraci贸n se guardar谩 localmente. Si activas ‘Ask file name’, un di谩logo se abrir谩 para preguntarte el nombre del fichero a crear. Si no, se usar谩 el nombre por defecto que puedes cambiar en ‘Default file name’. Al activar ‘Select file’, el nuevo fichero creado se seleccionar谩 autom谩ticamente en la ventana ‘Project’ del Editor. Tambi茅n puedes hacer que se resalte activando ‘Ping file’.

Cuando lo tengas ya todo configurado, crear nuevos ficheros de c贸digo es tan f谩cil como crear un nuevo fichero y seleccionar las opciones de ‘Code Templates’.

 

Ensure That

Ensure That’ es una librer铆a de c贸digo orientada al desarrollo de juegos que extiende la funcionalidad de Assertions.Assert. Una Assert te permite probar si el valor de variables es el esperado. En caso de no cumplir tus requerimientos, se lanzar铆a una Exception con informaci贸n sobre el error. Normalmente este tipo de comprobaciones solo est谩n activas en versiones de desarrollo.

Por ejemplo, si tenemos un m茅todo dentro de un MonoBehaviour que se encarga de procesar el da帽o recibido a nuestro jugador:

1
2
3
4
private void ProcessDamage(Bullet bullet)
{
  this.life -= bullet.damage;
}

驴Qu茅 pasa si bullet es null? 驴Y si ‘life’ es menor que cero? A帽adiendo unas comprobaciones al principio del m茅todo sabremos durante el desarrollo si algo de esto est谩 ocurriendo.

1
2
3
4
5
6
7
private void ProcessDamage(Bullet bullet)
{
  Assert.IsNotNull(bullet, "The bullet cannot be null.");
  Assert.IsTrue(this.life > 0, "You're shooting at a corpse.");

  this.life -= bullet.damage;
}

Los Asserts tambi茅n son 煤tiles para crear Unit Test de tus juegos.

El problema es que Assertions.Assert tiene 煤nicamente ocho m茅todos y posiblemente desear铆as que tuviera m谩s y soportara m谩s tipos.

Deja de so帽ar y descubre los m谩s de 100 m茅todos que te ofrece ‘Ensure That’. Todos testeados con su Unit Tests incluidos en el asset. Consulta el c贸digo en ‘Nephasto/CodeWizard/Runtime/EnsureThat’.

 

Aqu铆 tienes algunos ejemplos de uso:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
private void AddToInventary(Item item, int slotIndex)
{
  EnsureThat.IsNotNull(item, "The item cannot be null.");
  EnsureThat.IsValidIndex(slotIndex, listSlots, $"Index {slotIndex} for '{nameof(listSlots)}'.");
  this.listSlots[slotIndex] = item;
}

private Item GetFirstItem()
{
  // Also check that it is not null ;)
  EnsureThat.NotEmpty(this.listSlots, $"'{nameof(listSlots)}' must not be empty.");
  return this.listSlots[0];
}

private List<Item> GetInventory()
{
  EnsureThat.AllNotNull(this.listSlots, $"'{nameof(listSlots)}' contains some null items.");
  return this.listSlots;
}

private Durability GetItemDurability(Item item)
{
  EnsureThat.HasComponent<Durability>(item, $"'{nameof(item)}' does not have the component 'Durability'.");
  return item.GetComponent<Durability>();
}

private void DoJump(Vector3 point)
{
  EnsureThat.DistanceIsLess(player.position, point, 10.0f, $"The point is too far.");
  player.Jump(point);
}

Code Sonar

 

Con ‘Code Sonar’ puedes encontrar f谩cilmente todo el c贸digo usado en la escena actual y los objetos que lo usan. Simplemente haz clic en “Window > Nephasto > Code Wizard > Code Sonar” (o pulsa Ctrl/cmd + Alt + s).

 

En la zona de la izquierda (1) ver谩s los scripts que se est谩n usando en la escena que tienes abierta. Pulsa en cualquiera de ellos para acceder al editor r谩pidamente. A la derecha (2) ver谩s cuantos objetos los usan. Pulsa en el texto para seleccionar todos los objetos en el editor.

Cualquier pregunta o sugerencia que tengas estar茅 encantado de responderla en

hello@nephasto.com