Re: Sweng-Gamedev Digest, Vol 76, Issue 1
Jérémy Masson <[email protected]> Mon, 1 Feb 2016 14:17:08 +0100
| Newsgroups | gmane.games.devel.sweng |
|---|---|
| Message-ID | <CAH1eGjPBkFv+BZwuqTkyiDV_B+_u-ji=FuEuNKOy8=8UShs6LA@mail.gmail.com> |
--===============1587803224== Content-Type: multipart/alternative; boundary=94eb2c07e590dddbe7052ab53481 --94eb2c07e590dddbe7052ab53481 Content-Type: text/plain; charset=UTF-8 Hello Peter, I have some experiences in game creation/design with Java, and here is what I can tell you : Graphics : There are tons of graphic frameworks, even only for Java, and it's a real pain to find one that suits your needs. A lot of those projects become or will become inactive or insufficient (compare to OpenGL updates or the way your game evolve) and the price of adapting your code to another framework is always really high. OpenGL is an API used to communicate directly with the GPU and other hardware functionalities implemented into graphic cards. Learning how to use this API is the best you can do (through 2D or 3D) to learn how to make complex graphics well rendered in the end. But you will quickly discover by yourself that graphic efficiency is in itself really complex because of being tied to the heavy load of possibilities and options available. During the beginnings of my experience in game design, I really didn't want to lean over all the graphic complexity. And I already knew how to create and render 3D models with a camera/viewport but I got stuck with a lot of unexpected problems even in 2D drawing (e.g handle draw order/z-index, smooth scrolling, choosing the right drawing method, use blending, use alpha channel the right way, aliasing and anti-aliasing, sampling, shaders, etc...). For me, everything changed when I decided not to learn OpenGL directly but to learn a solid framework that has a more friendly layer than OpenGL API or other tiny graphic frameworks (that looked easy but were finally incomplete and error inducing). LWJGL <https://www.lwjgl.org/> is built on OpenGL like a top-layer used to access OpenGL functionalities more easier and "cleaner" for newbies. It really changed my point of view on graphics and it's usage and I did some good work with it. You should really look into it as it is a very active project and it's updated to OpenGL 4.5 specs (latest if i'm not wrong). JOGL is another known top-layer of OpenGL. I wouldn't advise using it but my researches and readings on it date back to 5 years or more so... Finally LibGDX <https://libgdx.badlogicgames.com>, which uses LWGJL is the best framework I've been using to make Java games. Badlogicgames make real badass tools ! Also check Architecture : When working on games people are usually advised against using Java because of (IMO) unjustified performance capacities. I never felt limited by Java but most of my experiences are with 2D games, so I don't know really for 3D. ----- Sorry i don't have much time left to write so i'll be quick on this part ----- The problem might be that Java is Object oriented first and it's not the best architecture to use in game making. Hopefully the Java community always provide interesting answers and Artemis-odb <https://github.com/junkdog/artemis-odb> framework really blew my mind in game designing. It took me months to adapt my classic (MVC/MVVM or such) way of developing and wrap my mind around Data Oriented Architecture but it really worth it. The Entity System provided by Artemis is what game developers needs ! For your questions on 3D graphic frameworks, Unity3D is what I heard the most and work really well with Java. Ogre3D seems newer but I don't know anything about it. And if you're not tied with the language, I really suggest your interest yourself in the Unreal Development Kit <https://www.unrealengine.com/unreal-engine-4> which is really, really amazing. Bye, Jeremy 2016-01-29 22:40 GMT+01:00 <[email protected]>: > Send Sweng-Gamedev mailing list submissions to > [email protected] > > To subscribe or unsubscribe via the World Wide Web, visit > > http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.com > > or, via email, send a message with subject or body 'help' to > [email protected] > > You can reach the person managing the list at > [email protected] > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of Sweng-Gamedev digest..." > > > Today's Topics: > > 1. How to do complex graphics output efficiently? (Peter Nabbefeld) > 2. Re: How to do complex graphics output efficiently? (comp4k678) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Fri, 29 Jan 2016 07:31:57 +0000 (UTC) > From: Peter Nabbefeld <[email protected]> > To: [email protected] > Subject: [Sweng-Gamedev] How to do complex graphics output > efficiently? > Message-ID: <[email protected]> > Content-Type: text/plain; charset=us-ascii > > > Hi, > > I've never developed a game before, and I wonder how to do complex graphics > output efficiently. Currently, I dont't want to use a framework, just want > to learn some basics. > > So far, it's about these two issues: > > 1. In 2D games, You often have objects behaving equally, e.g. a swarm of > birds, all flapping with their wings - sometimes even asynchronous. From my > point of view there seem to be two possible solutions: (a) Using animated > GIFs (b) Using one object with several image layers, which could be drawn > individually using Flyweight objects with timers/counters. > > 2. How to make a 3D view with e.g. animated animals, fog, etc.? I want to > use Java, Ogre4J seems to be inactice since 2009, JOGL seems rather basic, > so is there any good framework to draw animated 3D objects? > > Kind regards > Peter > > > > ------------------------------ > > Message: 2 > Date: Fri, 29 Jan 2016 12:40:19 +0100 > From: comp4k678 <[email protected]> > To: [email protected] > Subject: Re: [Sweng-Gamedev] How to do complex graphics output > efficiently? > Message-ID: <[email protected]> > Content-Type: text/plain; charset=windows-1252 > > Hi Peter > > If you want to learn the basics, the traditional way of running a game > is with a game loop, an endless loop where you check input, update the > internal game logic, and render the screen in that order. For 2d games, > first you render the background, and then you render sprites on top of > that, in order. For 2d games with animated sprites you simply draw a > different frame at the position of each object each time you render the > screen. The individual frames can be stored as any format, e.g. PNG. > Forget about (animated) GIF, it's outdated. > > Historically, games are mostly written in C/C++, although Java probably > is used on Android these days and I'm pretty sure Python has excellent > support as well. When developing for a PC, I wouldn't do it in Java, > although there's nothing wrong with the language per se, it's just not > so much used for making 'simple' games so it will be hard to find help. > So I'd probably go with Python so I don't have to wait for things to > recompile as is the case with C/C++. Python is a fun and easy language > to try things out with. > > For 2d games, the bare minimum you need is a language and a graphics > library that allows you to draw sprites on the screen (so you don't have > to manually update every pixel ;), and to get input from e.g. keyboard > and mouse. For C/C++, SDL is a good choice although it's a bit old, but > it will be quite efficient. (It probably won't use much of your GPU, > instead, efficient CPU instructions are used, which is fine because the > overhead involved with using a GPU will be larger than the speed gain > for 2d. Even slow CPUs can handle 2d graphics perfectly well.) > > Also, be prepared to get better at programming as you go, the best > school is to try things out, to look at other people's code and learn > from that. > > For 3d games, if you don't want to use a framework, you'll have to learn > plain OpenGL so your graphics card is used to render stuff, but most > tutorials found on the web are incredibly outdated so the best way to go > is read an experts book, but those are hard for a beginner. Also the way > to set up an OpenGL context is platform dependent so you have to do the > work again for each platform. And you can't just call OpenGL from your > game objects because that will lead to a lot of code duplication and > unnecessary coupling. So you'll have to write your own engine, which is > a lot of work and so far from one's initial motive to make a fun and > interesting game that it's really better to just use a decent engine. In > the community, C++ is the most popular choice, you'll get the best > performance but it's also a pain in the ass to wait for things to > compile each time you change something, and you have to manually write > header files which is unnessary work IMO, a machine should do this for > you. Java is better in this regard but there aren't a lot of people > using it for 3d games (unless maybe Android). > > Anyway it's been such a long time I did anything gamedev-related so > don't take my word on what languages & library to use. But I'm pretty > confident about what I said about the 'basics' of 2d & 3d development. > > Good luck > Joeri > > > On 01/29/2016 08:31 AM, Peter Nabbefeld wrote: > > > > Hi, > > > > I've never developed a game before, and I wonder how to do complex > graphics > > output efficiently. Currently, I dont't want to use a framework, just > want > > to learn some basics. > > > > So far, it's about these two issues: > > > > 1. In 2D games, You often have objects behaving equally, e.g. a swarm of > > birds, all flapping with their wings - sometimes even asynchronous. From > my > > point of view there seem to be two possible solutions: (a) Using animated > > GIFs (b) Using one object with several image layers, which could be drawn > > individually using Flyweight objects with timers/counters. > > > > 2. How to make a 3D view with e.g. animated animals, fog, etc.? I want to > > use Java, Ogre4J seems to be inactice since 2009, JOGL seems rather > basic, > > so is there any good framework to draw animated 3D objects? > > > > Kind regards > > Peter > > > > _______________________________________________ > > Sweng-Gamedev mailing list > > [email protected] > > > http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.com > > > > > ------------------------------ > > Subject: Digest Footer > > _______________________________________________ > Sweng-Gamedev mailing list > [email protected] > http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.com > > > ------------------------------ > > End of Sweng-Gamedev Digest, Vol 76, Issue 1 > ******************************************** > --94eb2c07e590dddbe7052ab53481 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Hello Peter,<div><br></div><div>I have some experiences in= game creation/design with Java, and here is what I can tell you :</div><di= v><br></div><div>Graphics :</div><div><br></div><div>There are tons of grap= hic frameworks, even only for Java, and it's a real pain to find one th= at suits your needs. A lot of those projects become or will become inactive= or insufficient (compare to OpenGL updates or the way your game evolve) an= d the price of adapting your code to another framework is always really hig= h.</div><div>OpenGL is an API used to communicate directly with the GPU and= other hardware functionalities implemented into graphic cards. Learning ho= w to use this API is the best you can do (through 2D or 3D) to learn how to= make complex graphics well rendered in the end. But you will quickly disco= ver by yourself that graphic efficiency is in itself really complex because= of being tied to the heavy load of possibilities and options available.</d= iv><div>During the beginnings of my experience in game design, I really did= n't want to lean over all the graphic complexity. And I already knew ho= w to create and render 3D models with a camera/viewport but I got stuck wit= h a lot of unexpected problems even in 2D drawing (e.g handle draw order/z-= index, smooth scrolling, choosing the right drawing method, use blending, u= se alpha channel the right way, aliasing and anti-aliasing, sampling, shade= rs, etc...).</div><div>For me, everything changed when I decided not to lea= rn OpenGL directly but to learn a solid framework that has a more friendly = layer than OpenGL API or other tiny graphic frameworks (that looked easy bu= t were finally incomplete and error inducing). <a href=3D"https://www.lwjgl= .org/">LWJGL</a> is built on OpenGL like a top-layer used to access OpenGL = functionalities more easier and "cleaner" for newbies. It really = changed my point of view on graphics and it's usage and I did some good= work with it. You should really look into it as it is a very active projec= t and it's updated to OpenGL 4.5 specs (latest if i'm not wrong). J= OGL is another known top-layer of OpenGL. I wouldn't advise using it bu= t my researches and readings on it date back to 5 years or more so...</div>= <div>Finally <a href=3D"https://libgdx.badlogicgames.com">LibGDX</a>, which= uses LWGJL is the best framework I've been using to make Java games. B= adlogicgames make real badass tools ! Also check=C2=A0</div><div><br></div>= <div>Architecture :</div><div>When working on games people are usually advi= sed against using Java because of (IMO) unjustified performance capacities.= I never felt limited by Java but most of my experiences are with 2D games,= so I don't know really for 3D.</div><div>----- Sorry i don't have = much time left to write so i'll be quick on this part -----</div><div>T= he problem might be that Java is Object oriented first and it's not the= best architecture to use in game making. Hopefully the Java community alwa= ys provide interesting answers and <a href=3D"https://github.com/junkdog/ar= temis-odb">Artemis-odb</a> framework really blew my mind in game designing.= It took me months to adapt my classic (MVC/MVVM or such) way of developing= and wrap my mind around Data Oriented Architecture but it really worth it.= The Entity System provided by Artemis is what game developers needs !</div= ><div><br></div><div>For your questions on 3D graphic frameworks, Unity3D i= s what I heard the most and work really well with Java. Ogre3D seems newer = but I don't know anything about it. And if you're not tied with the= language, I really suggest your interest yourself in the <a href=3D"https:= //www.unrealengine.com/unreal-engine-4">Unreal Development Kit</a> which is= really, really amazing.</div><div><br></div><div>Bye,</div><div>Jeremy</di= v></div><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">2016-01-2= 9 22:40 GMT+01:00 <span dir=3D"ltr"><<a href=3D"mailto:sweng-gamedev-re= [email protected]" target=3D"_blank">sweng-gamedev-request@list= s.midnightryder.com</a>></span>:<br><blockquote class=3D"gmail_quote" st= yle=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send = Sweng-Gamedev mailing list submissions to<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 <a href=3D"mailto:[email protected]= yder.com">[email protected]</a><br> <br> To subscribe or unsubscribe via the World Wide Web, visit<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 <a href=3D"http://lists.midnightryder.com/listi= nfo.cgi/sweng-gamedev-midnightryder.com" rel=3D"noreferrer" target=3D"_blan= k">http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.= com</a><br> <br> or, via email, send a message with subject or body 'help' to<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 <a href=3D"mailto:[email protected]= idnightryder.com">[email protected]</a><br> <br> You can reach the person managing the list at<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 <a href=3D"mailto:[email protected]= nightryder.com">[email protected]</a><br> <br> When replying, please edit your Subject line so it is more specific<br> than "Re: Contents of Sweng-Gamedev digest..."<br> <br> <br> Today's Topics:<br> <br> =C2=A0 =C2=A01. How to do complex graphics output efficiently? (Peter Nabbe= feld)<br> =C2=A0 =C2=A02. Re: How to do complex graphics output efficiently? (comp4k6= 78)<br> <br> <br> ----------------------------------------------------------------------<br> <br> Message: 1<br> Date: Fri, 29 Jan 2016 07:31:57 +0000 (UTC)<br> From: Peter Nabbefeld <<a href=3D"mailto:[email protected]">peter.n= [email protected]</a>><br> To: <a href=3D"mailto:[email protected]">sweng-gamedev@midnig= htryder.com</a><br> Subject: [Sweng-Gamedev] How to do complex graphics output<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 efficiently?<br> Message-ID: <<a href=3D"mailto:[email protected]">= [email protected]</a>><br> Content-Type: text/plain; charset=3Dus-ascii<br> <br> <br> Hi,<br> <br> I've never developed a game before, and I wonder how to do complex grap= hics<br> output efficiently. Currently, I dont't want to use a framework, just w= ant<br> to learn some basics.<br> <br> So far, it's about these two issues:<br> <br> 1. In 2D games, You often have objects behaving equally, e.g. a swarm of<br= > birds, all flapping with their wings - sometimes even asynchronous. From my= <br> point of view there seem to be two possible solutions: (a) Using animated<b= r> GIFs (b) Using one object with several image layers, which could be drawn<b= r> individually using Flyweight objects with timers/counters.<br> <br> 2. How to make a 3D view with e.g. animated animals, fog, etc.? I want to<b= r> use Java, Ogre4J seems to be inactice since 2009, JOGL seems rather basic,<= br> so is there any good framework to draw animated 3D objects?<br> <br> Kind regards<br> Peter<br> <br> <br> <br> ------------------------------<br> <br> Message: 2<br> Date: Fri, 29 Jan 2016 12:40:19 +0100<br> From: comp4k678 <<a href=3D"mailto:[email protected]">comp4k678@gmail.= com</a>><br> To: <a href=3D"mailto:[email protected]">sweng-gamedev@midnig= htryder.com</a><br> Subject: Re: [Sweng-Gamedev] How to do complex graphics output<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 efficiently?<br> Message-ID: <<a href=3D"mailto:[email protected]">56AB4FA3.4080= [email protected]</a>><br> Content-Type: text/plain; charset=3Dwindows-1252<br> <br> Hi Peter<br> <br> If you want to learn the basics, the traditional way of running a game<br> is with a game loop, an endless loop where you check input, update the<br> internal game logic, and render the screen in that order. For 2d games,<br> first you render the background, and then you render sprites on top of<br> that, in order. For 2d games with animated sprites you simply draw a<br> different frame at the position of each object each time you render the<br> screen. The individual frames can be stored as any format, e.g. PNG.<br> Forget about (animated) GIF, it's outdated.<br> <br> Historically, games are mostly written in C/C++, although Java probably<br> is used on Android these days and I'm pretty sure Python has excellent<= br> support as well. When developing for a PC, I wouldn't do it in Java,<br= > although there's nothing wrong with the language per se, it's just = not<br> so much used for making 'simple' games so it will be hard to find h= elp.<br> So I'd probably go with Python so I don't have to wait for things t= o<br> recompile as is the case with C/C++. Python is a fun and easy language<br> to try things out with.<br> <br> For 2d games, the bare minimum you need is a language and a graphics<br> library that allows you to draw sprites on the screen (so you don't hav= e<br> to manually update every pixel ;), and to get input from e.g. keyboard<br> and mouse. For C/C++, SDL is a good choice although it's a bit old, but= <br> it will be quite efficient. (It probably won't use much of your GPU,<br= > instead, efficient CPU instructions are used, which is fine because the<br> overhead involved with using a GPU will be larger than the speed gain<br> for 2d. Even slow CPUs can handle 2d graphics perfectly well.)<br> <br> Also, be prepared to get better at programming as you go, the best<br> school is to try things out, to look at other people's code and learn<b= r> from that.<br> <br> For 3d games, if you don't want to use a framework, you'll have to = learn<br> plain OpenGL so your graphics card is used to render stuff, but most<br> tutorials found on the web are incredibly outdated so the best way to go<br= > is read an experts book, but those are hard for a beginner. Also the way<br= > to set up an OpenGL context is platform dependent so you have to do the<br> work again for each platform. And you can't just call OpenGL from your<= br> game objects because that will lead to a lot of code duplication and<br> unnecessary coupling. So you'll have to write your own engine, which is= <br> a lot of work and so far from one's initial motive to make a fun and<br= > interesting game that it's really better to just use a decent engine. I= n<br> the community, C++ is the most popular choice, you'll get the best<br> performance but it's also a pain in the ass to wait for things to<br> compile each time you change something, and you have to manually write<br> header files which is unnessary work IMO, a machine should do this for<br> you. Java is better in this regard but there aren't a lot of people<br> using it for 3d games (unless maybe Android).<br> <br> Anyway it's been such a long time I did anything gamedev-related so<br> don't take my word on what languages & library to use. But I'm = pretty<br> confident about what I said about the 'basics' of 2d & 3d devel= opment.<br> <br> Good luck<br> Joeri<br> <br> <br> On 01/29/2016 08:31 AM, Peter Nabbefeld wrote:<br> ><br> > Hi,<br> ><br> > I've never developed a game before, and I wonder how to do complex= graphics<br> > output efficiently. Currently, I dont't want to use a framework, j= ust want<br> > to learn some basics.<br> ><br> > So far, it's about these two issues:<br> ><br> > 1. In 2D games, You often have objects behaving equally, e.g. a swarm = of<br> > birds, all flapping with their wings - sometimes even asynchronous. Fr= om my<br> > point of view there seem to be two possible solutions: (a) Using anima= ted<br> > GIFs (b) Using one object with several image layers, which could be dr= awn<br> > individually using Flyweight objects with timers/counters.<br> ><br> > 2. How to make a 3D view with e.g. animated animals, fog, etc.? I want= to<br> > use Java, Ogre4J seems to be inactice since 2009, JOGL seems rather ba= sic,<br> > so is there any good framework to draw animated 3D objects?<br> ><br> > Kind regards<br> > Peter<br> ><br> > _______________________________________________<br> > Sweng-Gamedev mailing list<br> > <a href=3D"mailto:[email protected]">Sweng-Gamedev= @lists.midnightryder.com</a><br> > <a href=3D"http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-m= idnightryder.com" rel=3D"noreferrer" target=3D"_blank">http://lists.midnigh= tryder.com/listinfo.cgi/sweng-gamedev-midnightryder.com</a><br> ><br> <br> <br> ------------------------------<br> <br> Subject: Digest Footer<br> <br> _______________________________________________<br> Sweng-Gamedev mailing list<br> <a href=3D"mailto:[email protected]">Sweng-Gamedev@list= s.midnightryder.com</a><br> <a href=3D"http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnig= htryder.com" rel=3D"noreferrer" target=3D"_blank">http://lists.midnightryde= r.com/listinfo.cgi/sweng-gamedev-midnightryder.com</a><br> <br> <br> ------------------------------<br> <br> End of Sweng-Gamedev Digest, Vol 76, Issue 1<br> ********************************************<br> </blockquote></div><br></div> --94eb2c07e590dddbe7052ab53481-- --===============1587803224== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Sweng-Gamedev mailing list [email protected] http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.com --===============1587803224==--