• Advertisement

Search the Community

Showing results for tags 'Learning'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Categories

  • Audio
    • Music and Sound FX
  • Business
    • Business and Law
    • Career Development
    • Production and Management
  • Game Design
    • Game Design and Theory
    • Writing for Games
    • UX for Games
  • Industry
    • Interviews
    • Event Coverage
  • Programming
    • Artificial Intelligence
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Engines and Middleware
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
  • Archive

Categories

  • News

Categories

  • Audio
  • Visual Arts
  • Programming
  • Writing

Categories

  • GameDev Unboxed

Categories

  • Game Dev Loadout

Categories

  • Game Developers Conference
    • GDC 2017
  • Power-Up Digital Games Conference
    • PDGC I: Words of Wisdom
    • PDGC II: The Devs Strike Back
    • PDGC III: Syntax Error

Forums

  • Audio
    • Music and Sound FX
  • Business
    • Games Career Development
    • Production and Management
    • Games Business and Law
  • Game Design
    • Game Design and Theory
    • Writing for Games
  • Programming
    • Artificial Intelligence
    • Engines and Middleware
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
    • 2D and 3D Art
    • Critique and Feedback
  • Topical
    • Virtual and Augmented Reality
    • News
  • Community
    • GameDev Challenges
    • For Beginners
    • GDNet+ Member Forum
    • GDNet Lounge
    • GDNet Comments, Suggestions, and Ideas
    • Coding Horrors
    • Your Announcements
    • Hobby Project Classifieds
    • Indie Showcase
    • Article Writing
  • Affiliates
    • NeHe Productions
    • AngelCode
  • Workshops
    • C# Workshop
    • CPP Workshop
    • Freehand Drawing Workshop
    • Hands-On Interactive Game Development
    • SICP Workshop
    • XNA 4.0 Workshop
  • Archive
    • Topical
    • Affiliates
    • Contests
    • Technical

Calendars

  • Community Calendar
  • Games Industry Events
  • Game Jams

Blogs

There are no results to display.

There are no results to display.

Marker Groups

  • Members

Developers

Developers


Group


About Me


Website


Industry Role


Twitter


Github


Twitch


Steam

