Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Porque Usar C# Y No C++

Iniciado por , 23 de Diciembre de 2004, 02:16:27 PM

« anterior - próximo »

seryu

 
Cita de: "Grugnorr"PD: Algún profesional, que dé por favor su versión de cómo hoy en día los juegos descargan todo el código que pueden de C++ a script, editores y demás capas sobre C++... Creéis que UnrealScript es más rápido que C#?  ;)
Decir eso es meterse en una trampa mortal, hoy dia se tiende a usar scripts para evitar la compilacion de las mil y una clases.. pero las partes comprometidas del motor/juego como puede ser el renderer o fisicas estan siempre en el codigo c++

las razones de usar script en un motor son diferentes a las de usar c# para programar un motor, la necesidad de esta separacion queda patente cuando existen engines programados en c# que usan scripts como phyton y cia.

AgeR

 No sé por qué tanto escándalo.
La contestación a la pregunta (Por qué usar C# y no C++) es bien simple : porque ellos han querido.

Además estoy seguro de que están aprendiendo una barbaridad de C# y por si fuera poco lo están desarrollando en un tiempo record.

Tampoco entiendo esa manía de criticar un estandar que aún habiendo sido creado por Microsoft, tiene el apoyo de una grandísima parte de la comunidad del software libre. De hecho casi me atrevería a decir que he visto más proyectos usando Mono que .NET puro y duro  :ph34r: .

Para una cosa buena que hace Microsoft también hay que salir en su contra? Parece que cuando no hay excusas para atacar a Microsoft, se inventan. Cada desarrollador es libre de programar en lo que quiera, no? Si la gente empieza a usar Mono en vez de Java o C++ a palo seco por algo será  ;) .


Grugnorr

 
CitarPD: Algún profesional, que dé por favor su versión de cómo hoy en día los juegos descargan todo el código que pueden de C++ a script, editores y demás capas sobre C++... Creéis que UnrealScript es más rápido que C#?   

Seryu, acepto que no está muy bien formulada la frase.  Intentaré elaborar más:

En juegos profesionales, tienes scripts por varias razones:

a)  Evitar tener que compilar --> módulos de gameplay principalmente.  .NET te permite compilar al vuelo el código que quieras, puedes tener todo ésto en C# y que al arrancar el motor te compile en una dll el código y usarlo tal cual, mucho más rápido que siendo interpretado y con toda la funcionalidad de C#.

B) Permitir modificación externa, mods etc etc --> Más de lo mismo, se suelen usar script por facilidad de desarrollo

c) Facilidad de desarrollo en módulos que no necesitan alta eficiencia, ejemplo claro el UnrealScript.

Mi idea es que cada vez más se deja el código de baja productividad, alta eficiencia: C++ para módulos concretos ( Render ya no tiene sentido si todo lo hace la GPU, así que Física, IA de bajo nivel...) y lenguajes productivos para el resto

PD: Los lenguajes de script siguen siendo muy útiles, y en .NET tienes todos los conocidos incluso con muchas mejoras, porque puedes usarlos interpretados como siempre, o la mayoría, integrados en .NET ( cls compliant) pudiendo "mezclarlos" con el resto de .NET, usar clases de .NET en medio de python y viceversa. IronPython es la versión de Pyhton para .NET del creador de jython, más rápida que la versión C ;)
hat the hells!

TheAzazel

 A cuadros me quedo leyendo todo esto.. q si java, q si C++, q si C#....
Haddd y cia ha utilizado C# pq le ha dado la gana y a la vez, ha demostrado que con C# se pueden hacer cosas bastante interesantes.
Seguid discutiendo de esto, pq todos teneis razon, TODOS los lenguajes tienen puntos fuertes y debiles... esto me suena a cuando salio por primera vez el VB... hay q ser listos y utilizar cada lenguaje con inteligencia y si esto no os prima(q lo haceis por hobby), pues hacer lo q querais y asi aprendereis mas o no?.
Yo soy de C/C++ pero no se me ocurre matar moscas a cañonazos...si tengo q utilizar VB, C#, Java o cualquier otro lenguaje que sea mas especifico en el ambito del programa que deseo desarrollar..simplemente lo utilizo, q para eso estan.
Saludos a todos y no mezcleis gustos ni sentimientos con estas cosas... a mi tampoco me gusta mucho M$ pero... solo pq son unos prepotentes...aunq q yo sepa, son los unicos prepotentes con derecho a ello jeje

StraT

 Nadie hace ningun comentario de mi codigo?  :angry:  O_O  :rolleyes:  :D  (uoh)  xD
quot;Solo hay dos cosas infinitas, el universo y la estupidez humana, aunque de lo primero no estoy muy seguro\\\" Einstein

