Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - z3nth10n

#461
Actualizo: El post es de mi autoría completamente, de hecho todas las imágenes y códigos que ven los he realizado yo por completo, eso sí, si quieren tener una versión más "actualizada" de este post, por temas de corrección de errores y demás, aquí tienen la versión "oficial": http://lerp2dev.com/UnityDllReferencesTutorial/








¡Buenas foro! Ando realizando otro asset y bueno, investigando en internet y la interfaz de Unity he descubierto la forma de hacer una Referencia para nuestro proyecto.

Simplente, en vez de tener los archivos esparcidos por carpetas de Unity, compilamos una DLL y lo tenemos más recogidito todo. Yo esta técnica la uso para mi API, aunque me arrepiento porque ahora me estoy "jartando" a solventar Excepciones de Null Object Reference pero bueno, haya ustedes,  el proceso es más que simple, eso sí, si no se quieren "jartar" (nuevamente) a buscar información por internet, pueden seguir mi proceso el cual es simple y ¿asequible? :laugh:

Requerimientos


  • Visual Studio 2013 en adelante
  • Unity 5 o superior (la última versión estable es la 5.4.0f3)

Descarga desde EHN de VS 2013: http://foro.elhacker.net/software/visualstudio_2013_u_instaladorplantillassnippetslibscontrolestools-t406378.0.html

Aunque, si quieren una opción gratuita (por si se sienten sucios y tal): https://www.visualstudio.com/es-es/products/vs-2015-product-editions.aspx

Esta es la versión que el setup de Unity te descarga automáticamente.

No lo he probado en versiones de Unity 4, pero por algún lado leí que no se podía, eso si, en Unity 4 + DLL = Unity Pro (1500$) por eso  les digo que Unity 5 en adelante.

Aunque no estoy seguro del todo, ya que, por ejemplo, este tipo tiene problemas en la versión 5.3.0: http://forum.unity3d.com/threads/no-support-for-subclassed-monobehaviours-in-dlls.372971/ cosa que a mi no me ha pasado.

Unity 4.5.x: http://answers.unity3d.com/questions/240985/subclassed-monobehavior-in-external-dlls-not-recog.html

Unity 3: http://answers.unity3d.com/questions/52767/prefabs-not-finding-monobehaviours-moved-into-a-pl.html

De todas formas estan sin confirmar, aunque yo no me fiaría. Nadie utiliza Unity 3, pero para que vean que no miento.

Utilidades


Recomendaciones


  • No ser tan borrico (como yo) para hacerlo con Assets ya hechos, aunque bueno, cosas de no más de 1000 lineas son worth it, pero cosas de 20k de lineas como las mías no jeje
  • Hacer una compilación a cada cambio realizado, por si las moscas hay algún problema, tener localizado cuanto antes
  • Hacer varios pantallazos si tenemos una escena con algún GameObject con algún script que vamos a compilar en la DLL y no tiene los valores por defecto, para luego revertirlo, ya que nos dirá Missing Component

Comencemos...

Yo lo voy a hacer desde 0, para que vean el proceso al completo, primero crearemos un proyecto:



Configuraremos Unity para que habrá nuestros scripts desde Visual Studio (también funcionan Eclipse, Sublime Text y Notepad++ [testado por Mc.Kernel/X3R4CK3R])

Vamos a Edit > Preferences... > External Tools > External Script Editor hacemos click a la lista donde pondrá Monobehaviour y hacemos click en Browse...



La ruta por defecto de VS2015 es "%PROGRAMFILES%\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe"



Añadimos un gameobject a la escena para añadir luego nuestro primer script (desde GameObject > Create Empty)



Creamos un script de ejemplo que luego usaremos para probar si las DLLs funcionan correctamente y también para acceder a la IDE de Visual Studio, lo añadimos al GameObject, le damos a Edit Script desde la tuerca, y esperamos a que la IDE cargue:



Una vez se está abriendo la IDE:



