• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
loxagossnake

Is using an existing library, actually cheating?

25 posts in this topic

Alright, I am an aspiring game developer (mostly interested in the field of programming and general design/storywriting) currently learning C++. Actually, I do have a good hold of the language in topics ranging from basic procedural programming with standard output to some novice OOP. I have been learning programming since I was 15, but that was mostly algorithmic stuff and only now at my 21 years have I started a serious self-educational campaign, by buying a book and allocating -that word is growing on me- dedicated study and practice time. I was a gamer probably since when I was back in my mother's womb, but the desire to make something of my own has been eating my insides for a long time now. Oh, and I have some form of OCD-related perfectionism. You might need that information to answer.

 

Anyway, I managed to convey my enthusiasm to a coed at Physics school and good friend of mine, who is also serious about it - and a very talented artist. He too wants to learn programming, but mostly focuses on the digital art aspect of game development. We decided to form a small study group to practice together and learn, by setting small goals and achieving them to gain some experience. Since we both can handle the language well enough for beginners, we decided to try our hands at SDL. I find it a very good beginners' library with a relatively high level of abstraction, but that comes at a psychological cost for me. While I read every line of the tutorials and try to understand what each chuck of code really does, I'm not an expert in C++ and DO end up with questions, but I also use the code to my own devices (I'm currently working on a small graphical Rock-Paper-Scissors game). Long story short, I feel like I'm just dragging and dropping stuff. And that murders the side of me that loves technicalities.

 

I know this is all more of visit to the therapist than a game dev related question, but I do value your opinion very much. So, to distill this to a question instead of a philosophical text: do you think a beginner should first tame the language as best as they can and then even think of making a game, or is the practice of 'just doing it' and understanding along the way a better alternative to actually learning?

Thank you very much for your time.

Peace out, Jim.

 

0

Share this post


Link to post
Share on other sites

http://www.youtube.com/watch?v=APx2yFA0-B4

Be like water, my friend. Like water.

 

Damn. We have a guy at work who plays ping pong like Bruce Lee.

0

Share this post


Link to post
Share on other sites

AAA games are cobbled together with many existing libraries and middleware packages.  Many big game houses even use whole premade engines.

 

Building your own tech just to build your own tech is in many respects just intellectual masturbation: fun but unproductive.

 

Nobody is well-equipped to making their own core game tech until they have experience with using similar tech in a real game.  You could make a physics engine, for instance, but if you've never made a physics game you'll have close to no idea what your features your physics engine should have, which pieces need the most performance, what the API should look like, what weird corner cases need specialized solutions and which can be ignored, etc.

 

Even if your goal is to learn, learn by making a game.  Don't worry about the questions that come up; just finish the game.  Then make another game, working with lower-level tech, answering those old questions and coming up with new ones.  Then make another game.  Point being, *make games*.  You'll figure out the other stuff as you go.

2

Share this post


Link to post
Share on other sites

I never understood the reasoning. You'll always use something others made. If it's not libraries, it's the platform API or something else.

2

Share this post


Link to post
Share on other sites

Hi,

 

Cheating is in effect only if one acts in violation of license or has not permission to do so.

 

Using, with license, an already existing library or libraries is extremely common.  Some game developers might be surprised how much of the game engine source code or game source code for a popular AAA game comes from libraries created previous by other parties or the same game development company. 

0

Share this post


Link to post
Share on other sites

I understand the thought process behind feeling like you're maybe somehow cheating or not being as good a programmer by using a bunch of libraries, but you aren't, really. If anything as you learn more and more you'll begin to figure out where those libraries don't suit your needs and where starting from scratch may be better both for you and the productivity of your project.

 

I like to think of libraries as code that some other person or people put a bunch of work into, like you wouldn't make a car from scratch you'd at least buy the metal and some of the parts, the wheels from somewhere. If anything you should prefer to use library code where it would not be more work to implement it than roll your own.

 

With the exception of things like direct3d or opengl you might be a bit surprised how often you actually will just prefer to write your own stuff due to it being less restrictive and faster to implement, but of course that varies a lot depending on the thing.

 

Instead, reverse your thinking. If anything you should be considering all these other libraries to be tools, if you can't find the right tool, well that just means you make one, if you can, or if you find a tool that may fit the job, see if you can make use of it. After all, those people spent all that time writing that code, why let their work go to waste if it can suit your needs?

Edited by Satharis
1

Share this post


Link to post
Share on other sites

... like you wouldn't make a car from scratch you'd at least buy the metal and some of the parts, the wheels from somewhere.


You'll certainly not buy your metal (carbon fibre, aluminium) from 'somewhere' if you're a car company ... but i get what you're saying.
0

Share this post


Link to post
Share on other sites

I guess just choose libraries and technologies that you would be proud of using and would look better on your CV.

 

For example, I imagine a programmer would rather have a game written in OpenGL and C++ rather than RPGMaker2000.

Whereas an artist or game designer would have no problem with using the less "technical" option because their skill lies on the actual content of the game instead rather than the implementation.

 

Plus, after a while, a lot of libraries that you will use, you will start to understand how you could re-implement them. You will also realize that your time is better spent on other things ;)

 

I only suggest reimplementing something if you can either make it better, or if you cannot agree with the license it is originally under. For example, one of my side projects is to reimplement the core Unity 3D engine because although I like the API, I cannot accept the online-activation requirements of the original product and feel I can also make it better by providing a native C++ API instead of C#/UnityScript.