Amatar

 Os ha faltado una de las mayores utilidades de los lenguajes de script: que sean lo suficientemente sencillos para que los usen personas sin conocimiento de programacion.
Parece que somos todos programadores y no nos damos cuenta, pero por ejemplo el que los grafistas puedan retocar secuencias, logica de animaciones y demas enlaces entre programacion y graficos/modelos es una gran ventaja. O que el diseñador de niveles pueda intervenir en la logica del juego sin tener que aprender a programar.
a historia comienza con un huevo...

Cojoncio Arena:Severancio Güarrior
http://www.cojoncioarena.com

Mars Attacks

 A mí me preocupa seriamente lo que M$ quiera hacer con el "estándar" en el que participa. No será por precedentes[1]:

Rompiendo las normas

Una táctica bastante utilizada por Microsoft para lograr el dominio del mercado es la conocida como "Embrace and Extend"  (adherir y extender). La misma consiste en extender ciertos protocolos o normas más allá de los estándares de manera arbitraria y unilateral, para que luego sólo los productos que los implementen de la misma manera puedan interoperar de forma correcta. Sobran ejemplos de este tipo de práctica (la implementación de SMTP de Microsoft Exchange, la alteración a HTTP en Internet Information Server, entre otras), pero la más notable quizás sea la que derivó en el juicio que Sun Microsystems inició a Microsoft por haber extendido la especificación de su lenguaje Java violando las condiciones de su licencia, que permite a cualquiera implementar un compilador de dicho lenguaje, pero sin apartarse de dicha especificación. El objetivo perseguido por Microsoft era que los programas Java generados con su entorno de desarrollo J++ solamente pudieran ejecutarse sobre Windows, siendo que Java fue diseñado como un lenguaje que permitiera el desarrollo de aplicaciones portables entre distintas plataformas (algo que, evidentemente, no le conviene). Al fallar este intento, Microsoft tomó la decisión de no incluir soporte para Java en su nuevo sistema operativo: Windows XP.

[1] Javier Smaldone: ¿Microsoft?, http://www.smaldone.com.ar

 Hola.

Yo soy profesional en el sector del desarrollo de software, en una empresa bastante importante. Trabajo en el depto. de tecnologías microsoft y como tal, la mayor parte de los proyectos que realizamos son para la plataforma .NET (si bien es cierto que algun cliente nos importe de vez en cuando VB6 o alguna q otra tecnologia obsoleta). Tambien en mis horas libres me dedico a la programación de juegos y cosillas relacionadas (demos, etc)

Os puedo decir que a la hora de hacer un motor 3D, un buen motor, con una arquitectura bien diseñada y que rinda al máximo es indispensable usar un lenguaje que nos permita afinar al máximo. Es por esto que veo muy justificado el uso de C++ para esta parte del desarrollo.

Por el contrario, existen muchas más tareas de programación en donde C#, VB.NET o cualquier lenguaje gestionado / interpretado tienen cabida. Os hablo de la programación de la lógica del juego, programación de las herramientas (pluggins para 3dstudio, editores de niveles, etc)

Asi que, aunque no deja de ser interesante realizar un motor en c# y ver hasta donde podemos llevarlo, que nos quede bien clarito que en aplicaciones que requieran elevado uso de CPU el rendimiento de un codigo nativo puede ser infinitamente superior. En la parte de render, habra poca diferencia entre gestionado y nativo, mientras que en los grandes bucles de cálculo usados para la IA, detección colisiones, física, etc... encontraremos el gran handicap de c#.

Si tenemos que afrontar un videojuego completo una solución hibrida entre lenguajes nativos y gestionados puede ser la solución más productiva.  Por ultimo, decir que para un programador debidamente formado y medianamente disciplinado (yo no soy el caso, que conste), no debe ser tan inproductivo el uso de C++ gracias a los potentes entornos de desarrollo que tenemos hoy en dia.

un saludo a todos!

[Over]

 Hola.

Strat:

Te voy a poner el codigo ahi a lo guarro, para que veas la igualdad de lo tuyo en C++

RenderContext.cpp



#include <SDL.h>
#include <gl\gl.h>
#include <gl\glu.h>

CRendercontext::RenderContext(int width, int height, int bbp, int flags)
{

  SDL_Init(Sdl.SDL_INIT_VIDEO);
  SDL_SetVideoMode(width, height, bbp, flags);
  SDL_WM_SetCaption("SSE Engine", null);

  glViewport(0, 0, width, height);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();

  gluPerspective(45.0f, width / height, 0.1f, 100.0f);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();

}


Viewer.cpp



#include <SDL.h>
#include <gl\gl.h>

