Jump to content

  • Log In with Google      Sign In   
  • Create Account

Search Results

There were 550 results tagged with game

Sort by                Order  
  1. How to implement save/load functionality for games with levels

    Introduction


    Some games don't have levels. Open world games, flappy bird, ..and can't think of another example right now, but some games have levels. In this article I will talk specifically about games where character can move between levels, interact with objects around him and save the progress. Later he can load saved game and continue where he left of.

    stock-vector-video-platform-game-interfa

    Requrements


    First, lets write down the requirements that define our game:
    - game has multiple levels, levels have static (inane) and moving (interactive) parts.
    - player starts new game at level 1, but can load the game at any subsequent level
    - player moves between levels mostly forward, but he is able to go back to previous levels and he can jump between levels with some kind of teleport device. For example, on 5th level there is portal that takes him back to 2nd level, exactly the part of 2nd level that couldn't been accessed before.
    - level has multiple entry and exit points. This means if you go from level 3 to level 4 you appear by the river at the cave entrance. But if you go from level 8 to level 4 you appear in front of traders house. So level 4 has two entry points.
    - player can save position anywhere at any moment and load that saved position from anywhere in the game. if player exits game, unsaved progress is lost.

    This is how we define level:
    - it is environment around the character with interactive pieces.
    - player can change state of interactive pieces, closed doors are left opened, aroused levers are pulled down, healthy living monsters are now not so well, coins are gone...
    - player can not change static environment: background, props, ambient music, things that stay the same no matter what you do on that level (some games allow player to destroy background environment, leaving it completely changed - its ok it just have to be taken into account as interactive piece as well).

    In this article I will discuss simplified version of such game where level only has 10 colored balls and static background. Each level has different background, but it can not be changed by player so no need to save it. Player can move the balls around and paint them different color so we want to be able to save these changes. We are using this simple scenario just to demonstrate the save/load ecosystem without adding complexity of level itself.

    unique-design.gif


    How do we code it?


    Im gonna use some pseudocode in this article that sometimes resembles javascript and json, but its not the code you can copypaste and run. First we define Level class/object with these fields:

    LevelObj
    {
    	//simple number
    	id 
    	
    	//image path
    	background 
    
    	//position of balls and their color
    	array levelBalls[{position,color}] 
    
    	//position of exits and where they lead to
    	array levelExits[{position,idOfNextLevel,idOfNextLevelEntrance}] 
    
    	//position of player and facing upon level entrance
    	array levelEntrances[{id,position,rotation}] 
    }
    

    Lets say our game has 20 levels, we are going to create 20 objects that describe initial state of our levels (where the balls are, what is their color, where are level exits and entrances). in real life we would store these in 20 different files, but for our very simple example we will use just one array with 20 elements:

    gameLevelsArray = [
    
    //level 1
    {
    	id:1, 
    	levelBalls:[
    		{
    			"position": {"x":2, "y":3},
    			"color": "red"
    		},
    		{
    			"position": {"x":4, "y":6},
    			"color": "red"
    		}, 
    		{
    			"position": {"x":9, "y":9},
    			"color": "green"
    		}, 
    		...
    	], 
    	levelExits:[
    		{
    			"position": {"x":3, "y":3},
    			"nextLevelID": 2,
    			"nextLevelEntrance": 1
    		},
    		...
    	], 
    	levelEntrances:[
    		{
    			"entranceID": 1,
    			"position": {"x":1, "y":2},
    			"rotation": 90
    		},
    		...
    	]
    },
    
    //level 2
    {
    	id:2, 
    	levelBalls:[...], 
    	levelExits:[...], 
    	levelEntrances:[...]
    },
    
    ...
    ];
    


    Globals:
    - currentLevelPointer //initially null
    - gameState //initially GAME_STATE_MAINMENU;
    - arrayOfVisitedLevels //initially empty, but we push levels to this array as player visits them

    Player starts the game at Main Menu and there he can chose "New Game" or "Load Game". We splash the loading screen and in the background load assets for either first level, or some saved level and position.

    Let me explain what arrayOfVisitedLevels is about. When player starts the game for the first time ha appears on first level. He can then move to other levels: second, third, fourth, all without saving the game. And if he decides to go back a level, we want him to see all the changes he made on those previous levels, although he didnt hit the Save button yet. So this is what arrayOfVisitedLevels does, it holds all visited levels (and their changes) in RAM and when player hits Save button we take all these levels and store them to permanent memory and empty the array. So when player moves from level 4 to level 5 we have to ask these questions:

    - Is level 5 in arrayOfVisitedLevels? If yes it means player was just there
    - If not, is this level saved on disk? If yes we want to load it.
    - If not, player never went to this level before, so we load its initial state from our gameLevelsArray.

    lvl2screen2.png

    Below is how level loading could look like. This function is called when player is just starting a game, or when changing levels while playing the game.

    //this function takes parameters 
    //id - what level we are going to
    //entrance - what entrance we shall appear at
    function loadLevel(id, entrance)
    {
    	gameState = GAME_STATE_LOADING;
    	
    	//if game hasn't just started, we need to cleanup previous level data
    	if(currentLevelPointer != null)
    	{
    		//save current level - here we just push pointer to our level object to an array
    		arrayOfVisitedLevels.push(currentLevelPointer);
    		
    		//clear current level - we want to render new one
    		//for example this could delete objects from the 3d scene
    		clearLevel(currentLevelPointer); //this function will have access to array of balls on that level and erase them, also the background
    	}
    	
    	//if we are entering level that we already visited
    	if(levelAlreadyVisited(id) //check arrayOfVisitedLevels to see if id is in there
    	{
    		//we get the level from array of visited levels
    		//big idea here is that all the changes player made to this level are still in this object in memory
    		nextLevel = getLevelFromArrayByID(arrayOfVisitedLevels,id);
    	}
    	else if(levelIsSaved(id) //check to see if level is saved
    	{
    		//we get the level from permanent storage
    		nextLevel = getLevelFromArrayByID(savedLevels,id);
    	}
    	else
    	{
    		//get level from array of game levels - these are default unchanged levels
    		//in real life we would load level from file here
    		nextLevel = getLevelFromArrayByID(gameLevelsArray,id);
    	}
    	
    	//now that we got the level we need, lets draw it 
    	loadLevelAssets(nextLevel);
    	showLevel(nextLevel);
    
    	//place player at given entrance
    	player.position = entrance.position;
    	player.facing = entrance.rotation;
    	
    	//remove the loading screen and start the game loop
    	gameState = GAME_STATE_PLAY;
    }
    



    Game Save


    In this example we dont address how player moves around and changes the balls color and position, but he does and he is satisfied with what he's done and now he wants to save it. Lets consider different saving scenarios:
    - Player starts new game, moves through three levels and then press save.
    - He then fiddles some more on third level, and goes back to second level and presses save there again.
    - After that, he goes back to third level, then fourth and fifth and finally saves again before exiting the game.

    We want to have 5 levels saved so that when player loads the game he can go back and see those levels exectly as he left them.

    While player was playing we decided to hold visited levels in dynamic variable, in memory. When he presses save, it would be nice to store those visited levels in permanent storage and release dynamic objects from RAM. So first save is pretty straight forward - he hits the save - we save three levels, and release first and second level from memory (third one is still being used). When player wants to move to second level again we have to check first if we have that level in RAM, if not we have to check if that level was visited before, and if it is - we load it from saved file. So now player wants to hit save button second time. He is at the second level but has third and second changed a little, so we have to save that too. If he saves over the same game, we can overwrite those levels in saved file. If he saves new game slot, we have to keep previously saved data in case he wants to load that first saved game later, so we create new save file, but what do we put in second save file - just second and third level or all levels from the start? By the time he hits save button third time, we understood we need to go back one step and discuss save position some more.

    Save slots


    Some games have checkpoints for saving progress. On the level there is some prop that player needs to approach to save the progress. If he dies, the game will automatically return him to last saved position. This is equivalent to one saving slot that is overwritten each time. Some games have multiple save slots, that allow you to name your saved game and then later overwrite it, or create a new one. When you think about it, saving each time to new game slot means last saved game should have all the data from previous saved games. We could make last saved game save only what is changed between previous saved game and now. Differential approach means smaller save files, but we must traverse through all previous saved game files when we are looking for some older level. Alternatively, last saved game could have all the levels accessed (changed) from the game start.

    Aladdin-Level3-AgrabahRooftops.png

    Now the fun starts. Imagine player has 20 saved games, and more then half game finished. And then he desides (decides) to click 'New Game'. He (or his brother) wants to start the game from the begining, and after 5 levels hits the save. Now whether you have differential or all-in-one approach, this saved game must be somehow separated from all others. And not just the "New Game", even if player load some older saved game and starts from there - he will take a new path from that point and branch into parallel adventure. When he keeps saving games on this new path, differential aproach must be able to trace back previous saved games not just by date, but some smarter linked list mechanism.

    What I like to do here is create stories. Each time player starts a New Game he starts a new story. Each time he branches out from older saved game he creates another story. A story is a collection (linked list) of saved games that traces back to the begining. Even if you make a game with one save slot (checkpoint usecase) - you can use one story (in case you want to change it later). One save slot version has only one story. It can have numerous save nodes, but they are in a straight line. Load always loads last one. Start from beginning starts new story and previous one is deleted.

    In this post I will only show scenario with one story. You can then do multiple stories as excersize, haha.

    Here is example save function:

    saveLevel()
    {
        //here are some hints not related to our simple ball game:
        //save player stats in that moment: xp, hp, strength...
        //save player inventory, and also what he has equipped
        //these are level independent data, but needs to be saved each time
        //save player position and rotation
    
        //save what is in array of visited levels
        for (var i=0; i<arrayOfVisitedLevels.length; i++)
    	{
    		var levelId = arrayOfVisitedLevels[i&#93;.id;
    		var levelToSave = getLevelFromArrayByID(arrayOfVisitedLevels,levelId);
    
    		if(levelIsSaved(levelId)) //if this level is already saved, in one story we overwrite it
    		{
    			overwriteSavedLevel(savedLevels, levelId, levelToSave); //copy balls data to saved level object
    		}
    		else
    		{
    			addSavedLevel(savedLevels, levelId, levelToSave); //push new level object in savedLevels
    		}
    	}
    
    	//now save current level, again repeating check if level is saved
    	if(levelIsSaved(currentLevelPointer.id)) //if this level is already saved, in one story we overwrite it
    	{
    		//copy balls data to saved level object
    		overwriteSavedLevel(savedLevels, currentLevelPointer.id, currentLevelPointer); 
    	}
    	else
    	{
    		//push new level object in savedLevels
    		addSavedLevel(savedLevels, currentLevelPointer.id, currentLevelPointer); 
    	}
    
    	//now persist our saved data to file or database:
    	storeSavedDataToPermanentMemory(savedLevels);
         
    }
    

    So Im using savedLevels here as some kind of preloaded array of saved games, and I edit values in this array first before storing it to persistant memory. Even if your levels are small like this, you dont need this preloaded array of saved games, but work directly with data from file/database. I just thought this would make save logic easier to understand.

    At this point, bugs like "Go to next level, save, load, pick an item, go to previous level, save, load - drop item on the ground, save, load - ITEM IS GONE!" start appearing. It is getting exponentialy harder to reproduce bugs so you better create good test scenarios that cover as much usecases you can think of. And get the QA guy repeat them until his eyes bleed.

    But then you might want to complicate things some more with a little save/load optimization.


    Optimization


    You all played a game where loading screen was taking forever. Sometimes it even kills the joy out of playing. Sure you could always blame the computer being old, but sometimes the developers can do a little extra to make things snappy.

    Imagine saving a game on level X, after the save you don't move to another level, you dont play for long and change many things, you just move one ball a little bit, change your mind, and hit load again. What you want to see is that ball moved back to saved position and nothing else. Its just a tiny little change, how long should it take? Well, if we look at our functions above, we are calling clearLevel(currentLevelPointer), then loading level from savedLevels and calling loadLevelAssets(nextLevel), followed by showLevel(nextLevel). So basically clear everything and load and draw from the scratch. Its a safe path. But its not superb solution. We can do many things to avoid this overhead and I will show you one thing that I like to do.

    screen02.png

    I like to make additional check if level to be loaded is same as current level.
    If it is, I dont want to erase everything and load everything from scratch - its already there on the screen. I just want to rearange dynamic objects to their saved state, and user will get the position he saved.

    In our little example, i get the balls position and color from saved data and move them back to saved state. In more complicated level, I would also load player health, experience, monsters, container content, and everything else that can be changed, but it is still on the light level of changing properties and position and not doing heavy loading of models and pictures again. This is why I dont release monster from memory right after killing it, I just make it invisible. Some games could not afford such luxury and they would have to do some reloading, but still not all. All static content is there, loaded, visible on the screen, wether its a background image or 3d models of mountains and trees.

    But as the game complexity grows, this little optimization will make you pull your hair out. Those will be the parts of your code that you dont remember how they work any more, and when the cobwebs and dust cover those functions spooky variables will stare at you from the dark asking for sacrifices.


    Time to start


    After all said and done, I will add what needs to be done when New Game is started. This can happen during gameplay, so we might need to clear some stuff from the screen. Again, if player hits New Game on first level, we might optimize to avoid level reloading. This is what our new game function would look like.

    function NewGame()
    {
    	gameState = GAME_STATE_LOADING;
    
    	//get saved levels into practical array variable
    	savedLevels = restoreSavedDataFromPermanentMemory();
    
    	//erase this array
    	arrayOfVisitedLevels = [&#93;;
    
    	//check if this is a fresh start, or player is already progressing through the game
    	if(currentLevelPointer != null)
    	{
    		//clear up, make a fresh start
    		clearLevel(currentLevelPointer);
    	}
    	else if (currentLevelPointer == 1)
    	{
    		//optionally do optimized reload here
    		reloadNewGameOnFirstLevel(); //just move the balls and player back to starting position.
    		
    		//remove the loading screen and start the game loop
    		gameState = GAME_STATE_PLAY;
    		return;
    	}
    
    	//get level from array of game levels - these are default unchanged levels
    	firstLevel = getLevelFromArrayByID(gameLevelsArray,id);
    	
    	//now that we got the level we need, lets draw it 
    	loadLevelAssets(firstLevel);
    	showLevel(firstLevel);
    
    	//place player at given entrance
    	player.position = firstLevel.levelEntrances[0&#93;.position;
    	player.facing = firstLevel.levelEntrances[0&#93;.rotation;
    
    	//remove the loading screen and start the game loop
    	gameState = GAME_STATE_PLAY;
    }
    

    Remember, when player hits New Game during gameplay, it doesnt mean he wants to lose his saved game. He still might want to hit Load Game and continue where he left of. BUT *mark this important* if he starts New Game and then hits Save Game - all his previous progress will be lost and you might want to warn him about it.

    Extensibility


    Once your save/load functionality is implemented and working flawlesly, you'll want to add new dynamic stuff to you levels. You or your boss will have this great idea that colored balls should be acompanied with colored squares. So how do we add the squares now?

    There are two types of extensions, one that is affecting all levels, and another affecting only one specific level. If you want to add squares to all levels you have to

    1. Extend the level model/class:

    LevelObj
    {
    	id //simple number
    	background //image path
    	array levelBalls[{position,color}&#93; //position of balls and their color
    	array levelSquares[{position,color}&#93; //position of squares and their color
    	array levelExits[{position,idOfNextLevel,idOfNextLevelEntrance}&#93; //position of exit and where it leads to
    	array levelEntrances[{id,position,rotation}&#93; //position of player and facing upon level entrance
    }
    

    2. Next you add square data to gameLevelsArray (see above, not gonna copy here again with some square example data).

    3. Function clearLevel will be changed to erase squares.

    4. Functions loadLevelAssets and showLevel are extended to include squares.

    5. Functions overwriteSavedLevel, storeSavedDataToPermanentMemory and restoreSavedDataFromPermanentMemory need some edits as well.

    As you can see its not small change, but its managable. Its not imposible to add savable data but you have to remember all the places where you manipulate save and load data and add it there. For example I forgot to add squares to one function now. Its the one I told you it will come back to haunt you: its optimized loadGameOnSavedLevel. In this function we are not clearing all level assets, but just moving back dynamic objects in saved position so we need to add squares there as well.


    Quirks


    Second type of extensions is that one specific thing that you want to appear on level 17 and you dont need it anywhere else, I call it quirks. You want a flower on level 17 and when player eats a flower he gets extra life. Its totaly out of game mechanics, specific thing, that you want saved just as well. These things can bring something interesting to the game, but often you dont think of them at the very begining. So you add generic quircs array to each level. And you can use it later if you need it.

    1. Extend each level with quircks array. It can be empty array in all levels at first.

    LevelObj
    {
    	id //simple number
    	background //image path
    	array quirks[&#93; //what good is empty array for? TODO: remove this
    	array levelBalls[{position,color}&#93; //position of balls and their color
    	array levelSquares[{position,color}&#93; //position of squares and their color
    	array levelExits[{position,idOfNextLevel,idOfNextLevelEntrance}&#93; //position of exit and where it leads to
    	array levelEntrances[{id,position,rotation}&#93; //position of player and facing upon level entrance
    }
    

    2. Add levelOnLoad function for each level that is called when that level is loaded, and pass saved data to it. It can be empty function for all levels at first (if you use some sort of scripting in your games, then this can be script that is executed when level is loaded, its convinient as you dont have to edit source code later)

    3. Have quirks saved and loaded if array is not empty. If your database dont like expanding arrays, have it have fixed array of 10 integers - all zeros.

    Now imagine you want to add flower on level 17 at later stage. When level is loaded, you want to see the flower, but if player eats it and save the game you want to save the fact that flower is gone. This is what you do:

    1. In gameLevelsArray add 1 to quirk array :
    quirks:[1],
    2. In levelOnLoad (script) function draw flower only if quirk is 1
    3. When player eats the flower, give him extra life but also set currentLevelPointer.quirks[0] to 0

    Maybe this is stupid cause you are changing the code to add this flower eating functionality so you can also edit save and load functions to include this new feature, but I like to avoid changing save/load functions cause error in there can affect all other parts of the game. And sure it will look confusing to other coder what this level[17].quirks[0] thing is. But you dont care anymore at this point.

    Skyrim.jpg

    Conclusion


    This functionality can be quite complicated, but good planing and thinking ahead can make it easier. So hopefully this article shows you something you didnt think of and helps you with the planning.

    All of these concepts are used in 'real' code in two of my games that you can find opensourced on github:
    javascript game: https://github.com/bpetar/web-dungeon
    c++ game: https://github.com/bpetar/leonline

    In the end, I must tell you that no one told me how to make save/load functionality and I never read any existing article or book on this subject and I made this up all by my self, so maybe there is a better way to do this, and I advise you to browse some more.


    Article Update Log


    21 Sep 2016: Initial release

  2. 1 September with Defence'39

    hi! We have for you special game for today! On 1st September 1939 the Nazi Germany attacked Poland. Defense'39 is wargame like none you have seen before. The Player takes control of a single bunker or similar defensive position (like an armored train or a trench) and has to stand against thousands upon thousands of approaching enemies. Game is for free and has a lot of positive coments on markets.

    Game features

    - a whole new approach to the tower defense genre
    - unique, intuitive targeting system
    - fast-paced war action
    - massive number of units simultaneously on-screen
    - 10 varying locations with over 70 missions!
    - variety of weapons to use and enemies to destroy
    - medal-based, diverse upgrade system
    - survival mode for those seeking the ultimate challenge

    Download the game and play with us!

    AppStore download link

    http://itunes.apple.com/app/defense-39/id731897404

    Google Play download link

    http://play.google.com/store/apps/details?id=com.siroccomobile.defense39

    Defence'39 thriller

  3. A game like Animal crossing!

    How would u guys feel?

    If so suggest ideas!

    Would u like debug version's

    ......

    tell in comments!

  4. Cursor RPG

    Cursor RPG</h1>

    This is game that I have been working on for the last few weeks! It's a simple game, and does not have much, but if you seem like you want to try it, you can. Here are some images.

    http://imgur.com/uGwgm3o
    http://imgur.com/7i2AKAQ
    http://imgur.com/9qVt1yq

    The download link is below.
    http://www.mediafire.com/download/um54duos9ywt66y/CursorRPG.zip

  5. Cursor RPG

    Cursor RPG</h1>

    This is game that I have been working on for the last few weeks! It's a simple game, and does not have much, but if you seem like you want to try it, you can. Here are some images.

    http://imgur.com/uGwgm3o
    http://imgur.com/7i2AKAQ
    http://imgur.com/9qVt1yq

    The download link is below.
    http://www.mediafire.com/download/um54duos9ywt66y/CursorRPG.zip

  6. War Heroes: Invasion - Now on Steam Greenlight!

    Have you ever dreamed of being the commander of your own army?

    In "War Heroes: Invasion" you will have your chance!
    We really hope you will enjoy our game.

    Steamcommunity.com

    VERY IMPORTANT:
    Remember, we are making a high quality tower defense game!

    - Great strategy.
    - Colorful maps and characters.
    - Earn numerous exciting achievements.
    - Three different worlds.
    - 18 levels and 3 different game modes (campaign, survival, endless).
    - Original enemies.
    - Powerful, devastating weapons.
    - A formidable boss.


    Each playthrough will be different; you can play this game forever and no two games will ever be the same!

    Facebook: Click me!
    Twitter: Click me!
    Mail: hammersongames@gmail.com
    Steam: Steamcommunity.com

  7. Unreal development kit

    Hi there, Most of you are asking what the heck is UDK? how do I use it? here you are!</h1>

    UDK </h1>

    Starters</h2>

    Hi I know you are like what is UDK? Wel it is Unreal Development kit! It is used for making games. Shooting games mostly. So this could be hard, but is also really easy to use. I mean anyone can use it right?


    About UDK


    UDK is game making software, or engine to be percice. It is hard at some points like desighning the layout, or placing characters, but it goes to show your smart! Make your own game with this!

    <H1> is used for headings, <p> is used for paragraphs, <b> is bold, <i> is italic, <u> is underline!(this was for codes)
    

    The challenging parts

    Here are some really HARD parts first making games on this can take up to a year if you are making a large funfilled shotting first person game! Adding storylines takes like 2 weeks of work. Characters take like 3 weeks for the whole game. The menu could take 3 to 4 days! Also if you were downloading this game engine on your slow PC then it takes for EVER to downlaod. I reccomend a fast PC.

    Conclusion

    It goes to show that if you made a large game then you are smart and have knowledge. It is hard with this alothough it is software!

  8. Unreal development kit

    Hi there, Most of you are asking what the heck is UDK? how do I use it? here you are!</h1>

    UDK </h1>

    Starters</h2>

    Hi I know you are like what is UDK? Wel it is Unreal Development kit! It is used for making games. Shooting games mostly. So this could be hard, but is also really easy to use. I mean anyone can use it right?


    About UDK


    UDK is game making software, or engine to be percice. It is hard at some points like desighning the layout, or placing characters, but it goes to show your smart! Make your own game with this!

    <H1> is used for headings, <p> is used for paragraphs, <b> is bold, <i> is italic, <u> is underline!(this was for codes)
    

    The challenging parts

    Here are some really HARD parts first making games on this can take up to a year if you are making a large funfilled shotting first person game! Adding storylines takes like 2 weeks of work. Characters take like 3 weeks for the whole game. The menu could take 3 to 4 days! Also if you were downloading this game engine on your slow PC then it takes for EVER to downlaod. I reccomend a fast PC.

    Conclusion

    It goes to show that if you made a large game then you are smart and have knowledge. It is hard with this alothough it is software!

    Article Update Log


    Updates below:

    26 of Aprile 2016: Added links and pics

    pictures


    [attachment=31670:Classroom.jpg]
    [attachment=31671:the games.jpg]

  9. Unreal development kit

    Hi there, Most of you are asking what the heck is UDK? how do I use it? here you are!</h1>

    UDK </h1>

    Starters</h2>

    Hi I know you are like what is UDK? Wel it is Unreal Development kit! It is used for making games. Shooting games mostly. So this could be hard, but is also really easy to use. I mean anyone can use it right?


    About UDK


    UDK is game making software, or engine to be percice. It is hard at some points like desighning the layout, or placing characters, but it goes to show your smart! Make your own game with this!

    <H1> is used for headings, <p> is used for paragraphs, <b> is bold, <i> is italic, <u> is underline!(this was for codes)
    

    The challenging parts

    Here are some really HARD parts first making games on this can take up to a year if you are making a large funfilled shotting first person game! Adding storylines takes like 2 weeks of work. Characters take like 3 weeks for the whole game. The menu could take 3 to 4 days! Also if you were downloading this game engine on your slow PC then it takes for EVER to downlaod. I reccomend a fast PC.

    Conclusion

    It goes to show that if you made a large game then you are smart and have knowledge. It is hard with this alothough it is software!

    Article Update Log


    Updates below:

    26 of Aprile 2016: Added links and pics

    pictures


    [attachment=31670:Classroom.jpg]
    [attachment=31671:the games.jpg]</p>

  10. Unreal development kit

    Hi there, Most of you are asking what the heck is UDK? how do I use it? here you are!</h1>

    UDK </h1>

    Starters</h2>

    Hi I know you are like what is UDK? Wel it is Unreal Development kit! It is used for making games. Shooting games mostly. So this could be hard, but is also really easy to use. I mean anyone can use it right?


    About UDK


    UDK is game making software, or engine to be percice. It is hard at some points like desighning the layout, or placing characters, but it goes to show your smart! Make your own game with this!

    /* Code block here */
    

    The challenging parts

    Here are some really HARD parts first making games on this can take up to a year if you are making a large funfilled shotting first person game! Adding storylines takes like 2 weeks of work. Characters take like 3 weeks for the whole game. The menu could take 3 to 4 days! Also if you were downloading this game engine on your slow PC then it takes for EVER to downlaod. I reccomend a fast PC.

    Conclusion

    It goes to show that if you made a large game then you are smart and have knowledge. It is hard with this alothough it is software!

    Article Update Log


    Updates below:

    26 of Aprile 2016: Added links and pics

    pictures


    [attachment=31670:Classroom.jpg]
    [attachment=31671:the games.jpg]</p>

  11. [Game] [Free] Get ready to defend your ship using Guns and Magic

    Hi All,

    Joyfield Studio is happy to share that Guns and Magic game is now available on Google Play and Amazon.

    Check out our new trailer!

    Guns and Magic is a defender-based action RPG game in which players explore undiscovered planets on the edge of the Galaxy.

    RUnWXBixCSiXpuAtRbARaOCEWu8lB8Inv7ZbjcPM

    Dowload here for free: Google Play and Amazon!

    #gunsandmagic, #joyfield_studio, #shooter, #rpg, #mobilegame, #guns, #magic, #defense, #artefact, #defence

  12. Open game concept for horror game

    GAMEPLAY
    In this open game of horror, stealth and cooperation, you struggle to survive while exploring creepy island environments that cycle through periods of fog, dusk and night. You must initially avoid the horrors harvesting humans while seeking supplies, hideouts, clues and other survivors. Other survivors are key in your struggle, they may possess clues about the lurking horrors, crafting tips or know locations of interests in the region. You can designate a hidden location you find as a Hideout. Recruiting any survivor to join your survivor's hideout will generate scavenged supplies in the hideout. As you gain experience, equipment and lore about the inhuman horrors, you will discover new objectives to fight back the invaders.
    You will not die from starvation directly, though being deprived of food and water will reduce your vitality and running speed. If your character dies, you start in the role of another survivor on the island, which could be a survivor you have helped or given items to. If there are no human survivors alive on the island the game is over.
    BEHIND THE SCENE
    CULTS: Dark corners of secluded areas conceal clues suggesting that Occult lore foreshadowed the Invasion. Ancient texts by forgotten practitioners of the dark arts, describe the very demons now lurking in the ruins. Investigations may reveal that certain Cults, have been awaiting and preparing for the apocalyptic arrival for some time. Such cults have established hidden Shelters with valuable Occult Tomes and supplies. In the shadows of civilization, these cults appear to have fought a covert war against each other for ages while setting the stage for the arrival of their respective deity. Some of the survivors could be deceitful Lovecraftian Cultists, secretly worshipping the elder entities that now threaten the last remnants of humanity.
    STYGIANS: The Stygian faction are infectious lovecraftian abominations related to the fungal vegetation taking root. Some of these creatures can emerge from the strange fungal growth that are gradually multiplying on the island or from a Spore Colony. They are more active during the morning Fog and are mostly attracted to sound as well as the scent of blood or rotting flesh. Some of these creatures can infect humans and corpses and mutate them into Fungal Zombies. The slow movement speed of Fungal Zombies and Gorgons (Demonic worms), is somewhat offset by their ability to sense and ambush lifeforms in the fog and by venoms that slow-down enemies. In some cases a scratched and infected human can run away, but transform into a Fungal Zombie if no antidote is used. Their Stygian venom is particularly potent against all Chthonian demons. The Stygian creatures include :
    Medusa Moth, a raven sized venomous flying creature with tentacles (some Medusa Moth can inject a human or corpse with a virulent mutagenic infection that will morph the human or corpse into a Fungal Zombie unless an antidote is used in time) [vulnerable to makeshift weapons] Clue: "The body appears to have been stung by a venomous thing that's much larger than a wasp."
    Fungal Zombie, a human with fungal growth (from infected human or human corpse) [vulnerable to lethal weapons] Clue: "The body has been lacerated by claws."
    Gorgon, a tiger sized worm with tentacles around the mouth [vulnerable to special weapons]Clue: "The body has been partially devoured." (usually a Gorgon devours the entire body and no corpse is left)
    Spore Colony, a fungal spire that Stygian creature can merge into or out of (the smaller fungal growth multiply on the map and can potentially grow into a Spore Colony) [vulnerable to Molotov Cocktails]
    Stygian mutations:
    Green Salve: healing
    Sap Venom: Slows victim and damage over time
    Fungal Venom: Turns human victim into Fungal Zombie.
    Stygian Venom: Deadly for Chthonian Demons.
    Spew Spores: short range attack Deadly for Chthonian
    Spore Burst: Suicide radius attack small creature kills larger enemy
    Fungal Growth : morph into a fungal growth (a fully grown fungal growth can become a Spore Colony)
    Spit Thorn : medium range attack
    Secretions: reduces acid damage (by 50%)
    Ablative Moss: reduces fire damage (by 50% and normal damage by 10%)
    A Spore Colony can gradually unlock mutations, once unlocked in a given Spore Colony, a creature spawning or merging with this specific Spore Colony can activate the mutation (costs Essence resource to unlock and to activate). Some Fungal Growth can metabolise a mutation and become more dangerous for the unwary.
    CHTHONIANS: The Chthonian faction are horrible subterranean arachnids and arthropods that were initially sighted near fallen meteorites. They burrow underground and often burst out of the ground when the sun sets. They are most active from the twilight of dusk to the early evening. They are sometimes encountered near meteorite impact sites. One survivor claims he saw a meteorite stone morph into a demonic arachnid. These creatures are usually attracted to vibrations(running, digging), electric light and radio signals. Some Chthonian hatchlings can paralyse a human host to infest it. The infested victim morphs into an organic cocoon, from which a larger breed such as a Lurker demon emerges. These creatures are somewhat resistant to fire and immune to radiation, but quite vulnerable to the Stygian venom (creatures from the infectious fog dwelling faction). Some of the Chthonian creatures can be radioactive and some can spit streams of fiery plasma. The Chthonians creatures include :
    Egg, looks like a rock or a meteorite and is difficult to break without a pick. Chthonian Eggs, which can sometimes fall from the sky or can be laid by a Chthonian Queen, can morph into a Hatchling arachnid.
    Hatchling, a cat sized alien arachnid (it can cocoon a human or corpse to morph into a Lurker)[vulnerable to makeshift weapons] Clue: "The body appears to have been bitten by a creature's fangs."
    Lurker, a wolf sized arachnid (it can cocoon a human or corpse to morph into a Predator)[vulnerable to lethal weapons] Clue: "The body has been mauled."
    Predator, a velociraptor sized insectoid [vulnerable to special weapons] Clue: "The body appears to have been mauled and partially eaten by a large creature." (usually a Predator devours the entire body and no corpse is left)
    Queen, a horse sized arachnid that can lay the eggs from which hatchlings can emerge [vulnerable to Dynamite] Clue: "The body appears to have been mauled by a large creature and the head is missing." (usually a Queens devours the entire body starting with the head and no corpse is left)
    Chthonian Mutations:
    Consume: allows a creature to heal or grow by consuming a human corpse.
    Infest: allows Hatchlings to paralyse and consume a living human and morph into a larger breed.
    Spit Acid: medium range attack effective against Stygian
    Spew Plasma: Short range attack Deadly for Stygian
    Fire Blast: Suicide radius attack allows small creature to kill larger one
    Tunnelling: Travel underground.
    Chrysalis: Morph into a Queen (predator only).
    Acid Blood: Reduces Venom damage (by 50%)
    Carapace: Reduces Spore damage (by 50% and normal damage by 10%)
    A Chthonian Queen can gradually unlock mutations, once unlocked in a given Chthonian Queen, a creature spawning from an Egg laid by this specific Queen can activate the mutation (costs Essence resource to unlock and to activate).
    The unnatural events that have caused the collapse of human civilisation have also caused rifts from which other types of entities emerge into our world such as the mysterious Outsiders.

  13. Asteroids Rush! [Android]

    AR_promo_2_800.png?extra=lwj3xbyfwEIU6Xk

    Asteroids Rush!


    Hi! We released a major update to the game Asteroids Rush and would like to know your opinion about it, maybe you could make a review.


    Asteroids Rush is simple yet catchy arcade game. You need to dodge asteroids and to fight against the bosses, to beat your friends' scores. The more score points you get - the quicker asteroids and black holes become. You can always get a new ship or extra fuel for a heat start in the game store. Open achievements and get extra points for them, beat the high score and simply have fun playing Asteroids Rush!

    Google Play: https://play.google.com/store/apps/details?id=com.GeekyRaccoons.AsteroidsRushGame

    What do you think about it? :)

  14. Step-by-Step Guide of Making A Sequel To A Game

    If your company has already released some popular and addictive game and you're thinking about creation a sequel, this article is just what you need. We gathered the main tips and advices that will be useful for the building a strategy and a sequel itself. Check out the following instructions and recommendations that can lend you a hand in making a sequel for your game.

    Step#1 Fix Existing Bugs</h2>

    It's probably the first thing you should do even without releasing a sequel but releasing an update. However, some bugs take the whole concept to rebuild in order to fix them. That's why you should gather your team at a round table, ask them to search for possible bugs, collect bug reports from players and then discuss the problems that have been discovered. Consider this sequel as a unique chance to strengthen all weak points that were in the original, improve user experience and attract a broader audience.

    The following list can give you insights where you can look for possible bugs. Additionally, go through these areas to make sure they are good.


    settings</li>
    architecture</li>
    list of supported platforms</li>
    art side</li>
    monetization policy</li>
    advertising</li>
    </ul>

    Once you spotted the flaws, gather your team one more time and do the brainstorm altogether. Listen carefully to the suggestions of your team members and develop a strategy on how to adjust the defects and improve the second release. Rebuild the structure if you need or redrawn the art style so it will hit the appropriate target audience.

    Step#2 Budget Allocation & Strategy Development</h2>

    The creation of a sequel gives you a chance not only to improve your work but to save money, as well. Sequel production actions are a lot cheaper than creation a game from a scratch. You have a game engine ready and work through, you have a team that deserves your trust that greatly facilitates project management, you have server side ready, etc. Besides, your original game has already gathered a community of loyal players that eases the marketing efforts. Give your fans some exciting insights about the future sequel and don't forget to state that the sequel retained everything they liked in the original game so much but acquire some advanced breathtaking features. Likewise, inform some of players who hatred toward the first version of the game that you've realised the mistakes that were made and would like to know their opinion about the sequel. Believe us, it will help you in your marketing campaign.
    In addition, you can gain more money from the first release thanks to people's natural curiosity. Basically, there will be a lot of people who would like to compare the original game and a sequel in order to follow the improvements.

    Step#3 Sequel Dev Measures</h2>

    The ideal merger of an old concept and new features defines the sequel success. You need to remember that no player will appreciate the doppelganger of the original game because to be addictive an adventure should feel familiar and be one-of-a-kind at the same time. Creation of such game demands just a few modifications and improvements in the original. See the following list to explore the possible sources of adjustment.

    Structure

    Conduct a research and you will know if the structure of your game doesn't correlate with the game category. In that case, it needs to be renovated. However, be careful and don't go in too many updates. Leave the shell and the main features that correspond with the game genre. As it was stated before, players like to be involved in a familiar, but unique game. If you insert new elements or features into a gameplay, include the full and detailed explanation into the tutorial menu.

    Gameplay

    It's probably the most common way of making a sequel - gameplay adjustments. The pitfall you can come across is that you need to strike a balance between flexibility and innovations. Besides, the gameplay should correlate with target audience needs. You can modify gameplay in a variety of options. For instance, you can add additional levels, alternative game modes or experiment with mechanics. Just always remember about the balance of simplicity and complexity. The games that are too easy to understand will be abandoned as easy as the ones that are too hard to play.

    Mechanical

    Pay special attention to the elaboration of the technical aspects of the game development process. Make sure you eliminate and fix all critical issues, for instance, server problems or loading speed and optimize the game size if necessary.

    By following this guide, you can find your sequel at the top soon after the release. Good luck!

  15. Super Mario MMORPG Brainstorm/Team Building

    Introduction</h1>

    Hey guys! I'm new to this forum but ready to hop into action! I got a base engine ready to go for an online MMORPG game, in which is ready to be expanded on! I need a skilled team to help me through the way!

    Mario MMORPG</h1>

    What is it?</h2>

    As of this moment.. nothing! That's where you come in! I need a skilled team of people who can help brainstorm and put together an amazing custom Mario MMORPG! I have the base engine and an extensive amount of experience in programming. The programming language as of right now is Visual Basic. There are quite a few fields of positions availible and desperatly needed!

    What do we need?</h2>

    I need a skilled or not so skilled group of people with the motivation to build a great game together! Currenty I am requiring the following:

    ~Programmers(Urgent)
    ~Idea Generators/Game Planners(Urgent)
    ~Moderators(When put online!)
    ~Map creators
    ~Game Dev's(Maps, Items, Shops, NPC's, and any other aspects!
    ~Administrators
    ~Possible Server Hosts/Backup Hosts(Urgent)(This is a serious position and gives full control of the game, don't expect just anyone to be chosen! This is a high "honour!
    ~Possible Co-Owners if skill level is high enough!(If you are a server host, you are automatically a Co-Owner!)

    and, so far that is all I can conclude to what I need so far! I will add or remove positions accordingly!


    How to apply?</h2>

    So if you are indeed interested or have another position you feel you'd fit let me know! You can respond to me directly on this post, on facebook at (www.facebook.com/smdx24), or in PM! Please use this application:

    Name:
    Position Applied For:
    Date:

    Skills or Acheivments:
    -
    -
    -
    Additional Info/Comments:

    </blockquote>

    Conclusion</h1>

    Thank you very much for taking the time to read all this, and I do hope your interested as an applicant or a beta tester! I am very excited to get this project on the road, and work with all of you as a team! I'm hoping other people are too!

    Progress/Update Log</h1>
    Jan. 18th, 2016: Initial release

  16. Super Mario MMORPG Brainstorm/Team Building

    Introduction</h1>

    Hey guys! I'm new to this forum but ready to hop into action! I got a base engine ready to go for an online MMORPG game, in which is ready to be expanded on! I need a skilled team to help me through the way!

    Mario MMORPG</h1>

    What is it?</h2>

    As of this moment.. nothing! That's where you come in! I need a skilled team of people who can help brainstorm and put together an amazing custom Mario MMORPG! I have the base engine and an extensive amount of experience in programming. The programming language as of right now is Visual Basic. There are quite a few fields of positions availible and desperatly needed!

    What do we need?</h2>

    I need a skilled or not so skilled group of people with the motivation to build a great game together! Currenty I am requiring the following:

    ~Programmers(Urgent)
    ~Idea Generators/Game Planners(Urgent)
    ~Moderators(When put online!)
    ~Map creators
    ~Game Dev's(Maps, Items, Shops, NPC's, and any other aspects!
    ~Administrators
    ~Possible Server Hosts/Backup Hosts(Urgent)(This is a serious position and gives full control of the game, don't expect just anyone to be chosen! This is a high "honour!
    ~Possible Co-Owners if skill level is high enough!(If you are a server host, you are automatically a Co-Owner!)

    and, so far that is all I can conclude to what I need so far! I will add or remove positions accordingly!


    How to apply?</h2>

    So if you are indeed interested or have another position you feel you'd fit let me know! You can respond to me directly on this post, on facebook at (www.facebook.com/smdx24), or in PM! Please use this application:

    Name:
    Position Applied For:
    Date:

    Skills or Acheivments:
    -
    -
    -
    Additional Info/Comments:

    </blockquote>

    Conclusion</h1>

    Thank you very much for taking the time to read all this, and I do hope your interested as an applicant or a beta tester! I am very excited to get this project on the road, and work with all of you as a team! I'm hoping other people are too!

    Progress/Update Log</h1>
    Jan. 18th, 2016: Initial release

  17. Curseye3DEngine - realtime 3D Game Engine

    The Background of Curseye3DEngine</h1>


    In this article I want to present my self-developed 3D Engine from scratch. The development started 2 years ago in the context of my final graduation project. Meanwhile the engine is fitted with several state-of-the-art techniques and a professional rendering-pipeline with a plenty of different shaderprograms. My next goal is to proceed the development and get on a par with famous game engines like Frostbite or Unreal. But in contrast to the famous commercial used engines, Curseye Engine will be a license free Open Source engine for everyone. But reaching this goal by my own is nearly impossible. I want to built up a community that participates in the project.


    Current Development Status</h1>


    It is already possible to design unique simulations, load individual terrains, fill the simualtion with water/ocean and add as many 3D objects as the designer likes.

    The Curseye Engine owns a realisitc water renderer with a fully independent realtime fast fourier transform implementation (FFT). The FFT rendering manner is the world-class technique for simulating water as it is done in CGI movies or AAA games.

    teaserbox_19673549.png?t=1451779095
    Ocean Renderer of Curseye Engine


    teaserbox_19672957.jpg?t=1451775864
    Bezíer interpolated bumpmapped terrain surface


    teaserbox_19648299.png?t=1451693626
    Distance-based tessellation algorithm with three alterable variables
    to define appropiate scene-dependent tessellation


    For detailed rendering-techniques, github-repository of Curseye Engine, Demos and an executable Ocean-Simulation for download vist the website http://www.curseye3d.com
    If my project convinced you and you would like to support my development progress I am grateful for becoming a backer of my kickstarter-campaign https://www.kickstarter.com/projects/1240140588/curseye3dengine?ref=card

    I appreciate for considering my article.
    Regards.

  18. Experience with Unity3D - My First Game

    How It All Began


    10 months into a mind numbingly stupid and boring IT job, I find my interest in game development. It was not an epiphany that struck, but more of reverse engineering that led me to game development. With interests in Coding, Gaming and Physics, game development turned out to be the only career I thought I would really enjoy. And then I did.

    Now where to start?


    Explaining the Concept


    This is the tutorial part of your article. What are you trying to convey to your readers? In this main body section you can put all your descriptive text and pictures (you can drag and drop pictures right into the editor!).

    Using the Code


    (Optional) If your article is about a piece of code create a small description about how the code works and how to use it.

    /* Code block here */
    

    Interesting Points


    Did you stumble upon any weird gotchas? .. things people should look out for? How would you describe your experience writing this article.

    Conclusion


    Wrap up any loose ends for your article. Be sure to restate what was covered in the article. You may also suggest additional resources for the reader to check out if desired.

    Article Update Log


    Keep a running log of any updates that you make to the article. e.g.

    6 Feb 2020: Added additional code samples
    4 Feb 2020: Initial release

    • Dec 07 2015 01:39 AM
    • by
  19. Narrative-Gameplay Dissonance

    The Problem


    Many gamers have experienced the scenario where they must sacrifice their desire to roleplay in order to optimize their gameplay ability. Maybe you betray a friend with a previously benevolent character or miss out on checking out the scenery in a particular area, all just to get that new ability or character that you know you would like to have for future gameplay.

    The key problem here is one of Narrative-Gameplay Dissonance. The immersion of the game is destroyed so that you will confront the realities that...

    1. the game has difficulties.
    2. it is in your best interest to optimize your character for those difficulties.
    3. it may be better for you the player, not you the character, to choose one gameplay option over another despite the fact that it comes with narrative baggage.

    What To Do...


    One of the most important elements of any role-playing game is the sense of immersion players have. An experience can be poisoned if the game doesn’t have believability, consistency, and intrigue. As such, when a player plays a game that is advertised as having a strong narrative, there is an implied relationship between the narrative designer and the player. The player agrees to invest their time and emotions in the characters and world. In return designers craft an experience that promises to keep them immersed in that world, one worth living in. In the ideal case, the player never loses the sense that they are the character until something external jolts them out of flow.

    To deal with the problem we are presented with, we must answer a fundamental question:
    Do you want narrative and gameplay choices intertwined such that decisions in one domain preclude a player’s options in the other?

    If you would prefer that players make narrative decisions for narrative reasons and gameplay decisions for gameplay reasons, then a new array of design constraints must be established.
    • Narrative decisions should not...
      • impact the types of gameplay mechanics the player encounters.
      • impact the degree of difficulty.
      • impact the player’s access to equipment and/or abilities.
    • Gameplay decisions should not...
      • impact the player's access to characters/environments/equipment/abilities.
      • impact the direction of plot points, both minor and major.
    Examples of these principles in action include The Witcher 2: Assassins of Kings and Shadowrun: Dragonfall.

    In the Witcher 2, I can go down two entirely distinct narrative paths, and while the environments/quests I encounter may be different, I will still encounter...

    1. the same diversity/frequency of combat encounters and equipment drops.
    2. the same level of difficulty in the level(s) challenges.
    3. the same quality of equipment.

    In Shadowrun, players can outline a particular knowledge base for their character (Gang, Street, Academic, etc.) that is independent of their role or abilities. You can be a spirit-summoning Shaman that knows about both street life and high society. The narrative decisions presented to players are then localized to a narrative decision made at the start rather than on the gameplay decision that affects what skills/abilities they can get.

    Exceptions


    To be fair, there a few caveats to these constraints; it can be perfectly reasonable for a roleplay decision to affect the game mechanics. One example would be if you wanted to pull a Dark Souls and implement a natural game difficulty assignment based on the mechanics your character exploits. In Dark Souls, you can experience an “easy mode” in the form of playing as a mage. Investing in range-based skills that have auto-refilling ammo fundamentally makes the game easier to beat compared to short-range skills that involve more risk. It is important to note, however, that the game itself is still very difficult to beat, even with a mage-focus, so the premise of the series’ gameplay (“Prepare to Die”) remains in effect despite the handicap.

    Another caveat scenario is when the player makes a decision at the very beginning of the game that impacts what portions of the game they can access or which equipment/abilities they can use. Star Wars: The Old Republic has drastically different content and skills available based on your initial class decision. In this case, you are essentially playing a different game, but with similar mechanics. In addition, those mechanics are independent regardless. It is not as if choosing to be a Jedi in one playthrough somehow affects your options as a Smuggler the next go around. There are two dangers inherent in this scenario though. Players may become frustrated if they can reasonably see two roles having access to the same content, but are limited by these initial role decisions. If different "paths" converge into a central path, then players may also dislike facing a narrative decision that clearly favors one class over another in a practical sense, resulting in a decision becoming a mere calculation.

    Suggestions


    Should you wish to avoid the following scenarios, here are some suggestions for particular cases that might help ensure that your gameplay and narrative decisions remain independent from each other.

    Case 1: Multiple Allied or Playable Characters


    Conduct your narrative design such that the skills associated with a character are not directly tied to their nature, but instead to some independent element that can be switched between characters. The goal here is to ensure that a player is able to maintain both a preferred narrative state and a preferred gameplay state when selecting skills or abilities for characters and/or selecting team members for their party.

    Example:

    The skills associated with a character are based on weapon packs that can be swapped at will. The skills for a given character are completely determined by the equipment they carry. Because any character can then fill any combat role, story decisions are kept independent from gameplay decisions. Regardless of how I want to design my character or team, the narrative interaction remains firmly in the player's control.

    Case 2: Branching Storyline


    Design your quests such that…

    1. gameplay-related artefacts (either awarded by quests or available within a particular branching path) can be found in all paths/questlines so that no quest/path is followed solely for the sake of acquiring the artefact. Or at the very least, allow the player to acquire similarly useful artefacts so that the difference does not affect the player’s success rate of overcoming obstacles.
    2. level design is kept unique between branches, but those paths have comparable degrees of difficulty / gameplay diversity / etc.
    3. narrative differences are the primary distinctions you emphasize.

    Example:

    I’ve been promised a reward by the mayor if I can solve the town’s troubles. A farmer and a merchant are both in need of assistance. I can choose which person to help first. With the farmer, I must protect his farm from bandits. With the merchant, I must identify who stole his merchandise. Who I help first will have ramifications later on. No matter what I do, I will encounter equally entertaining gameplay, the same amount of experience, and the same prize from the mayor. Even if I only had to help one of them, I should still be able to meet these conditions. I also have the future narrative impacted by my decision, implying a shift in story and/or level design later on.

    Case 3: Exclusive Skill-Based Narrative Manipulation


    These would be cases where your character can exclusively invest in a stat or ability that gives them access to unique dialogue choices. In particular, if you can develop your character along particular "paths" of a tree (or some equivalent exclusive choice) and if the player must ultimately devote themselves to a given sub-tree of dialogue abilities, then there is the possibility that the player may lose the exact combination they long for.

    Simply ensure that the decision of which super-dialogue-ability can be used is separated from the overall abilities of the character. Therefore, the player doesn't have to compromise their desire to explore a particular path of the narrative simply because they wish to also use particular combat abilities associated with the same sub-set of skills. I would also suggest providing methods for each sub-tree of skills to grant abilities which eventually bring about the same or equivalently valuable conclusions to dialogue decisions.

    Example:

    I can lie, intimidate, or mind control people based on my stats. If I wish to fight with melee stuff, then I really need to have high Strength. In other games, that might assume an inefficiency in mind control and an efficiency with intimidation (but I really wanna roleplay as a mind-hacking warrior). Also, there are certain parts of the game I want to experience that can only be done when selecting mind-control-associated dialogue options. Thankfully, I actually do have this option. And even if I had the option of using intimidation or lying where mind control is also available, regardless of my decisions, my quest will be completed and I will receive the same type of rewards (albeit with possibly different narrative consequences due to my method).

    Conclusion


    If you are like me and you get annoyed when narrative and gameplay start backing each other into corners, then I hope you’ll be able to take advantage of these ideas. Throw in more ideas in the comments below if you have your own. Comments, criticisms, suggestions, all welcome in further discussion. Let me know what you think. Happy designing!

  20. Need help creating sport-themed game.

    Team Wanted


    I know, I know.. 17 years old, "what the hell are you doing even trying to make a game?" Well, you see, I've only jumped in this boat a few months ago, did a little research and BOOM! An idea crashed into my head.

    I've been trying to shake it, but look like the bug bit me, and bit me hard.. The reason I can't shake this is because (yeah, like all game desighners) I think this will be something extrodinary and succesful. I've been looking for a team to help me in this designing and creating journey as I have only a limited amount of skill.

    So yeah, If anyone is interested, you know what to do... (that "what" is comment)

    6 Feb 2020: Added additional code samples
    4 Feb 2020: Initial release

    • Jul 27 2015 08:29 AM
    • by
  21. Help me out with my GameDev dream!

    Introduction


    My name is Frantisek Hetes, I'm a 18yo high school student who is passionately interested in game development in his free time

    Point


    Hey guys, making my dream come true, got accepted to a summer academy makeschool.com/summer-academy but I lack funding, if you know someone who can help me out or yourself have time to help out a good cause pls check me out here and share among your friends, love you, this means the world to me


    everything is explained in the link - http://t.co/xpvtrQEjz3

    I'm using tilt to crowd fund money which means - until I tilt no money will be taken from your bank account

    THANK YOU SO MUCH FOR ANY EFFORT MADE TOWARDS HELPING ME REACH MY GOAL!

  22. Looking to join/form a game dev team

    passionate about programming, looking to start building a portfolio


    Hi there. i have been an amateur programmer for about 10 years, mainly java. dabbled a bit with c++, dabbled a bit more with an arduino and a tiny bit with html. made a few **simple** console style games using arrays of chars to represent walls, monsters, etc. currently trying to wrap my head around java swing.

    I've loved programming for years, went to college for a bit for it. been in the navy working with nuclear reactors though and haven't had a ton of time to code until very recently.

    Anyways, that's me. sorry if im posting in wrong spot. I'm in a hurry at the moment but just had to start trying to join some team. my programming skills are probably minimal but I am very determined. I would prefer to join or start a team working on a 2D rpg style game but im open to many options, games are not a requirement, just a preference. shoot me a line if your interested. thanks for reading :D

  23. The OpenGL State Conundrum

    Introduction


    Over the years, OpenGL has accumulated a colossal amount of global state. Rather than taking heaps of parameters for each and every function call, OpenGL relies on a large amount of parameters being *bound* or *set* to context-wide binding points before each call. These range from bound programs, buffers, textures and samplers, to fixed-function blending, depth testing and framebuffers.

    From my travels around the wider regions of the Internet, I have found that most games and their respective engines use some for of *state management system*. In my opinion, this layer should perform two important things:

    • Check that the required state changes are made before relevant OpenGL commands. (eg: glBindBuffer before glBufferData)
    • Ensure that those state changes aren't performed more than once.
    • Provide type-safe enums and object handles (possibly wrapped inside objects if you wish to go fully OOP)

    In this blog post I'll aim to outline some of the issues with OpenGL's state machine architecture and provide some different solutions for robust state management.

    The Problem With Global State


    It is important to understand the problem of hidden global state, and thus I have prepared a small code snippet that involves creating a Vertex Buffer and a Vertex Array and linking them together. I'll use this code sample as a basis for my gripes about the current state of this issue (pardon the pun).

    GLuint vertexArrayHandle;
    glGenVertexArrays(1, &amp;vertexArrayHandle);
    glBindVertexArray(vertexArrayHandle);
    
    GLuint vertexBufferHandle;
     
    glGenBuffers(1, &amp;vertexBufferHandle);
     
    glBindBuffer(GL_ARRAY_BUFFER, vertexBufferHandle);
    
    glBufferData(GL_ARRAY_BUFFER, sizeof(bufferData), bufferData, GL_STATIC_DRAW);
    
    glEnableVertexAttribArray(0);
    
    glVertexAttribPointer(
       0,
       3,
       GL_FLOAT,
       GL_FALSE,
       0,
       (void*)0
    );
    
    glBindVertexArray(0);
    

    For the average OpenGL programmer, this is dead-easy stuff. However if we take a step back for a moment to look at the workings inside OpenGL's big black stateful box, we see a labyrinth of issues.

    Bind to Use and Edit


    Bind-to-edit is a classic OpenGL paradigm employed by many of OpenGL's objects. Instead of referencing the object directly within functions like glBufferData and glUniform*, one must first bind it to one of several binding points using functions like glBindBuffer and glUseProgram.

    GL_ARRAY_BUFFER is one such binding point, and is used in the above code snippet.

    The problem with the bind-to-edit system is that we have introduced a bunch of global variables into our code. What global variables, you may ask? OpenGL hides them from us, but every call to glBindBuffer or glUseProgram is essentially changing a global variable (or more accurately a variable global to the current OpenGL context).

    Singletons are supposedly 'better' than static methods but are in fact crude masks for the real evil that lies within. The same applies with OpenGL's state. The fancy calls to glBind*** make look nicer than global variables, but they are really the same evil.

    Direct State Access


    Direct State Access is an interesting extension that has just recently been integrated into core OpenGL 4.5. It aims to solve some of the above issues through creating new OpenGL functions such as glNamedBufferData which take an explicit object handle instead of relying on the binding and unbinding.

    Although in the long term this will fix many of the issues that plague OpenGL, at the moment this extension/4.5 feature is too new to be used in production.

    Using the Code


    (Optional) If your article is about a piece of code create a small description about how the code works and how to use it.

    /* Code block here */
    

    Interesting Points


    Did you stumble upon any weird gotchas? .. things people should look out for? How would you describe your experience writing this article.

    VertexArray container = new VertexArray();
    
    VertexBuffer buffer = new VertexBuffer(VertexBuffer.Type.ARRAY_BUFFER, VertexBuffer.Usage.STATIC_DRAW);
    buffer.setData(bufferData);
    
    container.attach(buffer, new VertexAttribute[&#93; { new VertexAttribute(0, 3, Type.FLOAT, 0, 0);
    

    Conclusion


    Wrap up any loose ends for your article. Be sure to restate what was covered in the article. You may also suggest additional resources for the reader to check out if desired.

    Article Update Log


    Keep a running log of any updates that you make to the article. e.g.

    6 Feb 2020: Added additional code samples
    4 Feb 2020: Initial release

  24. Looking for an Artist...

    I need a dedicated artist to help me with a game I'm making.

    Someone who can devote time to this project and who preferably has experience with 2D sprites.

    If interested, shoot me an email and we'll discuss specifics.
    Note, I will ask for examples of your work just so I know what I'm dealing with.

    Be advised, this is not a paying project. This is simply for fun and experience.

    Thank you

  25. [iOS] One or Two?

    Hello fellow gamers,

    I'm new here but I'd like to announce the release of my first game. It was made using Apple's new programming language Swift. It took me around 3-4 months to plan, design and develop it. It would be awesome if you could try it and give me some feedback or suggestions on how to improve it.
    I'm also glad to answer any questions regarding its development.

    https://itunes.apple.com/us/app/one-or-two/id925772537?ls=1&mt=8



    One or Two is a fun and exciting Indie game challenging your reaction.

    The gameplay is pretty simple, but it's hard to master. Take a look at the object in the circle and find out, how many objects of that kind you can find in the game area. Then press the corresponding button, One or Two?

    GAMEPLAY
    There are 100 levels ready to be played, each harder than the previous one. Try to be as fast as possible without doing any mistakes. Set a new high score and discover all elements!

    DESIGN
    One or Two offers a gorgeous user interface: hand-picked colors and clean shapes create a unique style. You can also choose to turn on Dark Mode, providing a new experience and making playing at night even better.

    GAME CENTER
    Play the game and compare your score to players all around the world. Additionally, One or Two offers several achievements for you to unlock. There are even some hidden ones that can't wait to be discovered. Share your high score on Facebook or Twitter and challenge your friends!

    What level can you reach?
    Download One or Two right now and find out!

    • Apr 27 2015 07:10 AM
    • by