Edited by Karsten_
0

Share this post


Link to post
Share on other sites

Some great insight here. Everyone who answered here actually got what my concerns are. I want to be technically skilled in the point that I can tackle any problem and be self-sufficient. I don't intend to program the low-level stuff every time I make a game, I just want to have an idea about how it's done, and that's the point where I get frustrated with myself. I am going to use libraries, engines, and just focus on the game, but I would like to make my own mini-engine (not as powerful Unreal Engine) because i find joy in programming and would love to be recruited in a professional company. Reinventing the wheel might be counter-intuitive, but it might also be necessary learning progress, the same way a doctor will study anatomy hands-on instead of just using read material.

But as you said, I guess this is not cheating, it's just making my life easier! Thank you!

1

Share this post


Link to post
Share on other sites

Reinventing the wheel might be counter-intuitive, but it might also be necessary learning progress, the same way a doctor will study anatomy hands-on instead of just using read material.

But the doctor needs to know anatomy to be able to practice his profession at all. That's not the same with programming. You don't have to know the internals of all the libraries you use, although it can be helpful.

0

Share this post


Link to post
Share on other sites

Do you want to develop a game or an engine? At some point you will have to use a third party library like Direct X, so is it cheating? No, you relatively have no choice if you care about compatibility. Learning how to develop with third party engines is difficult enough and remember you are just one person, there's huge teams developing engines and one person can not get it to the same level of competition and as a learning example is relatively pointless until you know the basics of how a decent game goes together, if you want a challenge take a crack with Unity..

 

To get it up to a decent graphical standard, chuck the default shaders in the bin and start from scratch with shader lab. Work on adding some advanced features like sorting out the Post AA in DR, things like SMAA shaders. Dump all the post effects and try implementing DSSDO, pristine mostion blur, add other lacking things like a Voxel based realtime GI.. Build your game, sort out all the challenges in AI, controllers, physics, shadows and performance.. Create your own LOD / Culling system is also a good idea.. Come back in a fair few years when you're done. (That's if you have experience and the knowledge to know how to put it all together)..

 

There is so much to learn about using engines and adding to them, that alone can take many years to master. Never mind trying to build your own engine.! There just isn't enough time, I own a company with a team of 5 very experienced devs and we still don't have enough time and we certainly aren't trying to re-invent the wheel.

Edited by ShadowKGames
1

Share this post


Link to post
Share on other sites

The reason I don't think using an external library is cheating is for the same reason I don't believe buying a loaf of bread rather than making it from scratch is cheating. 

 

Again, you could make a hammer from scratch or you can buy one from the store, or borrow a neighbor's.

1

Share this post


Link to post
Share on other sites


I don't intend to program the low-level stuff every time I make a game, I just want to have an idea about how it's done, and that's the point where I get frustrated with myself. I am going to use libraries, engines, and just focus on the game, but I would like to make my own mini-engine (not as powerful Unreal Engine) because i find joy in programming and would love to be recruited in a professional company. Reinventing the wheel might be counter-intuitive, but it might also be necessary learning progress, the same way a doctor will study anatomy hands-on instead of just using read material.

 

Okay, that is perfectly fine and reasonable.  It seems that you envision a massive amount of coding far beyond the ability of one programmer - meaning that it typically demands a team - in order to make the usual game engine of professional caliber.  Game developers who have looked at it objectively realize that even the smaller game engines took a team at least several years to create it.  As long as you have a healthy awareness of your limitations with a comprehensive game engine, then you should be just fine with that plan - a good one at that. 

 

Remember not to spread yourself too thin.  I feel that it is better to excel in 2 or 3 major areas instead of dipping into many, only my view.

1

Share this post


Link to post
Share on other sites


There is so much to learn about using engines and adding to them, that alone can take many years to master. Never mind trying to build your own engine.! There just isn't enough time, I own a company with a team of 5 very experienced devs and we still don't have enough time and we certainly aren't trying to re-invent the wheel.

 

The team of which I belong has put many many many hours over the last several years mostly with existing libraries and industry standard workflow pipeline.  Guess what?  After years we are finally seeing the light at the end of the tunnel and a release of a game in the conceivable future!   ... and we are a very skilled TEAM working our... uh... [I]tails[/I] off, so a similar situation to yours in many ways.

2

Share this post


Link to post
Share on other sites

 


There is so much to learn about using engines and adding to them, that alone can take many years to master. Never mind trying to build your own engine.! There just isn't enough time, I own a company with a team of 5 very experienced devs and we still don't have enough time and we certainly aren't trying to re-invent the wheel.

 

The team of which I belong has put many many many hours over the last several years mostly with existing libraries and industry standard workflow pipeline.  Guess what?  After years we are finally seeing the light at the end of the tunnel and a release of a game in the conceivable future!   ... and we are a very skilled TEAM working our... uh... tails off, so a similar situation to yours in many ways.

 

 

Very much so, I don't think people realise what's involved until you're at least a fair way in .. (Obviously dependant on what you're trying to achieve), if it's a high fidelity modern 3D game then there's more than enough challenge for three years and a team of 5 just making it. Never mind anything else, sure we are trying to improve our feature set to stay competitive. But that's about it!.. We have a half built engine which we are releasing in 2015, for no more reason than continued revenue after we have finished our game.. 

 

I wish you the best of luck with your game and a happy new year.

2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0