CitarSe que es tan simple como crear un script nuevo y hacerle doble click o incluso ir el archivo de la solución (DLL Tutorial.sln) creado por Unity para abrirla, pero todo esto tiene una razón y es que luego utilizaremos el mismo GameObject para añadirle este script que será el que usaremos para debugear y ver el resultado.




Una vez aquí, ya hemos superado la primera fase del tutorial, ahora nos dirigimos a la parte complicada, yo voy a utilizar dos métodos, uno compilando mi API y otra haciéndolo con un proyecto vacío, para ambos casos es necesario crear un nuevo proyecto dentro de la misma solución:



Seleccionamos "Biblioteca de clases" (la que está con un icono de C#), le damos un nombre (es opcional) y a mi personalmente me gusta meterla en la capeta del proyecto (la que hay por encima de la carpeta de los Assets) por tema de tenerlo todo en una misma carpeta, pero podéis ponerla donde queráis.



Automáticamente se generará un archivo llamado Class1.cs



Lo utilizaremos para el segundo caso, pero empecemos antes:

Partiendo desde scripts ya hechos

Yo copiaré una carpeta que tenía con scripts preparados y la añadiré dentro de la carpeta del proyecto, para ello, debemos mostrar los archivos que no están incluidos en el proyecto:





Nota: Adicionalmente si el proyecto que estamos creando en Unity como yo, necesitaremos pegar la carpeta al proyecto de Unity para que compile y genere las Referencias requeridas más tarde:





Una vez hecho todo esto, nos vamos a las propiedades del proyecto dentro de Visual Studio (Proyecto > Propiedades de Lerp2API... (en mi caso))



Y cambiamos la versión de compilación del Framework de .NET a la 3.5 (desde Aplicación > Marco de trabajo de destino > .NET Framework 3.5):



A mi me aparece como pueden observar Unity 3.5 .net full Base Class Libraries y otras opciones, no lo tengo testado, pero realmente es lo mismo, las referencias hay que añadirlas si o si.

Ahora ya podemos incluir la carpeta que pegamos con anterioridad en la capreta base del proyecto dentro de la solución de Visual Studio, para ello, como le dimos a mostrar los archivos/carpetas ocultos, simplemente es hacer lo siguiente (hacer click derecho y darle a Incluir en el proyecto):



Como podemos observar se generarán unos cuantos errores >:D



Vamos a solventarlos, para ello:

Añadiremos las referencias desde Visual Studio:



Yo seleccionaré todas las DLLs que hay en la carpeta (Library/UnityAssemblies), pero inicialmente solo se requieren la de UnityEngine.dll y UnityEditor.dll



Nota: Copiad las DLL generadas por Unity, porque al borrar los scripts compilador por Unity, las DLL desapareceran.



Ahora los errores irán de muchos a cero, si hemos añadido todo lo requerido, probablemente, nos haga falta añadir algún que otro archivo/carpeta manualmente, como a mi me paso con el CrossPlatformInput.

Ah, otra cosa, seguramente, sus scripts contengan Directivas de Preprocesador, seguramente les interese tenerlas dentro de la DLL disponibles, para ello, les recomiendo que las añadan (DE AQUÍ QUE SE NECESITE VISUAL STUDIO 2013 EN ADELANTE), para ello vamos a ir a las propiedades del proyecto nuevamente y en el submenú Compilación, añadiremos las palabras que necesitemos, por ejemplo, yo necesito la de UNITY_EDITOR, ustedes añadan ya las que necesiten (simplemente, separandolas por comas):



Todas las keywords que no sean añadidas no serán compiladas después en la DLL.

Para compilar simplemente, hacemos click derecho en el proyecto y compilamos:



Si todo va bien se debería mostrar lo siguiente en la consola:



Ya sería copiar solamente la DLL generada y el archivo de extensión PDB a la carpeta principal o alguna subcarpeta del proyecto de Unity. Este esta en Bin/Debug/Nombre del proyecto.dll

Al añadir la DLL y el archivo PDB la IDE nos va a decir de actualizar todo, nosotros le decimos que sí






Partiendo desde cero

Simplemente es seguir el mismo proceso, crear el proyecto (usando la Biblioteca de Clases, recordar usar la del icono con el C#, aunque lo haremos con VB), establecer la versión de .NET a la 3.5, añadiremos las referencias para poder usarlas luego y poco más.

* Para usar las referencias, deberemos buscarlas en algún sitio, yo no os las puedo suministrar ya que seguramente dentro de poco queden anticuadas, para ello generad un archivo cualquier y ponedle using y el namespace que necesitéis, Unity se encargara del resto, solo copiad las dlls generadas en la carpeta que ya os he dicho, y wala, ahí tenéis las referencias que necesitéis.

Esta vez, usaremos el código de la página que antes dijimos: http://ericeastwood.com/blog/17/unity-and-dlls-c-managed-and-c-unmanaged

Código (CSharp) [Seleccionar]

namespace TestCSharpLibrary
{
   public class TestCSharpLibrary
   {
       public static float SharpMultiply(float a, float b) {
           return (a * b);
       }

       public static float SharpDivide(float a, float b) {
           if (b == 0)
           {
               return 0;
           }

           return (a / b);
       }
   }
}


Y lo añadiremos dentro del archivo Class1.cs generado con nuestro nuevo proyecto, le daremos a compilar como ya hemos mostrado, y usaremos el script que creamos antes para abrir la IDE para mostraros como funciona, simplemente usando este código:

Código (CSharp) [Seleccionar]

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{

// Use this for initialization
void Start()
   {
       Debug.Log(TestCSharpLibrary.TestCSharpLibrary.SharpMultiply(4, 5));
}

// Update is called once per frame
void Update()
   {

}
}


Al iniciar el proyecto deberiamos ver en la consola lo siguiente:





Ahora...

Hagamos lo mismo pero en VB.NET

La única diferencia aquí es que al crear el proyecto, debemos usar lo siguiente:



Por lo demás todo es lo mismo, referencias y versión de .NET

Usaremos nuevamente el mismo código pero transformado a VB

Código (vbnet) [Seleccionar]
Namespace TestVBLibrary
   Public Class TestVBLibrary
       Public Shared Function BasicMultiply(a As Single, b As Single) As Single
           Return (a * b)
       End Function

       Public Shared Function BasicDivide(a As Single, b As Single) As Single
           If b = 0 Then
               Return 0
           End If

           Return (a / b)
       End Function
   End Class
End Namespace


Compilamos y añadimos nuevamente al proyecto de Unity, una vez alli, cambiamos el código del Monobehaviour por este:

Código (csharp) [Seleccionar]
using ClassLibrary1.TestVBLibrary;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{

// Use this for initialization
void Start()
   {
       Debug.Log(TestVBLibrary.BasicDivide(24, 3));
}

// Update is called once per frame
void Update()
   {

}
}


Y el resultado obviamente, será 8.

* No se porque, por alguna razón, en el using hay que utilizar la ClassLibrary1, en vez del namespace TestVBLibrary, pero bueno.




FAQ

Q: Me sale este error: Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.



A: No has cambiado a la versión 3.5 tu proyecto, relee el tutorial para ver donde has fallado.



Q: Missing Component ¿que hago?



A: Si has llegado a este punto, lo mejor que podrías haber hecho hubiera sido unos pantallazos para volver a añadir los scripts a mano, recuerda, que no se van a mostrar los típicos iconos de C# de Unity



Q: Tengo Null Object References por un tubo.

A: Las Null Object References son normales cuando has insertado en la DLL código que no es tuyo, o que has tenido mucho tiempo sin compilar. Por eso, sugerimos que compiles frecuentemente el código para evitar esto. Si el código no es tuyo, ya puedes prepararte para romperte las manos, porque estos apaños llevan la vida literalmente.

Quizás aquí encuentres como ponerle Macros a tu Visual Studio: https://msdn.microsoft.com/es-es/library/ae3cxw0w(v=vs.100).aspx

Q: ¿Cómo puedo tener el Editor Morado como tu? Mola! ;-)



A: Edit > Preferences... > Colors



Extras

¿Quieres cambiar el color de tu Unity a negro teniendo la versión Personal? Usa esta herramienta [UnityDarkSkin]:

https://www.dropbox.com/sh/5yr41qfv7wteqtu/AADMqoBY2mV2uDaeBsz5YwOaa?dl=0

¿Quieres ayudarme con mi API?

https://github.com/Ikillnukes/Lerp2API

Hazle un fork, clona y a trabajar! :silbar:

Descargas

Descarga la última versión de Unity aquí: https://unity3d.com/es/get-unity/download

Nota: Si sois nuevos en esto de Unity, os recomiendo que instaleis ciertos Builds Support como la de WebGL o la de Windows. Para poder compilar vuestro juego tanto para webs como para el sistema de operativo, si no lo hacéis, tendréis que instalar manualmente, o a través (de nuevo) del setup de Unity.






PD: Espero que tanto usuarios como moderadores ayuden a mejorar y hacer este post de lo mejor. Y recordad que si tenéis alguna sugerencia, duda o lo que sea, no olvidéis comentar. ;D

Si veis que algo no esta donde debería estar o podría ser mejorado no dudéis en reportarlo y comentarlo.

Un saludo.





Tenía que hacerlo... :xD
#462
Cita de: Eleкtro en 16 Agosto 2016, 07:40 AM
No hay código fuente y es un producto de pago así que tecnicamente esto no debería ir ni en C# ni en ningún subforo de programación, pero bueno... haré una excepción por ser tú y por ser una temática practivamente inexistente en el foro (Unity)

Gracias por hacer la excepción, yo siempre lo he dicho, que hicieran un subforo para Engines de juegos pero no se si es que no lo llegué a proponer o algo, en fin, aquí lo dejo:

http://foro.elhacker.net/sugerencias_y_dudas_sobre_el_foro/reitero_en_que_un_subforo_de_engines_de_juegosrobotica_no_seria_una_mala_idea-t456431.0.html

Cita de: Eleкtro en 16 Agosto 2016, 07:40 AM
por que te mereces ganar algo de reconocimiento por haber demostrado que una persona que empieza sin saber nada de programación de C#, en poco tiempo de aprendizaje puede llegar a desenvolverse muy bien en el lenguaje bajo un entorno de desarrollo de videojuegos como Unity para intentar ganarse la vida... o al menos unos billetes :P

De verdad que no ha sido para tanto, mi año o año y medio que me ha llevado (podría haber sido menos pero estudios + programación = mucha relentización en ambas cosas). De hecho, yo le recomiendo a cualquiera que quiera empezar a programar que empiece por Unity, es realmente sencillo y con unas cuantas nociones de tutoriales de .NET (C#) puedes hacer algo rápido en poco tiempo!

Un saludo.
#463
Buenas foro! Pues eso, yo creo que algún tiempo atrás ya lo propuse pero no deje clara mi posición...

Tanto los juegos como la robótica es algo tendente en esta época, ya pocas cosas escapan de ahí, y más ahora con esto del pokemon go, father.io y la realidad aumentada.

Se debería dar un poquito de actualización a este "tan querido" (por mí, ciertamente) foro y añadir quizás a estas dos temáticas.

Ya se que me vendréis diciendo que el foro está bien con lo que está y que estos 2 temas se puede tratar en cualquier subforo (por ejemplo, programación general/.NET (Unity por el tema de C#) y Unreal Engine/SMFL (por C++), LWJGL (para Java), etc etc etc) para los engines de juegos), pero, no creen que es ya hora de darle un poquito más de importancia a estos 2 subforos y crear unos?

Hay bastante gente que utiliza Engines para hacer cosas, y son muy buena opción para empezar a programar pienso yo.

Yo recuerdo, y según la wikipedia, un engine no es solo programación, para que un engine sea un engine mirad toda la de cosas que tiene que componerlo:

https://es.wikipedia.org/wiki/Motor_de_videojuego#Glosario_de_aspectos_relacionados

Citar1.1   Assets
1.2   Application Programming Interface (Interfaz de Programación de Aplicaciones)
1.3   Render (Renderización)
1.4   Objetos 3D
1.5   Higher-order surfaces (superficies de alto orden)
1.6   Culling
1.7   BSP Tree Hierarchy (BSP Árbol de Jerarquía)
1.8   Tesselation
1.9   Iluminación (lighting)
1.10   Vertex Lighting
1.11   Flat Shading Lighting (Iluminación de Sombreado Plano)
1.12   Scripting Systems (Sistemas de scripting)
1.13   Sonido
1.14   Música/Pistas de Audio
1.15   Inteligencia Artificial (IA o AI)

15 subapartados ni más ni menos!!

En fin, ustedes que opinan?

Un saludo.
#464
Buenas foro! Después de algún tiempo de inactividad, andaba preparando unos cuantos assets que iré publicando en la página poco a poco, los vídeos están ya preparados en el canal de YouTube sin embargo.

En este mensaje os mostraré un asset de Unity que realizamos entre varias personas del equipo de Lerp2Dev. El asset es bien simple (nos llevo menos de 2 semanas hacerlo) y solo contiene varios modelos, mapas y armas y algunos scripts para controlar el personaje y los zombies. Espero que os guste!

Zombie AI Pack es un asset para como ya dije hacer juegos de zombies, es bien simple, tiene un pequeño manual en Español (y otro en inglés) para manejar los zombies, con arrastrar los zombies, el personaje y establecer el objetivo de estos los zombies empezarán a perseguir al personaje hasta matarlo. Es bastante útil para hacer pequeños minijuegos. La verdad que por el precio al que se encuentra ahora mismo es bastante apto. Eso si, es bastante simple, con tiempo el Asset irá creciendo para alojar más características que ahora serán anunciadas.

Descripción



Éste asset proveerá una plantilla personalizable para hacer un juego de zombies. Equipado con multiples herramientas, este asset es ideal para hacer minijuegos, exposiciones o incluso aprender.

Contiene manuales, documentación (próximamente), vídeos explicativos, modelos, animaciones, código bien detallado y explicado, etc...

¿A que esperas? Obtén este asset por un precio más que económico en la Asset Store de Unity.

Características



Con este asset podrás hacer lo siguiente:


  • 2 Prefabs de zombis con sus modelos personalizables y sus respectivos rigs, animacions y códigos.
  • El zombie tiene la habilidad de deambular con un sistema de deambulación preparado, también está programado y animado para comerse el cadaver del jugador.
  • Viene con multiples variables para configurar el zombi cómo desées.
  • 1 Prefab dejugador, también viene con animaciones, su rig y código.
  • Programado para moverse cómo un TPS(Shooter en Tercera Persona), viene con multiples variables para configurar, y un sistema de armamento para agregar más armas.

Como podéis ver se pueden hacer muchas cosas con este asset! ;)

Extras

A parte, el asset contiene también:


  • 2 modelos 3D de escenarios, que son una pequeña oficina y un bunker circular.
  • 2 modelos 3D de armas, los cuales son una pistola y una sub ametralladora.
  • 2 escenas de ejemplo.
  • Manual PDF sobre cómo configurar las variables del zombie y el jugador.

Videos



[youtube=640,360]Mzht9u-_ZEY[/youtube]

Imágenes







En el futuro...




  • Un sistema para revivir zombies
  • Un sistema de escucha para los zombies
  • Animales
  • Mejoras en el personaje, nadará?

Links de interés



Documentación (no está disponible aún, mis disculpas :( )
Manuales
Todos los manuales

Link al asset

Un saludo.

---

Nota: Compañero Elektro no estoy muy seguro de si esta sección del foro es la más adecuada, pensé en publicarlo en .NET puesto que Unity utiliza C# para la programación pero no se, lo dejo aquí por el momento. :huh:
#465
Dudas Generales / Re: Numeros primos.
8 Septiembre 2015, 23:37 PM
Buenas!

Los divisores de un número entero son aquellos que al dividirse entre este número siempre van a dar un número entero.

Un número entero es un número sin decimales, un número exacto. Y un numero con decimales puede ser de varios tipos:




  • Números naturales son aquellos que van desde el 0 al infinito. (Sin ningún decimal)
  • Números enteros son aquellos que van desde el más al menos infinito. (Sin ningún decimal)
  • Números racionales son aquellos que se pueden representar como una fracción: 1/2 (un medio), 1/3 (un tercio), etc... (Tienen un conjunto de decimales definidos)
  • Por tanto los irracionales son aquellos que tienen un número de decimales infinitos: pi, raiz de dos, el número de oro, el número e, etc...
  • Números reales, que abarcan los números racionales e irracionales...
  • Y hay un ultimo conjunto que son los números imaginarios que abarcan resultados como raices negativas, un simple ejemplo:

i = sqrt(-1)
i^2 = -1

(Con los números imaginarios se puede llegar a deducir que 1 = -1)

http://www.quora.com/Who-can-prove-1-1




Por tanto, significa que un número primo solo se puede dividir entre si mismo y entre 1 para que de un número entero.

Si tu divides 5 entre 5 da 1, pero si lo divides entre 2 por ejemplo, da 2.5 y por tanto no es un número entero, es un número racional.

Por ejemplo, 4 no es un número primo, puesto que hay más de un posible divisor como número entero.

Ejemplo:

4/4 = 1
4/2 = 2
4/1 = 4

Aquí puedes ver que números primos hay del 1 al 100:



Un saludo.
#466
Muchísimas gracias, que buen repertorio de cámaras y telescopios tienes que tener en tu casa, algún día tendrás que subir un post a EHN para mostrar todo. :P
#467
Buenas, necesito que me hagáis un pequeño favor...

Un amigo quiere saber donde es posible comprar una cámara GoPro o similar (cámara de mano, no se si es así como se dice). La cosa es que yo no estoy muy metido mucho en el tema. Puede que vosotros sí, así que si no os importa, me podríais mandar información, y hablarme sobre camaras GoPro o similares (con la misma función) o incluso, catálogos para comprar por Internet, etc. ;)

Un saludo.
#468
Muchas gracias Oblivi0n...

Iba a editar el post, porque recién salí del instituto y no pude terminar el post,

http://www.davenewson.com/dev/unity-notes-on-rendering-the-big-and-the-small

En este documento, se explica también un poco más sobre la duda que tenía más arriba:

CitarAn object at 1.234567 has a floating point accuracy to 6 decimal places (a micrometer), while an object at 76543.21 can only have two decimal places (a centimeter), and is thus less accurate.

Lo explica exactamente como yo necesitaba saberlo :P




Esto es un problema, porque, si yo hago un juego, y doy la posibilidad de poner explosivos, y que estos tengan knockback (retroceso), entonces si un usuario inventa esto:

https://www.youtube.com/watch?v=iDcYnAzwV0E

Y lo prueba, puede que cuando llegue a la zona de 160 km vea todo como yo dije al principio?  :laugh:

Estaría bien...

También se puede probar a escalar las cosas a un tamaño más pequeño, para poder conseguir más terreno de juego, pero esto puede ser peor, porque dados unos limites, las cosas pueden dejar de renderizarse o directamente, no se... xD

Sin doubles un juego a mundo abierto no tiene gracia, porque entonces que, si pongo que un personaje pueda recorrer 3 m/s andando normal, los 100km (que es la zona, donde los usuarios pueden comenzar a notar los efectos de la lejanía) los puede alcanzar a ritmo constante en unas 9 horas 15 minutos y 33 segundos :P

Algo tendré que hacer al respecto... :/
#469
Después de tanto tiempo, ¡Hola a todos!

Bueno, pues estoy aprendiendo Unity desde hace tiempo.

El caso es que bueno, como gamer que soy, he jugado a Minecraft y se lo que son las Farlands (para el que no lo sepa, una zona muy alejada del spawn donde las cosas se generan parcial o incorrectamente debido a la gran cantidad de digitos que dicha posición tiene (esto causa que las aproximaciones matemáticas no selleven acabo correctamente causando bugs y demás)).

Estas "Farlands" están en todos los juegos que sean de mundo abierto.

Con Unity puedes probar a alcanzar dichos limites donde todo comienza a ser extraño y un poco escalofriante. Para poner un ejemplo, cuando mueves un objeto a posiciones mayores de 100,000 unidades el editor de la IDE te avisa de que pueden haber problemas referentes a punto flotante. He probado a mover un jugador a más de 1 millón de unidades de (0, 0, 0) en los ejes X y Z y la verdad es que es bastante curioso, todo comienza a vibrar y apenas si puedes moverte y saltar correctaente sin que el personaje no te vaya a tirones.

Estoy intentando entender el concepto sobre estos errores de precisión, para ello he leido los limites de los siguientes tipos: floats, doubles y decimal; con este enlace: http://www.blackwasp.co.uk/CSharpNumericDataTypes.aspx

He estado leyendo página en inglés, pero no me he enterado de mucho (refente a Unity).

En este post: http://answers.unity3d.com/questions/240456/strange-shaking-or-mystery-far-lands.html el usuario que respondió dijo lo siguiente:

CitarThe further you are from 0.0 the worse it gets where over 10 000 you'll start to see anomalies where the floating point imprecision will be about 0.1.

No entiendo porque la imprecisión es de 0.1, es decir, la cantidad máxima de digitos que tiene el tipo float (el que usa Unity por defecto), este según la página de arriba tiene 7 digitos decimales de precisión es decir, que 10 000 o 10^4 tendría que mover 4 digitos nada más, haciendo que por ejemplo:

1/ 9 = 0.1111112 + 10 000 = 10000.112, y luego tomando solo la parte decimal 0.112 - 0.111 = 0.001 no??

Necesito que alguien me aclare esa duda...

EDITO: La duda ya la tengo resuelta ;) Más abajo dejé un link, por si alguien quiere revisar un sitio donde se explica de forma muy sencilla

Tengo otra consulta, y la pregunta es la siguiente, Unity usa floats (32 bits) por defecto y Java doubles (64 bits), mi pregunta es, porque no usa Unity doubles también, tienen más precisión, y es mejor, tengo tres posibles candidatos como posibles razón:

- Floats son más rápidos de procesar
- Unity solo está dedicado a una plataforma (Windows), mientras que java es multiplataforma, Unity en principio también lo es, pero al usar .NET tiene sus limitaciones...
- Las GPUs operan en single foating-points según este post: http://answers.unity3d.com/questions/667069/oculus-rift-camera-shaking-when-far-away-from-000.html (pero no creo que sea la razón)

Cual creéis que pueda ser la posible razón?

Un saludo.
#470
Buenas, hace tiempo que llevo en el foro y desde entonces es verdad que no he visto muchas dudas sobre programación de juegos, es más me atrevo a decir, que puede que sea el único que las haya hecho ;D

El caso es que, y si hubiese un subforo de dicha temática?

Ya se que muchos de vosotros me diréis que ya existe el foro de programación general, pero yo digo, general de que? De todo?

Yo creo que los posibles usuarios que estén aquí y que estén haciendo algo relacionado con programación de juegos no han preguntado nada, por la posible ausencia de un subforo dedicado a dicha temática. También es posible que no haya mucha gente o no se sepa de su existencia y por eso han optado por ir a otras comunidades a preguntar su duda, o exponer su proyecto, etc etc

Con esto quiero decir, lo siguiente: me gustaría que hubiese un subforo relacionado con esto, me gustaría ver que pasaría si este foro tuviese un subforo dedicado a la programación de juegos.

Un saludo.

PD:
Me gustaría que aunque no se aceptase la idea, expusieseis vuestras ideas acerca de esto.

PD2: Ya se que muchos van a pensar en el foro de programación general, pero, pensad en la posibilidad de que hubiese un subforo dedicado solo a la programación de juegos (Unity, UDK, CryEngine, Flash, GameMaker, etc...)