int CViewer::Renderiza()
{
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 glLoadIdentity();

 glBegin(GL_TRIANGLES);                    

   glColor3f(1.0f,0.0f,0.0f);            
   glVertex3f( 0.0f, 1.0f, -3.0f);

    glColor3f(0.0f,1.0f,0.0f);  
    glVertex3f(-1.0f,-1.0f, -3.0f);

    glColor3f(0.0f,0.0f,1.0f);
    glVertex3f( 1.0f,-1.0f, -3.0f);
 
  glEnd();

   return 1;

}

void Main()
{

 CRenderContext rContext = new RenderContext(800, 600, 32,SDL_OPENGL);

 bool AplicacionFinalizada = false;

// AQUI HAY SUMAR EL CODIGO DE LOS EVENTOS, QUE ES PRACTICAMENTE IGUAL.
 SDL_Quit();
}



Para mi hay mejores formar de ordenar estas cosas, en mas ficheros si, pero vamos, con esto te demuestro que tu codigo en C++ es practicamente igual en cuanto a cantidad de lineas vamos :D.

No entiendo este ataque a C++ cuando hoy hay librerias para C++ de casi todo que te ayudan muchisimo, ya casi nadie usa sus propias listas, ni tipos string ni nada de eso, usas las STL y se acabó y así con un sinfin de cosas (base de datos, redes, etc...).

Vicente

 
Cita de: "nolver"mientras que en los grandes bucles de cálculo usados para la IA, detección colisiones, física, etc... encontraremos el gran handicap de c#.
Hola,

solo opino del tema de la IA, que no conozco de colisiones ni física. No tengo ninguna experiencia en hacer la IA de un juego (solo en aplicaciones como las prácticas de una universidad). Yo supongo que el rendimiento, además del lenguaje, depende en gran medida del tipo de juego. La IA del Rise of Nations por ejemplo usaba Lisp, y no creo que sea un lenguaje mucho más eficiente que C#... Un saludo!

Vicente

Grugnorr

 
CitarLa IA del Rise of Nations por ejemplo usaba Lisp

:blink:


PD: Un juego de consola, de aventuras... que no sé cómo se llama xD algo y dexter?, también usó Lisp para la IA
hat the hells!

Sacrifai

Cita de: "Grugnorr"PD: Un juego de consola, de aventuras... que no sé cómo se llama xD algo y dexter?, también usó Lisp para la IA
Jack and Dexter. Odio ese juego...  (uoh)

No entiendo porque tanto revuelo con el tema de C# y C++. Cada uno tiene su propia utilidad y ninguno es mejor que el otro ( eso lo decido cada uno personalmente ). Lo que si supongo esque tendremos que acabar aprendiendo C# porque alguna vez tendremos que usarlo.

zupervaca

 el c# nos tocara usarlo en empresas para hacer aplicaciones y el c++ nos tocara usarlo en empresas para hacer juegos  :P

teneis que daros cuenta que actualmente es normal que vaya rapido, simplemente se estan haciendo llamadas a directx, no se hace nada mas que eso, pero cuando toque hacer un juego de verdad es cuando se ve la diferencia de velocidad, el mover unas unidades de forma inteligente, etc etc hara que los fps bajen mucho (aunque claro esta, para ver esto se debe de utilizar la misma metodologia, no vale optimizar una mas que la otra  :D )

me ha gustado el ultimo video mas que el primero ya que enseñais mas la funcionalidad del motor

pd: una cosa mas, no es por fastidiar ni nada, pero me parece de mal gusto esta frase que teneis en el web "Un proyecto que en pocos meses ha hecho lo que muchos soñaron hacer en ańos.", yo tarde un mes en hacer el motor de mi web, pero no por eso pongo cosas como esta, teneis que daros cuenta que normalmente no se tarda años en hacer un motor, se tarda años en hacer un juego ;)
bueno y si no la quereis cambiar por lo menos poner años y no ańos  :lol:

BeRSeRKeR

 
Cita de: "zupervaca"pd: una cosa mas, no es por fastidiar ni nada, pero me parece de mal gusto esta frase que teneis en el web "Un proyecto que en pocos meses ha hecho lo que muchos soñaron hacer en ańos.", yo tarde un mes en hacer el motor de mi web, pero no por eso pongo cosas como esta, teneis que daros cuenta que normalmente no se tarda años en hacer un motor, se tarda años en hacer un juego ;)
bueno y si no la quereis cambiar por lo menos poner años y no ańos  :lol:
Bueno he decir que eso no salió de nuestra boca (ni de nuestro teclado :D) en ningún momento. La verdad es que ni lo había leído. :)

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Cita de: "ALRAZ"habr� SDL para C#?  :D
KE NO SE TRATA DE stl Y NO sdl :blink:  o es ke ando confundido






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.