|
71
|
Programación / .NET (C#, VB.NET, ASP) / Duda sobre la precisión en comas/puntos flotantes en .NET
|
en: 22 Enero 2015, 14:29 pm
|
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.aspxHe 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: The 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.
|
|
|
72
|
Foros Generales / Sugerencias y dudas sobre el Foro / Subforo de programación de juegos?
|
en: 29 Noviembre 2014, 11:31 am
|
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 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...)
|
|
|
73
|
Seguridad Informática / Seguridad / ¿Protegerme ante posibles ataques de SQLi?
|
en: 9 Septiembre 2014, 14:38 pm
|
Hola buenas, pues he decido hacer una API para un servicio un tanto especial, tan especial que no me deja manejar ni MySQL ni PHP, por tanto tengo que mandar todas las peticiones a mi página usando JS... Entonces, ahora mismo lo hago de la siguiente manera: File.js ==== var key = "md5 string"; function sendToDB(data) { accedo al php con un post => sendpost("file.php?key=key&domain="+location.hostname+"&data=data"); }
File.php ===== $domain = @$_GET['domain']; if($key == $credentials['key']) { //Allow access and send data... $data = @$_GET['data']; }
Entonces eso va genial para las injections ya que si paso la "data" tal como viene, pues apaga y vámonos... Y como no lo puedo hacer de otra manera, lo único que se me ha ocurrido es enviar la información ("data") de forma cifrada o bien en Base64 o serializando... No se os ocurre nada más seguro que eso? Quizás por la parte de PHP me puedo proteger más y a parte de usar un mysqli_real_escape_string no se me ocurre nada más... Qué me recomendáis? Un saludo.
|
|
|
74
|
Programación / .NET (C#, VB.NET, ASP) / [WPF] Agregar referencia desde un recurso del mismo proyecto, es posible?
|
en: 22 Abril 2014, 17:09 pm
|
Hola buenas, pues llevo con el tema 2 días y aún no he conseguido averiguar nada de nada, todo lo que he leido y he visto se ha hecho desde WinForms, supongo que no será muy dificil adaptarlo a WPF... La cosa es esta, veréis, yo tengo un DLL (que se puede agregar como referencia a un proyecto) la cosa es que este DLL tiene siempre que estar al lado del ejecutable (.exe) para que la aplicación rule, si no lo está no se abre como sabréis. Para mi esto de que un maldito DLL tenga que estar al lado del Exe para que se pueda ejecutar me toca mucho la moral, y bueno, pues estuve viendo por ahí metodos de como poder llamar a este dichoso DLL desde los recursos. Y bien, tengo dos problemas, uno a rasgos generales, que me planteé nada más plantear la duda y es... que si cargo desde los recursos este dichoso DLL como se supone que Intellise va a detectar que en los recursos hay tal DLL para importarlo (Imports DLL.Dichoso), no se si me explico, esta duda, como aún no he podido ni romper la punta del iceberg, pues la dejo ahí. Y la otra es, el problema en sí, que he buscado por internet y nada... ILMerge por aquí, .Net Shrink por allá, pero ningún maldito tutorial en condiciones que te explique paso por paso lo que se supone que hay que hacer. Luego está CodeProject, y StackOverFlow, que me han aportado ciertos códigos, que luego, bueno, han llegado a tener algún efecto, pero no el deseado, el que más este: Private Sub DynaStart(ByVal sender As Object, ByVal e As StartupEventArgs) 'En winforms debería estar el tipico "Handles Me.StartUp" AddHandler AppDomain.CurrentDomain.AssemblyResolve, AddressOf DynamicOokii_Dialogs_Wpf AddHandler AppDomain.CurrentDomain.AssemblyResolve, AddressOf DynamicIonic_Zip End Sub Private Function DynamicOokii_Dialogs_Wpf(sender As Object, e As System.ResolveEventArgs) As Reflection.Assembly Dim desiredAssembly = New Reflection.AssemblyName(e.Name) If desiredAssembly.Name = "DynaWars_Splash_Text" Then Return Reflection.Assembly.Load(My.Resources.Ookii_Dialogs_Wpf) 'replace with your assembly's resource name Else Return Nothing End If End Function Private Function DynamicIonic_Zip(sender As Object, e As System.ResolveEventArgs) As Reflection.Assembly Dim desiredAssembly = New Reflection.AssemblyName(e.Name) If desiredAssembly.Name = "DynaWars_Splash_Text" Then Return Reflection.Assembly.Load(My.Resources.Ionic_Zip) 'replace with your assembly's resource name Else Return Nothing End If End Function
Que al menos conseguí que la aplicación se abriese sin necesidad de tener los DLLs presentes, pero, cuando llamaba alguna función de Ookii o de Ionic_Zip la app dejaba de funcionar. (Las referencias también estaban agregadas desde Proyecto -> Agregar referencia, para que Intellise si que me reconociese estos métodos, yo creo que algo estoy haciendo pero que muy mal...) Y luego esto, que para colmo estaba en C#: http://www.codeproject.com/Articles/528178/Load-DLL-From-Embedded-ResourceQue fue el que me dio la idea de Agregar las referencias al proyecto, a parte de subirlas a los recursos como Embedded Resource (Recurso Incrustado) Así que nada, maestros, decidme que debo hacer para poder llevar a cabo tal hazaña... xD Un saludo.También he leido esto, que bueno, recoge algo de la esencia de lo que yo estoy haciendo: http://foro.elhacker.net/buscador-t381033.0.html
|
|
|
78
|
Programación / PHP / Identificadores del PC que sean utilizados por PHP
|
en: 6 Abril 2014, 18:33 pm
|
Hola buenas, veréis necesito almacenar algunos datos sobre el pc de mis usuarios... El problema, es que necesito una clave para cuando este usuario vaya a reclamar sus datos... (Y no una clave tipo Usuario y contraseña, no, una clave que sea como la clave global del PC por el cual pueda ser identificado facilmente) Cual es el problema? Que no tengo constancia de que haya algún valor tipo Serial o Key que vaya con cada PC y que el $_SERVER o cualquier otra variable de PHP lo identifique... Por ahora solo tengo 2 alternativas, la IP o el User-agent, y ninguna de las dos me sirve, porque con la IP, dinámica + apagón = usuario nuevo, y con el User-agent, navegador nuevo = usuario nuevo... Entonces... Hay aglún "IMEI para PC" que PHP reconozca para este tipo de situaciones? Un saludo.PD: Estuve viendo las variables de $_SERVER y ninguna me sirvió: http://beta.thumbalizr.com/app/thumbs/?src=/thumbs/onl/source/14/14d1d00c357c5cd0ecb6d95e7d10f3f8.png&w=1280&q=0&enc=
|
|
|
79
|
Foros Generales / Foro Libre / ¿Qué creen sobre esta afirmación?
|
en: 4 Abril 2014, 20:43 pm
|
Hola veréis, de siempre me he cuestionado esto, pero no se, hoy me he acordado, y he decidido sacar el tema...
(Puede que sea un poco incoherente, pero hay que echarle imaginación) Vosotros, créeis que si un programador o una compañía (esto es menos factible) no tuviese presupuesto para ordenadores buenos, se preocuparían más por el rendimiento de su juego, o harían el uego con menos detalles?
Es decir, yo pienso que un programador (individual) a cuanto más malo es su PC, más se preocuparía por hacer que su juego fuese más mejor, en lo que es el rendimiento...
Vosotros créeis que si los programadores hiciesen sus juegos en PC más malos, sus juegos rendirían mejor?
Yo creo que el buen programador, se preocuparía en programar un juego en un ordenador malo, así a la hora de venderlo, vendería mejor... Puesto, que no toda la gente del mundo se puede permitir un lujo de PC...
Ya se que la pregunta puede ser chorra... Pero yo creo que los programadores, no tienen en cuenta a los usuarios con PC malos (yo fui uno de ellos, por lo tanto a la horta de programar, siempre tengo en cuenta a estos usuarios), y por eso, hacen esos juegos tan bestias... Que a fin de cuentas, seguramente se pueden optimizar más, pero les da palo o yo que se, o no se acuerdan de nosotros los Gamers con PC malos...
Que opináis?
PD: Puede que este topic sea un poco, no se, porque no tiene mucha coherencia, pero intentad buscarsela...
Un saludo.
O mejor así, planteadlo de la siguiente manera... Que créeis que pasaría si las grandes compañías, no pudiesen crear sus juegos en PC de ultima generación? (No tiene porque salir un truo de juego, por ejemplo; GTA SA salio en 2005, no es que sea un juego con graficos Interteiment HD 1080p 3000x3000px pollas en vinagre Z, pero son aceptables... Y el juego sigue igual o más potente que XP en la actualidad (Comparando W8.1 con GTA V y GTA SA con XP))
|
|
|
|
|
|
|