Found 89 results

  1. I'm having some difficulty understanding how data would flow or get inserted into a multi-threaded opengl renderer where there is a thread pool and a render thread and an update thread (possibly main). My understanding is that the threadpool will continually execute jobs, assemble these and when done send them off to be rendered where I can further sort these and achieve some cheap form of statelessness. I don't want anything overly complicated or too fine grained, fibers, job stealing etc. My end goal is to simply have my renderer isolated in its own thread and only concerned with drawing and swapping buffers. My questions are: 1. At what point in this pipeline are resources created? Say I have a class CCommandList { void SetVertexBuffer(...); void SetIndexBuffer(...); void SetVertexShader(...); void SetPixelShader(...); } borrowed from an existing post here. I would need to generate a VAO at some point and call glGenBuffers etc especially if I start with an empty scene. If my context lives on another thread, how do I call these commands if the command list is only supposed to be a collection of state and what command to use. I don't think that the render thread should do this and somehow add a task to the queue or am I wrong? Or could I do some variation where I do the loading in a thread with shared context and from there generate a command that has the handle to the resources needed. 2. How do I know all my jobs are done. I'm working with C++, is this as simple as knowing how many objects there are in the scene, for every task that gets added increment a counter and when it matches aforementioned count I signal the renderer that the command list is ready? I was thinking a condition_variable or something would suffice to alert the renderthread that work is ready. 3. Does all work come from a singular queue that the thread pool constantly cycles over? With the notion of jobs, we are basically sending the same work repeatedly right? Do all jobs need to be added to a single persistent queue to be submitted over and over again? 4. Are resources destroyed with commands? Likewise with initializing and assuming #3 is correct, removing an item from the scene would mean removing it from the job queue, no? Would I need to send a onetime command to the renderer to cleanup?
  2. So I wrote a programming language called C-Lesh to program games for my game maker Platformisis. It is a scripting language which tiles into the JavaScript game engine via a memory mapper using memory mapped I/O. Currently, I am porting the language as a standalone interpreter to be able to run on the PC and possibly other devices excluding the phone. The interpreter is being written in C++ so for those of you who are C++ fans you can see the different components implemented. Some background of the language and how to program in C-Lesh can be found here: http://www.codeloader.net/readme.html As I program this thing I will post code from different components and explain.
  3. Good Evening, I want to make a 2D game which involves displaying some debug information. Especially for collision, enemy sights and so on ... First of I was thinking about all those shapes which I need will need for debugging purposes: circles, rectangles, lines, polygons. I am really stucked right now because of the fundamental question: Where do I store my vertices positions for each line (object)? Currently I am not using a model matrix because I am using orthographic projection and set the final position within the VBO. That means that if I add a new line I would have to expand the "points" array and re-upload (recall glBufferData) it every time. The other method would be to use a model matrix and a fixed vbo for a line but it would be also messy to exactly create a line from (0,0) to (100,20) calculating the rotation and scale to make it fit. If I proceed with option 1 "updating the array each frame" I was thinking of having 4 draw calls every frame for the lines vao, polygons vao and so on. In addition to that I am planning to use some sort of ECS based architecture. So the other question would be: Should I treat those debug objects as entities/components? For me it would make sense to treat them as entities but that's creates a new issue with the previous array approach because it would have for example a transform and render component. A special render component for debug objects (no texture etc) ... For me the transform component is also just a matrix but how would I then define a line? Treating them as components would'nt be a good idea in my eyes because then I would always need an entity. Well entity is just an id !? So maybe its a component? Regards, LifeArtist
  4. This coming week, my game design club will (finally) start working on Digital Games. Last week we made paper concepts. Most of us have ZERO Game engine experience, this is going to be thrilling!!! I've decided to bring everyone into a 2D engine called Defold, which outputs Cross-platform (Mostly HTML5) games with LUA Scripting and joint animations. That's great Timm, but who's going to answer their questions? They are, of course! I have never used Defold, but in the Game Dev industry, they will routinely have to self-teach to keep up Rely on teammates to solve problems that nobody really knows the answer to Rarely if ever start a game from square zero, they'll always build on others' work. To that end, rather than making a game from zero (/*programmers NEVER start at square one*/), we are going to mod a public platformer template. Hopefully, we can divide into some kind of logical teams based on specialty and ability. Good groups are small enough to enable everyone's input, but big enough to explode productivity. My Experience: Modding is better than square zero for learning game development: THOUGHT PROCESS: Since every large company has their own proprietary engine, learning how to learn an unfamiliar engine is invaluable WORKFLOW: Game Companies will teach you by letting you dive into existing code, which is exactly what modders do SPECIALIZATION: You can focus on your specialty (programming, art, music, level design) instead of trying to juggle ALL OF THEM so that you can get a job in ONE OF THEM. SCALE: You get experience in a HUGE PROJECT that you may never fully understand rather than a tiny demo RESULTS: You can make something awesome (though not quite as accessible) in a shorter time since most of the heavy lifting is done PLAYERS: You already have a huge player base and a known target audience if you mod a popular game. this looks great on a resume FEEDBACK: If you do have lots of players, you have lots of complaints. Learn to deal with it, noobs. Today, I got to see an eight-year old open his VERY FIRST Raspberry Pi. I taught him to install NOOBS and use it, and he's really excited to change the world (For one, he won't be bored at home anymore). I showed him the built-in python games and how to edit their code (to make yourself faster, bigger, etc.). Even though I can code faster than I can make bad jokes, I would never have been able to make a game with him... but just editing a couple lines of code in an existing game brought about some super-fun results. So basically, I showed him how to mod as a gateway* into programming *Not a Gateway 2000, he's too young for those
  5. Learning Level Design

    I want to start learning Level Design, so what are the main topics I have to learn about specifically? since I learn on my own, so I don't want to drop something that could be important, and if there are some suggested books or courses to start from.
  6. Trial Of Courage

    Hello! It seems like things are finally moving along for me. I finally started a company after saving some money! I ran into road bumps in my life but I finally got back up again. My Small Independent Game Studio Company: So I started a small company called Dark Star Ship Studio and I am going to announce a game sometime in March. I am a bit nervous/scared that I will fail. However, if I can be careful about my decisions, maybe it can work out. I am trying to remain positive and realistic on making a game with a very simple gameplay. Also, I found a good 2D Pixel Artist working with me on the art side. Ignis Game Engine: I've been working on my game engine for the past two and a half years. I feel very satisfied with my proficiency in C/C++ and Visual Studios 2013. I was able to make DLL plugins for testing the graphics/gameplay in my game engine environment; in addition, I am trying to create my own procedural generated world map using the perlin noise algorithm (I might use a library instead if its taking too long). Hopefully, my 3D implementation will be completed once I can release a small 2D game. I know some people would suggest that I should use Unity, Unreal or GameMaker to make a game. Unfortunately, I prefer to start from scratch so that I can learn and challenge myself. I've been using Unity for almost two years and it is a great game engine but I am having a lot of fun trying to create my own game engine (I guess I like to go deeper to understand game engines???). Final Words: I hope I can triumph over these challenges that are coming my way. I can only hope that I don't burn out in the process since I do work. Wish me luck, Game Developers! I know I am going to need it.
  7. I am looking to learn C++ in Unreal so have commenced the tutorial '3rd Person Battery Collector Power Up Game'. It is on the 3rd video of the series that I have come across an issue. In the screenshot I have attached labelled 'picture 1', this is the tutors class which is correct. My screenshot 'picture 2' is where I see some issues. - my #include is in a grey colour font. It should be red right? - I also do not have a #include "BatteryCollector.h" in my class also. In the tutors example this line of code is present. Can anyone help me with why I have these issues. I am using Visual Studio 2015 as well. I thought would using VS'17 help so I installed this today. I have yet to try this out with that though but then I thought. Shouldn't it work fine on VS'15 anyway, would using VS'17 make much difference at all. I am very keen to work through this tutorial today so if the forum might be able to help me I would be so so grateful. Thank you.
  8. Greetings to you all, I intend to build a 3D engine in C++ (I'm experienced with C++) targeting PC (OpenGL for sure and maybe Direct3D too), mostly as a hobby and to learn how it works at a low level. I've done some research and come up with these two books: 3d math primer for Graphics and Game Development (2nd edition) Game Engine Architecture (2nd edition), By Jason Gregory Also at first I want to use an existing physics engine like physx or bullet and then maybe go for developing my own one later after I put the rest of my engine together. Now since for sure there are a lot of experienced people here I want to ask you which other books/resources do you recommend I study to help me implement my engine.
  9. Hello. First, a bit of context. I'm having my first contact with the entity-component-system architectural pattern in the simple shoot'em up game I'm writing. I appreciate the flexibility and decoupling the pattern promotes. So far, I believe I have the basics down. I have already defined a handful of components and systems which operate based on them. I'm now looking to add a cannon to the player's spaceship. I defined a Cannon component and attached it to the player entity (IOW, I "tagged" the player entity as having that capability). That component has a single member which indicates the cannon's rate of fire. Then I defined a PlayerWeapon system that is responsible for actually firing. At the moment, all it's doing is write a message to the console. Because no actual rate control is implemented yet, each press of the assigned fire button causes multiple messages to be output in quick succession. I would like to implement a sort of debouncing mechanism to have the fire rate respect what the cannon component dictates, e.g. fire once every 500ms. Now for the actual question on ECS modeling. Suppose I'd use a simple elapsed time accumulator to decide when the next shot should be allowed to fire. Where would that information be stored? Should the system be responsible for managing that type of information? Or should systems be considered completely stateless? In that case, the accumulator would be stored in the cannon component, along with the existing fire rate. Would you kindly share some advice on how to handle a situation like the above? As stated, I'm new to ECS and would like to make sure I implement the concepts as properly as possible. Thank you.
  10. Hi All, Im running through some video tutorials in C# as im newbie. One thing im doing is adding lots of comments to the code so I can go back and revisit the code later and know exacly what is going on. What id also like to do is store the code snippets in an easy to find place so I can reuse/analyse them later. I kind of just want a long scrolling page with all my code and commented snippets on that I can use as reference later which also maintains the snippet format and is of course searchable. There seems to be a few apps as well as Git Hub etc to store code snippets but im just wondering which one from a newbie perspective works best for you and why? Kind Regards, John
  11. Hi, I am new to programming, and would like to make a baseball sim engine. I was wondering what software/language I should use to create this? Any other help/tips/advice is very much appreciated. Thanks in advance.
  12. Designing Player World Interaction in Unreal Engine 4

    Originally posted on Troll Purse development blog. Unreal Engine 4 is an awesome game engine and the Editor is just as good. There are a lot of built in tools for a game (especially shooters) and some excellent tutorials out there for it. So, here is one more. Today the topic to discuss is different methods to program player world interaction in Unreal Engine 4 in C++. While the context is specific to UE4, it can also easily translate to any game with a similar architecture. Interaction via Overlaps By and far, the most common tutorials for player-world interaction is to use Trigger Volumes or Trigger Actors. This makes sense, it is a decoupled way to set up interaction and leverages most of the work using classes already provided by the engine. Here is a simple example where the overlap code is used to interact with the player: Header // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "InteractiveActor.generated.h" UCLASS() class GAME_API InteractiveActor : public AActor { GENERATED_BODY() public: // Sets default values for this actor's properties InteractiveActor(); virtual void BeginPlay() override; protected: UFUNCTION() virtual void OnInteractionTriggerBeginOverlap(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult); UFUNCTION() virtual void OnInteractionTriggerEndOverlap(UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex); UFUNCTION() virtual void OnPlayerInputActionReceived(); UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Interaction) class UBoxComponent* InteractionTrigger; } This is a small header file for a simple base Actor class that can handle overlap events and a single input action. From here, one can start building up the various entities within a game that will respond to player input. For this to work, the player pawn or character will have to overlap with the InteractionTrigger component. This will then put the InteractiveActor into the input stack for that specific player. The player will then trigger the input action (via a keyboard key press for example), and then the code in OnPlayerInputActionReceived will execute. Here is a layout of the executing code. Source // Fill out your copyright notice in the Description page of Project Settings. #include "InteractiveActor.h" #include "Components/BoxComponent.h" // Sets default values AInteractiveActor::AInteractiveActor() { PrimaryActorTick.bCanEverTick = true; RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("Root")); RootComponent->SetMobility(EComponentMobility::Static); InteractionTrigger = CreateDefaultSubobject<UBoxComponent>(TEXT("Interaction Trigger")); InteractionTrigger->InitBoxExtent(FVector(128, 128, 128)); InteractionTrigger->SetMobility(EComponentMobility::Static); InteractionTrigger->OnComponentBeginOverlap.AddUniqueDynamic(this, &ABTPEquipment::OnInteractionProxyBeginOverlap); InteractionTrigger->OnComponentEndOverlap.AddUniqueDynamic(this, &ABTPEquipment::OnInteractionProxyEndOverlap); InteractionTrigger->SetupAttachment(RootComponent); } void AInteractiveActor::BeginPlay() { if(InputComponent == nullptr) { InputComponent = ConstructObject<UInputComponent>(UInputComponent::StaticClass(), this, "Input Component"); InputComponent->bBlockInput = bBlockInput; } InputComponent->BindAction("Interact", EInputEvent::IE_Pressed, this, &AInteractiveActor::OnPlayerInputActionReceived); } void AInteractiveActor::OnPlayerInputActionReceived() { //this is where logic for the actor when it receives input will be execute. You could add something as simple as a log message to test it out. } void AInteractiveActor::OnInteractionProxyBeginOverlap(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) { if (OtherActor) { AController* Controller = OtherActor->GetController(); if(Controller) { APlayerController* PC = Cast<APlayerController>(Controller); if(PC) { EnableInput(PC); } } } } void AInteractiveActor::OnInteractionProxyEndOverlap(UPrimitiveComponent* OverlappedComp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex) { if (OtherActor) { AController* Controller = OtherActor->GetController(); if(Controller) { APlayerController* PC = Cast<APlayerController>(Controller); if(PC) { DisableInput(PC); } } } } Pros and Cons The positives of the collision volume approach is the ease at which the code is implemented and the strong decoupling from the rest of the game logic. The negatives to this approach is that interaction becomes broad when considering the game space as well as the introduction to a new interactive volume for each interactive within the scene. Interaction via Raytrace Another popular method is to use the look at viewpoint of the player to ray trace for any interactive world items for the player to interact with. This method usually relies on inheritance for handling player interaction within the interactive object class. This method eliminates the need for another collision volume for item usage and allows for more precise interaction targeting. Source AInteractiveActor.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "InteractiveActor.generated.h" UCLASS() class GAME_API AInteractiveActor : public AActor { GENERATED_BODY() public: virtual OnReceiveInteraction(class APlayerController* PC); } AMyPlayerController.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "GameFramework/PlayerController.h" #include "AMyPlayerController.generated.h" UCLASS() class GAME_API AMyPlayerController : public APlayerController { GENERATED_BODY() AMyPlayerController(); public: virtual void SetupInputComponent() override; float MaxRayTraceDistance; private: AInteractiveActor* GetInteractiveByCast(); void OnCastInput(); } These header files define the functions minimally needed to setup raycast interaction. Also note that there are two files here as two classes would need modification to support input. This is more work that the first method shown that uses trigger volumes. However, all input binding is now constrained to the single ACharacter class or - if you designed it differently - the APlayerController class. Here, the latter was used. The logic flow is straight forward. A player can point the center of the screen towards an object (Ideally a HUD crosshair aids in the coordination) and press the desired input button bound to Interact. From here, the function OnCastInput() is executed. It will invoke GetInteractiveByCast() returning either the first camera ray cast collision or nullptr if there are no collisions. Finally, the AInteractiveActor::OnReceiveInteraction(APlayerController*) function is invoked. That final function is where inherited classes will implement interaction specific code. The simple execution of the code is as follows in the class definitions. AInteractiveActor.cpp void AInteractiveActor::OnReceiveInteraction(APlayerController* PC) { //nothing in the base class (unless there is logic ALL interactive actors will execute, such as cosmetics (i.e. sounds, particle effects, etc.)) } AMyPlayerController.cpp AMyPlayerController::AMyPlayerController() { MaxRayTraceDistance = 1000.0f; } AMyPlayerController::SetupInputComponent() { Super::SetupInputComponent(); InputComponent->BindAction("Interact", EInputEvent::IE_Pressed, this, &AInteractiveActor::OnCastInput); } void AMyPlayerController::OnCastInput() { AInteractiveActor* Interactive = GetInteractiveByCast(); if(Interactive != nullptr) { Interactive->OnReceiveInteraction(this); } else { return; } } AInteractiveActor* AMyPlayerController::GetInteractiveByCast() { FVector CameraLocation; FRotator CameraRotation; GetPlayerViewPoint(CameraLocation, CameraRotation); FVector TraceEnd = CameraLocation + (CameraRotation.Vector() * MaxRayTraceDistance); FCollisionQueryParams TraceParams(TEXT("RayTrace"), true, GetPawn()); TraceParams.bTraceAsyncScene = true; FHitResult Hit(ForceInit); GetWorld()->LineTraceSingleByChannel(Hit, CameraLocation, TraceEnd, ECC_Visibility, TraceParams); AActor* HitActor = Hit.GetActor(); if(HitActor != nullptr) { return Cast<AInteractiveActor>(HitActor); } else { return nullptr; } } Pros and Cons One pro for this method is the control of input stays in the player controller and implementation of input actions is still owned by the Actor that receives the input. Some cons are that the interaction can be fired as many times as a player clicks and does not repeatedly detect interactive state without a refactor using a Tick function override. Conclusion There are many methods to player-world interaction within a game world. In regards to creating Actors within Unreal Engine 4 that allow for player interaction, two of these potential methods are collision volume overlaps and ray tracing from the player controller. There are several other methods discussed out there that could also be used. Hopefully, the two implementations presented help you decide on how to go about player-world interaction within your game. Cheers! Originally posted on Troll Purse development blog.
  13. Hi everyone, my name is Gabriel and this is my first post here. I graduated from college over three years ago with a degree in Physics and now I want to start a career as a gameplay programmer. Besides a single C++ programming class in college I have not had any prior experience programming. What I have done to learn until now is to use SFML to recreate Arkanoid and Space Invaders. My question is, am I on the right track if I just continue creating games from scratch using libraries such as SFML or would I benefit more if I move on to using an engine such as Unreal or Unity? Also, of how much help (if any) would my degree be when trying to join a team? I live in San Diego, CA if that matters at all. I do appreciate in advance any guidance anyone could offer me.
  14. Hello all! I'm new to the forum and I'm glad to have found a lot of interesting discussions/topics! Quick intro, I'm currently in school for Independent (indie) Video Game Design, on my last semester and the job search will start in less than 4 months (I'm nervous to say the least). I've learned a lot in school and I'm proud to say that I can make a decent game independently and market it properly. The problem is that I can do all of this, but I don't specialise in anything specific. I'm pretty good at modeling (but definitely not a pro, can only make simple clean models), okay at scripting, design isn't my strength but a big interest and I'm pretty okay at UI/UX but definitely not proficient at all. I can't say I specialise in any of the above fields and I know that specialising in something is important in order to have a consistent portfolio and finding a job. Should I focus on specialising on a specific field in the next 4 months (practice 24/7) in order to sell myself to employers or should I practice everything and sell myself as a Jack-of-all-trades? I really want to get a designer job as I enjoy writing GDDs and discussing design during Pre-Production but my Rational Design knowledge is weak and I've never been considered a designer in all my previous projects (always was responsible for art or UI).
  15. Beginning with game development

    Hi everyone, my name's Giusto and this is my first post in this forum First of all sorry for my english but i'm from italy so i might go wrong in some words I would like to start programming games, like a lot of people, but i would like to program them litterly and not using something like Unity even if i know it would help a lot I'm a student, i'll take the diploma in 2 year, i'm studing to program at school, i know basic c++, java and javascript but i would learn more about game programming So my question is simple, which language should i learn? I know that C++ is used a lot as well as java Where could i learn some function or things based on games I listen to all hint that you give me, thank you for reading all this, this means a lot for me
  16. tldr: This is a community project to help aspiring solo game developers and designers, through small assignment projects, gain the knowledge and skills required to make a video game. If you are interested in contributing to the discussion, head to https://github.com/Neoflash1979/learn-gamedev/issues. The problem with tutorials With the number of great courses, tutorials and other learning resources found online, more and more people teach themselves programming. Many will do so with the intent of making video games. But there is much more to designing and making video games than mere programming. Animation, anthropology, architecture, brainstorming, business, cinematography, communication, creative writing, economics, engineering, games, history, management, mathematics, music, psychology, public speaking, sound design, technical writing, visual arts AND programming; knowledge and skills in these areas can be invaluable to a game designer/developer. Thankfully, there is an abundance of resources available online that can help one acquire knowledge and skills in each of these areas individually. But for the aspiring solo dev, it’s not just a matter of acquiring knowledge in these areas, it’s also important to understand how to use all of that together, for the express purpose of making a video game. There is a plethora of tutorials available online that will guide you from A to Z on how to make such or such a game. In the process you will acquire a certain amount of technical knowledge, and that’s great. But you won’t really learn about the process of designing and developing a video game. The same can be said about the numerous lists that tells you the type of games you should be making, and in what order, in order to learn gaming making; first you make a Breakout clone, then you make a Tetris clone, then you make a Mario clone, then you make Wolfenstein 3D clone, etc. Again, this kind of advice will help you progress in certain technical skills, but you won’t have learned all that much about the process of designing and developing a video game. Making a video game is about making decisions. When you follow tutorials, or clone an existing game, the decisions are largely already made for you. To really learn to design and develop video games, you have to build them, from scratch, on your own (or with a friend or two). All aspiring game dev/designer realizes this at some point and so sets out to build their first game. Their REAL first game. One where THEY have to decide, design and build EVERYTHING. And that’s where everything goes to sh*t. Making video games is hard You see, making a video game is hard. I mean, REALLY making a game, from scratch. It is a daunting task and it can be overwhelming. So naturally, you turn to Google, and you learn expressions like “scope”, “minimum viable product”, “rapid prototyping”, “find the fun” and “start small”. All those two minutes videos and articles are very enlightening but in the end, it’s still very hard to understand how to keep a small scope when you have never REALLY made a game and you are invariably imbued with grand game-making aspirations. How small is small? What aspects of game making should I focus on? How many hours should I invest in making that first game? Those are just a few of the questions that an aspiring game dev/designer might have. Despite all the great resources out there for learning all the bits and pieces involved in designing and making a game, there is a complete void in terms of helping aspiring dev learning to put it all together in a progressive, manageable, way. What we, aspiring self-taught devs, are missing is a guide. Something that will guide us, progressively, on our game making path. Something that will help us focus on the right things, at the right time, while we progress on our learning journey – “yeah, maybe you should leave researching the use of Octrees in collision avoidance AI for later and first focus on figuring out how to make that white ball go from point A to point B, Phil”. What we really need are assignments, with deadlines and requirements. Oddly enough, if your Google “game making assignments” you will find a few examples of exactly what we need, but only for board games, or children Phys Ed games. Here is an example: http://www.cobblearning.net/kentblog/files/2015/11/Project-27w5me1.pdf This is exactly what we need. Exercises that help us focus our creativity and give us a set of guidelines, requirements and constraints. Allowing us to make MOST or at least MANY of the creative and technical decisions that go into making a game, while at the same time ensuring that we keep the scope small and that we focus on a few new concepts/skills. Every assignment would, gradually, expose the learner to new and more advanced concepts/skills, expanding the scope a little, culminating in a final, 2 to 6-month-long assignment where the learner is really making a game he can be proud of and call his own. Alas, this resource does not exist. At least I have found it. So, let’s do something about it. I propose that we create an open-source project on Github and create a “Game development and design self-education” curriculum. Basically, a list of game making assignments that would guide an aspiring game dev through the process of learning the required skills, methods and processes required to put a game together. The onus would be on the aspiring game dev to find the resources needed to learn the creative and technical skills required to meet each assignment’s requirements. If you are interested in contributing to the discussion, head to https://github.com/Neoflash1979/learn-gamedev/issues.
  17. General That Is Right, Discord Update Automation in AWS

    Originally posted on Troll Purse Dev Blog Recently, Troll Purse setup a public invite for the Troll Purse Discord Server. And, as with all things, we decided to test out using Discord Webhooks to push updates to our members in realtime. This is by far the most effective realtime pushing we have conceived yet. It was so easy, sharing it will be just as easy. Using A Simple Webhook Usually, the pattern at Troll Purse to push to third party accounts follows this pattern: Sign up for the third party account Register an application Find an API wrapper library for said third party account Publish an AWS Lambda Post about it! This time, we decided to skip step 3. For the most part, the developers at Troll Purse recognized that this push would require very little data transformation and authentication routines. In fact, all of the work was done in one POST request to the Troll Purse Discord Server. The Code, Kind Human public async Task<string> FunctionHandler(SNSEvent input, ILambdaContext context) { try { var messageJSONString = input.Records[0]?.Sns.Message; context?.Logger.LogLine($"Received({input.Records[0]?.Sns.MessageId}): {messageJSONString}"); if (messageJSONString != null) { var messageContent = JsonConvert.DeserializeObject<BlogContentUpdated>(messageJSONString); using (var httpClient = new HttpClient()) { string payload = $"{"content":"{messageContent.PostTitle}. {messageContent.ContentSnippet}... {messageContent.PostLink}"}"; var response = await httpClient.PostAsync(Environment.GetEnvironmentVariable("discord_webhook"), new StringContent(payloadEncoding.UTF8, "application/json")); return response.StatusCode.ToString(); } } else { return null; } } catch (Exception e) { context?.Logger.LogLine("Unable to Discord the SNS message"); context?.Logger.LogLine(e.Message); context?.Logger.LogLine(e.StackTrace); return null; } } Notes: BlogContentUpdated is code defined in an external Troll Purse binary. WE USE SECURE ENVIRONMENT VARIABLES!!! THIS IS IMPORTANT!!!! (As opposed to plaintext credentials in our source code.) The Joy of Lambda All of these features that Troll Purse has blogged about are done within a few hours. This is easily aided by the idea of serverless programming. There is no overhead of provisioning servers, testing different server environments, and configuring a network for these functions. It removes a lot of network infrastructure and enables Troll Purse developers to create fast, reactive, internal services. Please, if you spend too much time configuring and setting up, try using AWS Lambda to speed up development time. Would You Look At That In two lines, without a library or API wrapper, our developers can now push blog updates to our Discord server. This is a nice quick feature that we plan on integrating in our automated build environment to push updates about new versions released to the public. Enjoy! Originally posted on Troll Purse Dev Blog
  18. Learning How Troll Purse Easily Setup Forums in AWS

    How Troll Purse Easily Setup Forums in AWS Originally Posted on Troll Purse Dev Blog After our migration to AWS, Troll Purse removed the old forums running in Digital Ocean. Troll Purse decided to start with a clean slate. Which was easy - as nobody registered (no migrations needed, just nuclear destruction of the service)! A curse that turned into a blessing. Troll Purse can now scale the forums based on usage and save some money on infrastructure. This will allow us to put more effort into our games! How To Troll Purse decided to share with you how to set up this type of environment. S3 Configuration For hosting content uploaded by Troll Purse forum users, S3 was used to store images. Since NodeBB has a nice S3 upload plugin, there was little to no work other than configuration needed to enable the feature. S3 on the otherhand, required configuration to allow access from http://forums.trollpurse.com. However, it also needed to allow access to the real DNS hostname (according to AWS) for the actual server to update data. This meant a custom S3 CORS policy and S3 Bucket Policy. Finally, the role our server would assume needed to have full access to S3 buckets. Further, Troll Purse could restrict access by bucket name. Below are examples Troll Purse Built up to help restrict access to an S3 bucket. Note, AWS will still mark it as public. However, there was a configuration that allowed public GET without S3 being marked public. S3 Bucket Policy { "Version": "2012-10-17", "Id": "website access bucket Policy", "Statement": [ { "Sid": "Allow get requests originating from your domain.", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your-bucket-name/*", "Condition": { "StringLike": { "aws:Referer": "http://your-domain-name/*" } } }, { "Sid": "Deny get requests not originating from your domain.", "Effect": "Deny", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your-bucket-name/*", "Condition": { "StringNotLike": { "aws:Referer": "http://your-domain-name/*" } } }, { "Sid": "Create, Update, Delete for ARN", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::xxxxxxxxx:role/your-role-used-for-s3-access-and-management" }, "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::your-bucket-name/*" } ] } S3 CORS Policy <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>your-domain-name</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <MaxAgeSeconds>3000</MaxAgeSeconds> <AllowedHeader>Authorization</AllowedHeader> </CORSRule> </CORSConfiguration> Redis Configuration For Redis, Troll Purse used default configurations provided by AWS ElastiCache. This cache was put in a private subnet, accessible only to services in the Troll Purse VPC as configured. Currently, Troll Purse is using the free tier cache.t2.micro instance. Other than that, the Launch Configuration just needs a reference to the public DNS of the cache. VPC Configuration AWS VPC is great for creating logically segregated services for an environment. Subnets Following normal AWS architecture diagrams (shown below), Troll Purse created two subnets. There is the public subnet which will host the forum instances and the load balancer. There is then the private subnet which has no internet access. The private subnet contains the forum’s Redis service. Security Groups Troll Purse setup two different Security Groups. One for services bound to the public subnet and another for services bound to the private subnet. The only real different is how the inboud internet traffic is configured. The public security group allows inbound internet traffic. The private security group does not allow inbound internet traffic. This is further strengthened by Route Tables Route Tables The Route Tables used were configured according to the afore mentioned diagram. There were two Route Tables. The first route table was created for the public subnet. This allows internet traffic in via the Internet Gateway bound to the public subnet. The second route table created was the private subnet. This Route Table did not receive configuration for public internet access. IAM Role Configuration To get our environment up using NodeBB with Redis, Troll Purse created a new IAM Role for EC2 instances meant to host NodeBB. This role did not need a lot of thought put into it. All it needed was full S3 Access, and full Redis access. From here Troll Purse uses two more AWS services to provide data storage for the forums. Auto-Scaling Configuration Using our existing configuration, Troll Purse created an Auto Scaling Configuration using the base Amazon Linux AMI on a t2.micro instance. We don’t do anything else special. Troll Purse set the default configurations of Min instances to 1 and Max instances to 1. This ensures the service will always be running one instance, whether it fails or not. Note: Make sure to use ELB Health Checks - this will verify the web service is actually running on the instance Launch Configuration User Data Here is a wonderful gist provided by one of our AWESOME developers (Disclaimer: I authored this post - totally biased opinion) used as a Launch Configuration. Soon Troll Purse will take away half of that setup and make an image for EC2 to use. Then only NodeBB configuration and launch information is required for the Launch Configuration. EC2 Configuration There wasn’t anything to do for EC2 since all of our instance information was setup using Auto Scaling. Conclusion Setting up an environment in AWS for our forums took about two days of building and verifying. These changes required no code whatsoever. All Troll Purse had to do was select from a large suite of services to support desired results. So, now that they exsist, join up on the forums! Originally Posted on Troll Purse Dev Blog
  19. General Why Troll Purse Migrated to AWS

    Originally posted on Troll Purse Dev Blog Recently, Troll Purse made the decision to migrate from the cloud in Digital Ocean to Amazon Web Services for cloud and website services. There were several reasons behind this critical decision. These reasons are infrastructure, flexibility, and future plans. Infrastructure Digital Ocean has a nice setup. They have a slick looking User Interface, easy to find services, and awesome community driven documentation. Troll Purse quite liked Digital Ocean if not for a few issues regarding infrastructure in comparison to Amazon Web Services (AWS). Cost Digital Ocean was not overly expensive. However, their base monthly rate ($5 / month + $1 / month for backups), was still higher than hosting a static website on AWS. This is because, to host a static website and blog, Digital Ocean achieves this via Droplets. This does not scale the wallet very well - especially if traffic started to boom. Digital Ocean only offers referral bonuses. So, if we were famous - we could potentially host everything for free. Big gamble at this moment. AWS charges $0.50 / month forRoute 53 (DNS Name Servers) and a variable cost for S3 storage of our static website content. Based on traffic trends, the variable costs of AWS were a huge benefit. Finally, it helps that AWS offers a full year of various resources for free. Continuous Delivery Digital Ocean had a lot of APIs for Continous Delivery of our website, but it didn't offer a full suite of solutions for proper Developer Operations. Digital Ocean would require a lot of extra Developer Operations overhead writing build and deployment scripts using their APIs. AWS integrates with Bitbucket and Github - two services we use for source control. AWS also offers managed build and deployment services that Troll Purse will be leveraging. Architecture Digital Ocean is limited to Droplets. This pales in comparison to AWS's robust EC2, ECS, or serverless services. In AWS, Troll Purse can decouple services and code for various solutions. To do the same distributed computing in Digital Ocean as Troll Purse is enabled to do in AWS would require a significant investment in architecting infrastructure. In AWS, this is vastly done for Troll Purse - once an architecture is designed, only configuration of the services need to be done. With Digital Ocean, Troll Purse had to setup an Nginx server for serving static website content. It did not scale well (without more invested time in building an architecture and more configurations) as all content was stored on that server. In AWS, Troll Purse can distribute web content using Cloud Front for CDN and server static content from S3. Totally serverless and decoupled from the blogging platform and the forum servers (the latter is yet to be deployed). Flexibility In Digital Ocean it was difficult to manage servers and logical groupings of services. AWS offers tagging of resources and services to help better monitor health, costs, and grouping of application services built and provided by Troll Purse. Unfortunately, Digital Ocean does not offer the robust services and infrastructure needed for a company built with development speed in mind. A lot of services need to be hand crafted, as well as servers. This slows development efforts and makes iterative development a nightmare. Using small, simple services each with a specific purpose in mind, Troll Purse is better able to develop an experiment based on the offerings provided by AWS. Digital Ocean only provides five real services, Compute, Object Storage, Block Storage, Networking, and Monitoring. Each of these are small in comparison to comparable AWS services such as Compute Services (ECS or EC2), Storage, Virtual Private Cloud (Networking), and Cloud Watch (Monitoring). In AWS each of those services / categories work with each other or are umbrellas to a myriad of other flexible offerings. Finally, AWS has way more to offer - just take a look! Future Plans After much discussion, Troll Purse concluded our future development needs will be implemented faster and scale naturally in AWS over Digital Ocean. While we enjoyed our brief experience with Digital Ocean, we are excited to build using AWS as our cloud and hosting provider. While we do not plan to build anything with Lumberyard now, we have some exciting projects that will easily leverage the power of AWS. Such projects are backend analytics of our games using Amazon API Gateway, Lambda, and data services. We also hope to build an integrated environment so that each game shares common interfaces into our development and publishing environment. Conclusion While this blog post is mostly given as an explanation of our tactical decision to migrate to AWS, Troll Purse hopes it will serve as guidance to future developers facing the same decisions. We found that AWS provides a lot for small and large companies when it comes to infrastructure, flexibility, and accommodating future plans. Originally posted on Troll Purse Dev Blog
  20. So, I asked for advice on game engines. I know this is asked here ALL the time. I am reading the posts. However, there are so many engines, how does one choose? They all have their own pros and cons depending on one's needs, budget, and genre of game. Is the idea just to choose one and learn from there? Here is a list that I compiled. GameSalad App Game Kit Corona Godot Buildbox Construct 2 and 3 Clickteam Fusion 2.5 RPG Maker Stencyl GameMaker Studio 2 GameGuru Monogame/XNA CopperCube 5 Torque Leadwerks Unity ChilliWorks Clickteam Fusion Cocos libGDX Trublenz V-Play Hello everyone, I am very new here and new to actually starting to develop games. I realize what I am embarking on is probably going to be many years in the making. It is not something I haven't considered before. I recall wanting to make my own game as a child when I read about a contest in Nintendo Power. The winner of this game was J. Scott Campbell who went on to draw for comic books. I think a lot of people who play games wax philosophic about what they would like to see in a game. But I digress. I want to start with a 2D game and I have been reading here and on other websites about the best engine/software to use for newbies who do not have a lot of programming experience. The issue is I read similar and conflicting information on websites, so I thought I would ask people who have used them. I know Game Maker Studio is popular, but I am not fond of the high price add-ons for export. I don't know if I am being picky or limiting myself. Unity seems to be an option but I am new to this so I certainly would need the Plus option rather than Pro; however, I read that Unity's 2D uses the 3D engine and that makes 2D game clunky, buggy, and bloated. Is this true? I don't know what perks the free version has. There are Defold and Godot as well as a bunch of other free development tools, but I am unsure how many require a lot of programming knowledge. I hear App Game Kit is a bit program heavy. And I don't hear a lot about Guru. I plan to learn programming as I go along over the years, but for now, I want to see how well I can do and how much patience I will have. There are a host of engines out there. Some are free and some are not. I don't know what is best to start on especially if I want to eventually export to platforms other than PC. Ultimately, one has to try some out to know what is best. Since I am new, is exporting to multiple platforms putting the cart before the horse? Is this something I should worry about later? I read some posts that answer similar questions, and I plan to read more. I just wanted to ask my own question here. Any direction or advice would be appreciated.
  21. Hey everyone, I recently signed up for this forum because I'm in a pickle and I hope you can help me. Long story short, I decided that it's about time I follow my gut and start learning game programming. However, I don't want to start with the "wrong" foot and create unnecessary barriers. Therefore I would like to know which online university is the best one for me to study. It has to be online because I live in Israel. I'm looking for an university that is accredited, with a decent teaching core and of course with good market acceptance! From my research, I narrowed it down to these 4: - Full Sail University - Academy of Art University - Liberty University - Southern New Hampshire University Are any of these decent? Would you choose one of them or suggest something else? Thanks a lot! Ronny
  22. Originally posted on Medium I released my first game approximately a month and a half ago and actually tried almost all of the methods I could find on various websites out there - all of them will be listed here. With this article I want to share the story of my “promotion campaign”. The very first thing I did was the Medium account creation. I decided to promote the game using thematic articles about game development and related stuff. Well, actually, I still do this, even with this article here :) In addition to Medium the same articles were posted to my Linkedin profile, but mostly to strengthen it. Moreover, you may find a separate topic on Libgdx website (the framework the game is written on). Then, the press release was published. Actually, you should do a press release the same day as the game launch, but I didn’t know about that back then. And to be honest, all of the methods above were not quite successful in terms of game promotion. So I decided to increase the game presence around the web and started to post articles on various indie-game dev related websites and forums (that's how this blog started) Finally, here comes the list of everything created over the past month (some in Russian, be aware): https://www.igdb.com/games/totem-spirits http://www.slidedb.com/games/totem-spirits https://forums.tigsource.com/index.php?topic=63066.0 https://www.gamedev.net/forums/topic/693334-logical-puzzle-totem-spirits/ http://www.gamedev.ru/projects/forum/?id=231428 https://gamejolt.com/games/totem_spirits/298139 https://vk.com/gameru.indie?w=wall-9222155_202256 https://test4test.io/gameDetails/24 Not so many one can say. But I could not find any more good services! If you know one, please, share in comments. What are the results you may ask? Well, I have to admit that they are terrible. I got a little less than a hundred downloads, and I’m pretty sure that most of them from the relatives and friends. And you can’t really count such as a genuine downloads, since I literally just asked them to get my game on their smartphones. But the good thing is that many of those who played Totem Spirits shared their impressions about the game. They truly liked the product! That was so pleasant to hear their thoughts. I know in person several people who finished the game with all diamonds (a.k.a stars) collected. Still, I don’t regret the time spent on the game because I’ve learnt a great lesson — two years of development is a way too much for such simple and narrow-profile game. It seems that now is not a good time for such complicated puzzlers or I just failed badly with the promotion) Now the next plan is to develop and launch a game in a maximum 160 hours (two working months). The coding process has already begun, so hopefully in January you will see the next product of Pudding Entertainment company!
  23. New Neoclassical Piece

    Hey guys, I just composed a new piece that is definitely inspired by scores of the Final Fantasy series and the Kingdom Hearts series. I hope you guys enjoy!
  24. The ever-evolving mobile app development trends have encouraged more and more developers to come up with new solutions. And this is great because each and every app contributes, in some or the other way, to making our lives easier. Some of the greatest challenges that the computer OS platforms such as Windows, iOS etc., have been struggling to tackle, have much easily been solved on a much smaller mobile platform. However, the failure rate of mobile app startups is also quite high and of concern. According to a report, 9 out of 10 startups fail to make an impact and are wasted before they could generating income. And if this makes you paranoid about yours, your response is quite normal. But then to avoid something similar from happening in your case as well, you need to make sure you follow these tips before finally launching your mobile app in the market. Generate the Need Would you ever buy a thing that you don’t need? Probably not, unless you are a shopaholic, and neither would people do. While some entrepreurs are fortunate enough to figure out areas where people have already been asking for it, others can’t seem to find a reason why people would need their product. But this is not a dead-end, because sometimes you have to generate the need. You have to check out the features and functions of your app, and figure out a strategy to present how well your app helps or makes existing methods more convenient. There are going to be cases when people won’t even know they have a need, and in such conditions, you have to point out the pain area and show them how your app is capable of curing it. Test a Lot It is quite a blunder when you roll out an amazing app with a bug, as it ruins the entire experience. Big companies like Google, Microsoft, make sure their apps are bug-free and highly functional, and even outsource developers and test specialist for the purpose. It was recently in the news that Google is ready to give away a reward of $1000 to anyone who can find bug in their android apps. Similar, many android app development companies have open-source apps developer for testing their app. If you can afford a team of test specialists, well and good. But if you can’t, you can go for open-source testing frameworks available, such as Selenium, Robotium, Windmill, Katalan Studio, Watir, and many more to choose from. Target your Audience Before creating an app, defining your market is the most important thing you need to do. On the basis of demographics, you can target customers belonging to a specific group or culture. And if you are building an app exclusively for them, you have to consider certain points that they can relate to. If you are building an app with a purpose to cater to an entire region, you will have to take care of how your solution tackles a problem that is affecting the entire region. For example – By creating an app for doorstep potable water delivery in Dubai, you are solving a problem that belongs to that region and not exclusively to a group or a specific type of customers. Other than geographical and demographical targets, you can also target a segment of market that encompasses the user preferences and habits globally. For instance, an app that exclusively streams Jazz music, could be a good way to grab a segment of authentic music lovers. Remember, a great portion of the success of your mobile app startup depends upon the market you target. Marketing While creating a great app that fulfils a need, and targeting the right market is important; intensive as well as extensive marketing that follows should also be well taken care of. There are multiple channels and platforms where you can promote your mobile app, such as blogs, social media, website, and more. And all four platforms shall be taken very seriously if you, as a mobile app developer, want your mobile app to get noticed. While website marketing campaigns include SEO techniques such as keyword optimization, image optimization, blog integration, and more; social media marketing, which is as significant as website marketing, include timely posts, page activity, and regular updates on relevant information.
  25. how to make game in java swing

    Hi everyone. My name is Sang and I am a student in primary school. I studied Java and i am really like it. and now I want to learn make game a game use Java in Java Swing. Would you like give me some websites teach make game java for begginers, please? Thank you very much!
  • Advertisement