Jump to content
  • Advertisement
  • You can syndicate your blog to the GameDev.net community.
    Learn how here.

Blogs

 

Gorgon Update #9

This is a small update that contains a few more fixes and additions.

As always, to get the latest version, go to the Github Releases page and download version 3.0.87.290. As always, there is a commit log on the release stating what changes were made.
View the full article

Tape_Worm

Tape_Worm

Spin! has been released!

Hey everyone! Spin! has been released and you can try it out! It's available here: https://www.kongregate.com/games/Alienplay/spin
https://www.newgrounds.com/portal/view/740043 https://alienplay.itch.io/spin
https://gamejolt.com/games/falling-ball/438641
Can't wait to hear what you think about it! Any feedback is greatly appreciated!

AlienplayGames

AlienplayGames

 

Doom Challenge, Doomed Attempt.

I have estimated that I will not be able to finish this challenge in time. I have started it too late and without a clear direction from the beginning. I managed to finish the necromancer character, the AI and most of the map. But I had some problems with projectiles going through walls and sometimes going in weird directions without any kind of apparent reason why. I have decided not to release the game as it is because it has some broken gameplay mechanics and I'd rather not release the game like this. I might continue working on it when I have more time and not be busy with other things as well. Well, it was fun anyway and congrats to the community members who succeeded in this challenge! Cheers.

Hermetix

Hermetix

 

Coffee Tasting

Sometimes my life is pretty cool. Monday I went to a coffee tasting class by myself. I tried to talk a friend into going with but she wasn’t feeling well. So coffee is grown in South America, Africa, and it’s starting to be grown in China. The reason why quality coffee is so expensive is that Asia(China and Japan mainly) has kinda discovered how awesome coffee is in the last 10 years or so. There is a higher demand than there is supply because of this. It’s why China is starting to try and grow their own coffee. The class was held at a little coffee shop near me called Drachenfutter which is a German word meaning to feed your dragon. It’s a colloquialism which refers to getting your significant other food when they are angry at you. German has so many cool words. I found out about the class on FB. So I walk in and the place is deserted other than staff and one other gal. I’m only a couple minutes early. The place is a classic coffee shop with couches and a fireplace and board games. I’m of course like “Hi, I’m here for the coffee tasting class?” The owner comes over and is like I’m so excited you’re here. I’m just kinda sitting there watching them get set up. They’re bringing out pots of hot water. The guy teaching the class is setting out 8 tiny bowls with coffee grounds in them. He looks like a normal guy come to find out he has a 2.6 million dollar insurance policy on his tongue! He’s the owner of the company that the coffee shop buys their coffee from. It’s like his second business. He started out in printing and had a really successful company but got super burnt out, just dreaded going to work. Every morning though he’d see these people who were happy to be going to work…at the coffee shop across from his company. So he sold his company and started a coffee roasting company. Every morning the guy and some of his employees taste the coffee that’s been roasted. It’s kind of a quality control thing. Coffee tasting is actually called cupping. The process is kinda like how you taste whisky more so than wine. You start by smelling the grounds. Then you add some hot water and smell it again. Then you take a spoon very similar to a soup spoon and kinda pass it through the coffee and smell the back of it, rinsing it off in hot water between cups. Then you scoop up some of the coffee in the spoon and you slurp it. Yes slurp it. Me, one other girl, and the coffee shop’s employees are all just standing around a table slurping coffee out of soup spoons;) It was kinda hilarious. There were 4 different coffees, one from china, one from Africa, and I think two from South America. What’s interesting is that coffee has different flavors depending on where it is grown due to the different soils. So one of the coffees had a lovely earthy dark chocolate taste, two were kinda acidic and fruity, and the last one was just kinda mild. An interesting fact men 18-34ish tend to prefer more acidic coffees while after that they tend to like less acidic. Women 18-35ish tend to prefer earthier darker coffees. I learned so much about coffee and all the steps that go into getting to the point of coffee grounds. It was a lot of fun and I’m definitely considering going to the next one which is about paring foods and coffee. The post Coffee Tasting appeared first on Gilded Octopus.
View the full article

Doom - Fall 2019 challenge participation

So I've spent my spare time the last couple of months finalising small3d framework's migration to Vulkan and also making sure the framework runs on iOS and Android. I got my "Avoid the Bug" game running on my mobile phone and my iPad (in addition to the desktop OSes where it has already been working for a long time). I thought that I wouldn't have any time left for the fall 2019 challenge. Nonetheless, I managed to put a little something together. The game is called Gloom. It must be the ugliest game I have ever made, but hey, it runs on Vulkan and it has taken my little small3d framework to where it has never been before. I have a player moving through a map (which is read from a text file) while eliminating enemies. All of this runs on the standard small3d version 1.8 with no modification of the framework itself whatsoever. So anyway, I am not saying I hope you like the game (you probably won't) but I do hope it is good enough to fulfill the challenge requirements :)

dimi309

dimi309

 

Refinery model

Another building to share, the refinery!  This time I had an idea what shape I wanted (#1) but created additional drawings because you always want to be open to other idess before a final decision.  No matter the shape, pipes and tanks had to be in the design.  In the end the shape I wanted was picked but we went for pipes that were more fitting for war (#6). Same 3d process. The low poly model is created in blender and texture's added in 3dcoat. I enjoyed adding the bolt and stain details on the pipes.  Full story »Original post blogged on Rank: Warmaster Dev Blog.
View the full article

LordArt

LordArt

 

AWT GUI Facade (6): Mouse and Game Loop

After loading a level, I now propose to add interaction with the use of a mouse. This will be an opportunity to see two other patterns: the Observer Pattern to handle mouse events, and the Game Loop Pattern for synchronization between controls, updates, and display. This post is part of the AWT GUI Facade series Mouse Facade To add the management of the mouse to the facade, I propose to introduce a new Mouse interface that contains all the functions related to the mouse: Separating the interface for the mouse from the general interface of the facade has two advantages: lighten the general interface and allow the simultaneous management of several mice. As far as methods are concerned, I chose the simplest API possible: isButtonPressed() method: returns true if a button is pressed; getX() and getY() methods: return the (x, y) coordinates of the cursor in the window This API is also lowlevel, to match what most graphic libraries offer. In addition, it allows having at any time the complete state of the mouse, which is often necessary for video games. For the general GUIFacade interface, a new getMouse() method is added to return an implementation of the Mouse interface. Mouse handling in AWT To implement this interface, AWT library included in the standard Java library is still used. This one offers a high-level API, which meets the needs of office applications. It is based on the Observer Pattern, which allows an element to observe (or listen to) another element, and to be notified when an event occurs. In the case of the mouse, these events are for example the pressure of a button or the movement of the cursor. This API is divided into several interfaces, for example, the interface MouseListener allows to manage the events related to the buttons: The MouseListener interface contains the methods implemented by the observer: for example, when a button is pressed, the mousePressed() method is called and the observer can then act accordingly. The Component class, which is the superclass of many graphic components within AWT, can be observed by anyone who requests it thanks to the addMouseListener() method. For the example of this article, it is the Canvas used to make the level of the game that is observed: each action of the mouse in its display area causes calls to the methods of the MouseListener interface. Facade implementation I propose that the implementation of the Mouse interface of the facade takes the form of an AWTMouse class: The class implements the Mouse, MouseListener, and MouseMotionListener interfaces. The first methods provide information about the mouse (contained in its attributes): public class AWTMouse implements Mouse, MouseListener, MouseMotionListener { private final boolean[] buttons; private int x; private int y; public AWTMouse() { buttons = new boolean[4]; } @Override public boolean isButtonPressed(int button) { if (button >= buttons.length) { return false; } return buttons[button]; } @Override public int getX() { return x; } @Override public int getY() { return y; } ... The following ones respond to mouse events and update mouse information: @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if (e.getButton() <= 3) { buttons[e.getButton()] = true; } } @Override public void mouseReleased(MouseEvent e) { if (e.getButton() <= 3) { buttons[e.getButton()] = false; } } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } @Override public void mouseDragged(MouseEvent e) { x = e.getX(); y = e.getY(); } @Override public void mouseMoved(MouseEvent e) { x = e.getX(); y = e.getY(); } } Finally, the AWTWindow class contains as before the canvas, and this one is used to “listen” the events of the mouse: public void init(String title, int width, int height) { ... mouse = new AWTMouse(); canvas.addMouseListener(mouse); canvas.addMouseMotionListener(mouse); } Game Loop It only remains to exploit this new interface in an example. To do this, I propose to introduce the Game Loop Pattern in its simplest version (without multi-threaded considerations). It is based on a set of methods that can be grouped together in the same class: The init() method is called at startup to initialize the game and its data; The processInput() method is called at each iteration of the game to manage the controls (keyboard, mouse, …). In short, its main role is to transform the user’s “instructions” into more abstract “orders” or “commands” that the game engine knows how to interpret. Considering time, these operations go to the rhythm of the user. The update() method applies changes to game data based on various sources, such as commands produced by user controls or operations that must be applied to each update. Considering time, these operations go to the speed of the game engine. The render() method handles display. This method will most often order or transfer data on the graphics card, the latter dealing with very low-level tasks at the pixel level. Considering time, these operations go to the refresh rate of the screen (default 60Hz). The run() method calls the previous ones and contains the actual game loop. In this example, I don’t implement all the elements required to meet all these principles. I propose here a basic form of this pattern, sufficient to begin to understand all these notions. For the init() method, we build the two layers and initialize the window: public void init(Level level) { this.level = level; backgroundLayer = gui.createLayer(); backgroundLayer.setTileSize(level.getTileWidth(),level.getTileHeight()); backgroundLayer.setTexture(level.getTilesetImage(0)); backgroundLayer.setSpriteCount(level.getWidth()*level.getHeight()); groundLayer = gui.createLayer(); groundLayer.setTileSize(level.getTileWidth(),level.getTileHeight()); groundLayer.setTexture(level.getTilesetImage(1)); groundLayer.setSpriteCount(level.getWidth()*level.getHeight()); gui.createWindow("Exemple de contrôle avec la souris", scale*level.getTileWidth()*level.getWidth(), scale*level.getTileHeight()*level.getHeight()); } For the processInput() method, if the following conditions are met: the left button is pressed; there is a cell of the level under the cursor; the tile of this cell is in the second set of tiles (the one of the second layer), then we put a tile with grass (this will erase all buildings in the map): public void processInput() { Mouse mouse = gui.getMouse(); if (mouse.isButtonPressed(MouseEvent.BUTTON1)) { int x = mouse.getX() / (scale*level.getTileWidth()); int y = mouse.getY() / (scale*level.getTileHeight()); if (x >= 0 && x < level.getWidth() && y >= 0 && y < level.getHeight()) { if (level.getTileset(x,y) == 1) { level.setTileset(x,y,0); level.setTile(x,y,new Point(7,0)); } } } } For the update() method, the content of the level data is used to define the sprite textures. It is the same as in the previous post, except that this operation is repeated regularly: public void update() { for(int y=0;y<level.getHeight();y++) { for(int x=0;x<level.getWidth();x++) { int index = x + y * level.getWidth(); backgroundLayer.setSpriteLocation(index, new Rectangle(scale*x*level.getTileWidth(), scale*y*level.getTileHeight(), scale*level.getTileWidth(), scale*level.getTileHeight())); if (level.getTileset(x, y) == 0) { Rectangle tile = new Rectangle(level.getTile(x, y), new Dimension(1,1)); backgroundLayer.setSpriteTexture(index, tile); } else { backgroundLayer.setSpriteTexture(index, null); } } } for(int y=0;y<level.getHeight();y++) { for(int x=0;x<level.getWidth();x++) { int index = x + y * level.getWidth(); groundLayer.setSpriteLocation(index, new Rectangle(scale*x*level.getTileWidth(), scale*(y-1)*level.getTileHeight(), scale*level.getTileWidth(), scale*2*level.getTileHeight())); if (level.getTileset(x, y) == 1) { Rectangle tile = new Rectangle(level.getTile(x, y), new Dimension(1,2)); groundLayer.setSpriteTexture(index, tile); } else { groundLayer.setSpriteTexture(index, null); } } } } The render() method just draws the two layers: public void render() { if (gui.beginPaint()) { gui.drawLayer(backgroundLayer); gui.drawLayer(groundLayer); gui.endPaint(); } } Finally, the run() method contains the game loop that calls the other methods at most 60 times per second: public void run() { int fps = 60; long nanoPerFrame = (long) (1000000000.0 / fps); long lastTime = 0; while(!gui.isClosingRequested()) { long nowTime = System.nanoTime(); if ((nowTime-lastTime) < nanoPerFrame) { continue; } lastTime = nowTime; processInput(); update(); render(); long elapsed = System.nanoTime() - lastTime; long milliSleep = (nanoPerFrame - elapsed) / 1000000; if (milliSleep > 0) { try { Thread.sleep (milliSleep); } catch (InterruptedException ex) { ex.printStackTrace(); } } } gui.dispose(); } This basic implementation of the Game Loop pattern does not respect all its principles. There is no real notion of control, and it will be difficult to run each part at different rates. In addition, in terms of design, there are also questionable choices, like the Level class that serves as both a level loader, storage for the level, and a form of buffer. Through future posts, I will present all that is needed to achieve more effective implementations. The code of this post can be downloaded here: awtfacade06.zip To compile: javac com/learngameprog/awtfacade06/Main.java
To run: java com.learngameprog.awtfacade06.Main The post AWT GUI Facade (6): Mouse and Game Loop appeared first on Design Patterns and Video Games.
View the full article

phylyp

phylyp

 

plane game

I am making a game where two planes shoot at each other to start with. here is my code so far. #include <stdlib.h> #include <freeglut.h> #include <iostream> #include "SOIL.h" #include <math.h> GLuint texture[8]; const float PI = 3.14159; float rotate = 0.125f, vertical = 0.0001f, horizontal = 0.0001f, horizontal_one = 0.0001f, vertical_one = 0.0001f, rotate_one = 0.125f, up = 0.0001f, angle = 0.0f, screen = 0.001f, up_two=0.0001f; int flag[4] = { 0 }; static int animate; static int animate_two; bool checkCollide(float x, float y, float oWidth, float oHeight, float xTwo, float yTwo, float oTwoWidth, float oTwoHeight) { // AABB 1 float x1Min = x; float x1Max = x + oWidth; float y1Max = y + oHeight; float y1Min = y; // AABB 2 float x2Min = xTwo; float x2Max = xTwo + oTwoWidth; float y2Max = yTwo + oTwoHeight; float y2Min = yTwo; // Collision tests if (x1Max < x2Min || x1Min > x2Max) return false; if (y1Max < y2Min || y1Min > y2Max) return false; return true; } void SetupRC(void) { glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glOrtho(-10.0f, 10.0f, -10.0f, 10.0f, 1.0f, -1.0f); } int LoadGLTextures() { texture[0] = SOIL_load_OGL_texture ( "enemyplane.png", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_POWER_OF_TWO ); if (texture[0] == 0) return false; texture[1] = SOIL_load_OGL_texture ( "enemyplane.png", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_POWER_OF_TWO ); if (texture[1] == 0) return false; texture[2] = SOIL_load_OGL_texture ( "bullet.png", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_POWER_OF_TWO ); if (texture[2] == 0) return false; texture[3] = SOIL_load_OGL_texture ( "coll.png", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_POWER_OF_TWO ); if (texture[3] == 0) return false; glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); return true; } void handleSpecialKeypress(int key, int x, int y) { switch (key) { case GLUT_KEY_UP: if (rotate_one == 0.875f) { vertical_one -= 0.25f; horizontal_one -= 0.25f; } if (rotate_one == 0.625f) { vertical_one -= 0.25f; horizontal_one += 0.25f; } if (rotate_one == 0.125f) { vertical_one += 0.25f; horizontal_one -= 0.25f; } if (rotate_one == 0.375f) { vertical_one += 0.25f; horizontal_one += 0.25f; } if (rotate_one == 0.75f) { vertical_one -= 0.25f; } if (rotate_one == 0.25f) { vertical_one += 0.25f; } if (rotate_one == 0.5f) { horizontal_one += 0.25f; } if (rotate_one == 0.0f) { horizontal_one -= 0.25f; } if (vertical_one >= 9.5f) { vertical_one = 9.5f; } if (vertical_one <= -9.5f) { vertical_one = -9.5f; } if (horizontal_one <= -14.5f) { horizontal_one = -14.5f; } if (horizontal_one >= 4.5f) { horizontal_one = 4.5f; } break; case GLUT_KEY_DOWN: if (rotate_one == 0.875f) { vertical_one += 0.25f; horizontal_one += 0.25f; } if (rotate_one == 0.625f) { vertical_one += 0.25f; horizontal_one -= 0.25f; } if (rotate_one == 0.375f) { vertical_one -= 0.25f; horizontal_one -= 0.25f; } if (rotate_one == 0.125f) { vertical_one -= 0.25f; horizontal_one += 0.25f; } if (rotate_one == 0.25f) { vertical_one -= 0.25f; } if (rotate_one == 0.75f) { vertical_one += 0.25f; } if (rotate_one == 0.5f) { horizontal_one -= 0.25f; } if (rotate_one == 0.0f) { horizontal_one += 0.25f; } if (vertical_one >= 9.5f) { vertical_one = 9.5f; } if (vertical_one <= -9.5f) { vertical_one = -9.5f; } if (horizontal_one >= 4.5f) { horizontal_one = 4.5f; } if (horizontal_one <= -14.5f) { horizontal_one = -14.5f; } break; case GLUT_KEY_RIGHT: rotate_one += 0.125f; if (rotate_one >= 1.0f) { rotate_one = 0.0f; } break; case GLUT_KEY_LEFT: rotate_one -= 0.125f; if (rotate_one <= -0.125f) { rotate_one = 0.875f; } break; } glutPostRedisplay(); } void shoot() { up += 0.5f; if (up >= 15.0f) { animate = 0; up = 0.0f; glutIdleFunc(NULL); } glutPostRedisplay(); } void shoot_two() { up_two += 0.5f; if (up_two >= 15.0f) { animate_two = 0; up_two = 0.0f; glutIdleFunc(NULL); } glutPostRedisplay(); } void handleKeypress(unsigned char key, int x, int y) { switch (key) { case 27: exit(0); break; case 's': if (animate) { glutIdleFunc(shoot); } else { glutIdleFunc(NULL); } break; case ' ': if (animate_two) { glutIdleFunc(shoot_two); } else { glutIdleFunc(NULL); } break; case 97: rotate += 0.125f; if (rotate >= 1.0f) { rotate = 0.0f; } break; case 100: rotate -= 0.125f; if (rotate <= -0.125f) { rotate = 0.875f; } break; case 119: if (rotate == 0.875f) { vertical -= 0.25f; horizontal += 0.25f; } if (rotate == 0.625f) { vertical -= 0.25f; horizontal -= 0.25f; } if (rotate == 0.125f) { vertical += 0.25f; horizontal += 0.25f; } if (rotate == 0.375f) { vertical += 0.25f; horizontal -= 0.25f; } if (rotate == 0.75f) { vertical -= 0.25f; } if (rotate == 0.25f) { vertical += 0.25f; } if (rotate == 0.5f) { horizontal -= 0.25f; } if (rotate == 0.0f) { horizontal += 0.25f; } if (vertical >= 9.5f) { vertical = 9.5f; } if (vertical <= -9.5f) { vertical = -9.5f; } if (horizontal <= -4.5f) { horizontal = -4.5f; } if (horizontal >= 14.5f) { horizontal = 14.5f; } break; case 120: if (rotate == 0.875f) { vertical += 0.25f; horizontal -= 0.25f; } if (rotate == 0.625f) { vertical += 0.25f; horizontal += 0.25f; } if (rotate == 0.375f) { vertical -= 0.25f; horizontal += 0.25f; } if (rotate == 0.125f) { vertical -= 0.25f; horizontal -= 0.25f; } if (rotate == 0.25f) { vertical -= 0.25f; } if (rotate == 0.75f) { vertical += 0.25f; } if (rotate == 0.5f) { horizontal += 0.25f; } if (rotate == 0.0f) { horizontal -= 0.25f; } if (vertical >= 9.5f) { vertical = 9.5f; } if (vertical <= -9.5f) { vertical = -9.5f; } if (horizontal <= -4.5f) { horizontal = -4.5f; } if (horizontal >= 14.5f) { horizontal = 14.5f; } break; } glutPostRedisplay(); } void drawcollision_one() { glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, texture[3]); glBegin(GL_POLYGON); glTexCoord3f(0.0f + screen, 0.0f, 0.0f); glVertex3f(0.5f, -0.5f, 0.0f); glTexCoord3f(0.167f + screen, 0.0f, 0.0f); glVertex3f(0.5f, 0.5f, 0.0f); glTexCoord3f(0.167f + screen, 1.0f, 0.0f); glVertex3f(-0.5f, 0.5f, 0.0f); glTexCoord3f(0.0f + screen, 1.0f, 0.0f); glVertex3f(-0.5f, -0.5f, 0.0f); glEnd(); glDisable(GL_TEXTURE_2D); } void timer(int val) { screen += 0.1667f; if (screen >= 1.0f) { screen = 1.0f; } glutPostRedisplay(); glutTimerFunc(500, timer, 0); } void coll_plane_one() { //draw bullet float x = 5.0f+horizontal_one; float y = 0.0f+vertical_one; float oWidth = 0.125f; float oHeight = 0.125f; //draw plane float xTwo = -5.0f+horizontal+up_two; float yTwo = 0.0f+vertical; float oTwoWidth = 1.0f; float oTwoHeight = 1.0f; if (checkCollide(x, y, oWidth, oHeight, xTwo, yTwo, oTwoWidth, oTwoHeight) == 1) { drawcollision_one(); } } void drawplane_one() { glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, texture[0]); glBegin(GL_POLYGON); glTexCoord3f(0.0f + rotate, 0.0f, 0.0f); glVertex3f(-5.5f + horizontal, -0.5f + vertical, 0.0f); glTexCoord3f(0.125f + rotate, 0.0f, 0.0f); glVertex3f(-5.5f + horizontal, 0.5f + vertical, 0.0f); glTexCoord3f(0.125f + rotate, 1.0f, 0.0f); glVertex3f(-4.5f + horizontal, 0.5f + vertical, 0.0f); glTexCoord3f(0.0f + rotate, 1.0f, 0.0f); glVertex3f(-4.5f + horizontal, -0.5f + vertical, 0.0f); glEnd(); glDisable(GL_TEXTURE_2D); } void drawplane_two() { glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, texture[1]); glBegin(GL_POLYGON); glTexCoord3f(0.0f + rotate_one, 0.0f, 0.0f); glVertex3f(5.5f + horizontal_one, -0.5f + vertical_one, 0.0f); glTexCoord3f(0.125f + rotate_one, 0.0f, 0.0f); glVertex3f(5.5f + horizontal_one, 0.5f + vertical_one, 0.0f); glTexCoord3f(0.125f + rotate_one, 1.0f, 0.0f); glVertex3f(4.5f + horizontal_one, 0.5f + vertical_one, 0.0f); glTexCoord3f(0.0f + rotate_one, 1.0f, 0.0f); glVertex3f(4.5f + horizontal_one, -0.5f + vertical_one, 0.0f); glEnd(); glDisable(GL_TEXTURE_2D); } void drawbullet_one() { glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, texture[2]); glPushMatrix(); if (rotate == 0.25f) { angle = PI / 2.0f; } if (rotate == 0.75f) { angle = (3.0f*PI) / 2.0f; glTranslatef(0.0f, -1.0f, 0.0f); } if (rotate == 0.5f) { angle = PI; glTranslatef(-0.55f, -0.5f, 0.0f); } if (rotate == 0.0f) { angle = 0.0f; glTranslatef(0.55f, -0.5f, 0.0f); } if (rotate == 0.125f) { angle = PI / 4.0f; glTranslatef(0.35f, -0.15f, 0.0f); } if (rotate == 0.375f) { angle = (3.0f*PI) / 4.0f; glTranslatef(-0.35f, -0.15f, 0.0f); } if (rotate == 0.625f) { angle = (5.0f*PI) / 4.0f; glTranslatef(-0.35f, -0.75f, 0.0f); } if (rotate == 0.875f) { angle = (7.0f*PI) / 4.0f; glTranslatef(0.35f, -0.75f, 0.0f); } glTranslatef(0.0f, 0.5f, 0.0f); float r = sqrt(pow(1.0f, 2) + pow(1.0f, 2)); glBegin(GL_POLYGON); glTexCoord3f(0.0f, 0.0f, 0.0f); glVertex3f(-4.9375f+cos(angle)*r*up+horizontal, 0.0625f+sin(angle)*r*up+vertical, 0.0f); glTexCoord3f(1.0f, 0.0f, 0.0f); glVertex3f(-5.0625f+cos(angle)*r*up+horizontal, 0.0625f+sin(angle)*r*up+vertical, 0.0f); glTexCoord3f(1.0f, 1.0f, 0.0f); glVertex3f(-5.0625f+cos(angle)*r*up+horizontal, -0.0625f+sin(angle)*r*up+vertical, 0.0f); glTexCoord3f(0.0f, 1.0f, 0.0f); glVertex3f(-4.9375f+cos(angle)*r*up+horizontal, -0.0625f+sin(angle)*r*up+vertical, 0.0f); glEnd(); glPopMatrix(); glDisable(GL_TEXTURE_2D); } void drawbullet_two() { glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, texture[2]); glPushMatrix(); if (rotate_one == 0.25f) { angle = PI / 2.0f; } if (rotate_one == 0.75f) { angle = (3.0f*PI) / 2.0f; glTranslatef(0.0f, -1.0f, 0.0f); } if (rotate_one == 0.5f) { angle = 0.0f; glTranslatef(0.55f, -0.5f, 0.0f); } if (rotate_one == 0.0f) { angle = PI; glTranslatef(-0.55f, -0.5f, 0.0f); } if (rotate_one == 0.125f) { angle = (3.0f*PI) / 4.0f; glTranslatef(-0.35f, -0.15f, 0.0f); } if (rotate_one == 0.375f) { angle = PI / 4.0f; glTranslatef(0.35f, -0.15f, 0.0f); } if (rotate_one == 0.625f) { angle = (7.0f*PI) / 4.0f; glTranslatef(0.35f, -0.75f, 0.0f); } if (rotate_one == 0.875f) { angle = (5.0f*PI) / 4.0f; glTranslatef(-0.35f, -0.75f, 0.0f); } glTranslatef(0.0f, 0.5f, 0.0f); float r = sqrt(pow(1.0f, 2) + pow(1.0f, 2)); glBegin(GL_POLYGON); glTexCoord3f(0.0f, 0.0f, 0.0f); glVertex3f(5.0625f + cos(angle)*r*up_two + horizontal_one, 0.0625f + sin(angle)*r*up_two + vertical_one, 0.0f); glTexCoord3f(1.0f, 0.0f, 0.0f); glVertex3f(4.9375f + cos(angle)*r*up_two + horizontal_one, 0.0625f + sin(angle)*r*up_two + vertical_one, 0.0f); glTexCoord3f(1.0f, 1.0f, 0.0f); glVertex3f(4.9375f + cos(angle)*r*up_two + horizontal_one, -0.0625f + sin(angle)*r*up_two + vertical_one, 0.0f); glTexCoord3f(0.0f, 1.0f, 0.0f); glVertex3f(5.0625f + cos(angle)*r*up_two + horizontal_one, -0.0625f + sin(angle)*r*up_two + vertical_one, 0.0f); glEnd(); glPopMatrix(); glDisable(GL_TEXTURE_2D); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); glGenTextures(8, &texture[8]); drawplane_one(); drawplane_two(); drawbullet_one(); drawbullet_two(); coll_plane_one(); glutSwapBuffers(); } int main(int argc, char* argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowPosition(500, 300); glutInitWindowSize(800, 600); glutCreateWindow("1945"); glutTimerFunc(500, timer, 0); glutSpecialFunc(handleSpecialKeypress); glutKeyboardFunc(handleKeypress); glutDisplayFunc(display); SetupRC(); LoadGLTextures(); glutMainLoop(); return 0; }  

phil67rpg

phil67rpg

 

This Week in GameGuru - 10/14/2019

My apologies for the late updates.  It's been an absolute nightmare dealing with some of my recent work changes so this has unfortunately dropped massively in priority.

GameGuru News The Monthly newsletter discussed my book being available. Thanks TGC - I appreciate it greatly.
There's also a free version of GG now, though it's a test version with a limited time of access.  Should help entice new users.
There were some minor fixes to the PP edition, which is essentially using the latest, most up to date version. Notably there was a load/save Game Stats fix which should help games that make it into production.

What's Good in The Store Lots of new things are available!  One of which is of course some of the Cyberpunk Noir assets from my book materials!



If you are NOT a purchaser of the book but want some of the static assets (weapons are on the way, once I untangle a few things with free time I don't have currently) then feel free to puchase these! If you do own the book - hit me up on discord for a free code to download it.
 

Valentin321 put together this great looking motorboat:
  There were also some scripts by corrosion, check his store page here: https://www.tgcstore.net/artist/221852 Teabone made some really well priced scripts as well: https://www.tgcstore.net/artist/45855
Sula made some great looking PBR trucks - https://www.tgcstore.net/artist/157895
Fredgames77 has put up some excellent cemetery models: https://www.tgcstore.net/pack/11153
Pasquill put up a really superb armored vehicle - https://www.tgcstore.net/product/33517
AlexGCC put a number of great models up but I really like his apocalypse truck: https://www.tgcstore.net/product/33532
Northern put out a very nice VIP model with a decent array of scripts and animations making it a good value: https://www.tgcstore.net/product/33528

And for 'most interesting/innovative' item on the store in the past month or so, we have Erart's impressively weird ghost mirror. You have to watch the video to see what I mean:
https://www.youtube.com/watch?v=KFqdz1ZKZtQ

How cool is that?  Anyways, you can get your copy here: https://www.tgcstore.net/product/33521

Free Stuff
Granada made this fantastic free shotgun!


 https://forum.game-guru.com/thread/221213  - get your copy at that link.
Tarkus 1971 made some pretty excellent music available for free:  https://forum.game-guru.com/thread/213190/last
Some great scripts found their way onto the net as well such as
smallg's 'racing script' https://forum.game-guru.com/thread/207801?page=25#msg2622028
And Amenmoses's 'cold breath' script: https://forum.game-guru.com/thread/221215#msg2622148

Notably for me though is the Airplane script he posted to discord.  There's a video in the 'random acts of creativity' section of it.  It's really good stuff!

Third Party Tools and Tutorials This week there's some interesting Russian Language videos (I love auto-translate) on youtube for GameGuru: https://www.youtube.com/watch?v=F3QE9rGxKVw

And also: https://www.youtube.com/watch?v=ErNFM-AoKhE

Random Acts of Creativity (WIPs) Amenmoses is working with Bod on making GG into a flight sim.  This has to be seen to be believed at this link:  https://vimeo.com/366328897
https://www.youtube.com/watch?v=0Zgarg-algM - Bonesy's Cyberfi updates look good but the colors are still painful to me.  I realize it's the style, of course, it's just hard for me to watch. That said, it has potential so hopefully he'll keep refining it
I'm happy to see Honkeyboy has revived his galaxy-hopping game. While it lacks polish the core components look really great and I'm looking forward to seeing his future work on this! 


 https://forum.game-guru.com/thread/221222

Dietara got some video updates.  This blog post is already really saturated though so I can't post much more safely - so here's a link to where you can find some more:     https://forum.game-guru.com/thread/220994?page=1#msg2621936

In My Own Works I want nothing more than to work on GameGuru projects I have outstanding but between the end stages of a basement remodel, a new baby, work woes, and the myriad other things clutching me I simply can't spare the time.  On my list of things I want to get done by the end of the year:
   - Some new script releases for the store
   - Get those @#$% weapons posted to the store
   - Make some new space skies
   - Work on my own game project

Lastly, thanks to everyone who has supported me by purchasing my book.  I'm going through some hard times right now and it's good to know that the year  of time it took me to make that is seeing some use by more people than I expected.


View the full article

Bolt-Action Gaming

Bolt-Action Gaming

 

DOOM: Placeholders

Currently, the only "playable" level is still full of placeholders - I'm still hoping for having the game finished on 18th, but we will see. In worst case - there might be some place holders left (while the game would still be playable). In the meanwhile I have added: Full physics (based on Bullet), not just character controllers, but even rigid bodies are technically supported (I'm still not sure whether I will do anything with them) Ability to control behavior of entities (doors, elevators and such are possible - but I don't think I will have enough time to make art for those, so we might be limited here) Improved the speed of dynamic BVH building by about factor of 10+ (by simply going through my code and removing dumb things) Get rid of most of the limitations (like total texture size was originally limited to just 8192x8192 texels, technically this is much higher now) Finished some sort of player movement I'm kind of satisfied with I'm realistic, the competition ends in about 2 days (and as most of us - I still have to be at work during those). I personally will be glad if I manage to make the scope I wanted for proof of concept demo - that includes: Simple menu (New Game/Exit) Single level Single type of enemy Single weapon Player can die in the game and player can win the game Some sort of Doom-ish UI Some advanced ray tracing effect or two I know this isn't much (and is most likely barely covering the scope for the challenge). In the meanwhile - behold - the placeholders (and no that 0.44 GRay/s is not joking - I'm currently limited by performance of actually displaying the buffer, not ray tracing nor BVH updates at all)!

Vilem Otte

Vilem Otte

 

Frost Bite Update

Only weeks away from the launch of Frost Bite and I’m getting pretty excited:) I’ve been expanding the map because it was just a little too small which impacted the play time negatively. The new map is so huge in comparison to the old one. It’s like 6X as large. The only thing I don’t like about it is that the new map is less maze like than the old one. Which I’m going to change somewhat but there are going to be some big open areas as well. I’ve been telling more people in person about it. I’ve been getting some pretty positive responses which makes me happy. It feels a little weird to have so many details finalized. Yesterday I got the Itch.Io page for it set up. I’ve got so many little details still to do on it. Increasing the size of the map has added quite a bit of work but I think it will be better for players. The post Frost Bite Update appeared first on Gilded Octopus.
View the full article

GildedOctopusStudios

GildedOctopusStudios

GameDev - Doom Challenge - D.O.A

Sadly I've decided not to go ahead with this game challenge as planned. On Friday I finally finished my corporate year end for tax season and I have the rest of the week booked up. Prior to that I opened a new division for my company around the same time as this challenge and that has taken most of my actual time.... then when I did get free time I wasn't too inclined to sit and work on anything to be honest. I did manage to complete a weapon (meh.. wasn't too happy with it due to the time spent) and some environmental assets (modular walls, floors) and textures, but beyond that I would still have to make enemies, texture the enemies, rig the enemies, then program and level test. No way I can do that in 3 days or even a week with my current availability so I'm just going to pull the plug on this one. I'm thinking I'm going to just take a break from this all until I get my new business operations settled in. Any future timed challenges (with deadlines) I most likely will not post about unless I actually have some kind of game play video to showcase which means I was able to devote enough time as it's extremely hard for me to predict a steady schedule with work and family commitments. Heck! I still have to create my 3D Chess music track as that game has been done since June... I'm looking forward to playing other people's entries. Good luck!  

Rutin

Rutin

Pixel Devlog #3- Monsters and Mythos!

Devlog #3- Monsters and Mythos! October 15th, 2019 Connect with us on Social Media: Facebook: www.facebook.com/TumultuousProductions Twitter: https://twitter.com/TumultuousGame Join our Discord Server: Join the Yami Discord Want to Join the Project? Fill out our google forms Online Application  For more about the Studio : About Us Tumultuous Productions Check out our website for Yami! https://tumultuousproductions.site/index2.html For more about Yami: Our Game: Yami   Weekly Updates Week 3: More Creatures within Kinfallen Forest Here is a showcase of two more enemies you will encounter in the Kinfallen Forest, including a brief description and concept art created by our talented artists:  Scavenger: Thought by some to be corrupted descendants of those lost within Kinfallen Forest, the scavenger hunts for trinkets and valuables scattered along the undergrowth of the forest. It carries its belongings in an overstuffed satchel upon its back, clinging to the past memories these items possess. When spotted, they will back away and only attack when threatened, but will become emboldened when other members of its kind are nearby.
  Uprooter:  A subterranean creature of the forest, the uprooter dwells mainly within the vast root system of Kinfallen Forest, digging burrows and creating mounds of soil. Its nose resembles a forest flower, tricking passersby into a sense of security. When a traveler encroaches on its territory, it will jump out of the ground and attack with its powerful claws, sometimes throwing mounds of dirt and rock in defense.    Weekly Member Spotlight: This week, I metaphorically ‘sat down’ with Arabesco, one of our artists on the team and an incredibly talented pixel-art animator. I asked her about her process and working style to produce such amazing animations for Yami. Thanks again to Arabesco for answering our questions! Q: What is your artistic background?   A: “I began my journey into art very early on - I was around 2 when my cousin drew a cat on paper. Enchanted by the idea of creating something in paper, I decided to learn how to draw. Eventually I began to draw digitally as well and thus became fascinated with the idea of making artwork for a game. For now I am doing Visual Arts as a major in college and will possibly get a minor in graphic design.”
  Q: How did you get inspired to make art for a video game?   A: “When I was 14 or so, I found out that people could make their own games relatively easily and publish them in the internet. The catch was that you needed to make your art yourself. I did not know about sites that let you use their material for free. So I decided to do game art and thus live and learn, reading pixel art articles and whatnot as well as staring at spritesheets while figuring out how do The Experts do it.”   Q: How do you animate your art?   A: “When it comes to pixel art, I use an approach that to an extent is similar to rigging/puppeteering: putting the moving parts in their layers and moving them with edits to maintain consistency. This allows for a faster workflow. Outside of it I tend to do hand drawn animations in krita.”
  Q: Tell us briefly about yourself!   A: “I am an individual. Living in some south american country, close to the sea, I often either work on the many things I have or just stand there. Menacingly.”
  Q: What is your process for making art?   A: “I first have an idea. Then I try to think of the many ways to approach said idea. Then I materialize the concept. Once I feel it is satisfactory, I put it out.”   ~Look for our post Next week where we show concepts for the Yami planet of Raum, and concept art for one of our NPCs~   Check out our new Website: https://tumultuousproductions.site/index2.html   Remember to: Connect with us on Social Media: Facebook: www.facebook.com/TumultuousProductions Twitter: https://twitter.com/TumultuousGame Join our Discord Server: Join the Yami Discord Want to Join the Project? Fill out our google forms Online Application  For more about the Studio : About Us Tumultuous Productions Check out our website for Yami! https://tumultuousproductions.site/index2.html For more about Yami: Our Game: Yami

TumultuousProductions

TumultuousProductions

The beginnings of a solar system

Hello, I am alive. I've actually been split between projects, and I have been a little burnt out, but I am back. I decided to not force the player to only have one colony. So that means we need a solar system. In the original game, there was a squad grid that you could choose where to build colonies, and only on specific slots. However, I wanted something a little more modern. A solar system with a hex grid surrounding the planets, and you could choose from orbit where to pick. I've spent probably two weeks researching rotation and procedural planets. Shout out to Sebastian Lague and his amazing tutorial on Procedural planets on youtube that I used as a base. I couldn't find any tutorials on grids and rotating a planet, so I've had to spend the past two weeks with trial and error to figure this out, but I've finally done it. And it rotates! So if I click on a hex, it spins the planet to face the camera onto the hex I clicked on. Next step: Make the grids transparent, add some UI to pop up when a hex is clicked, have grid coordinates appear for the hexes, and start building a solar system to explore.

KrisWolfe

KrisWolfe

 

All Your Base: Building An Empire

Hello there, it's Adam again with another post about Rank:Warmaster's game systems! This time I'll be talking about bases, buildings and bots.

Base construction and management is a cornerstone of gameplay. You'll research technologies, extract and refine resources which become the ships and buildings that allow you to explore the solar system, control territory and conquer your rival corporations. But it all starts with the humble construction bot.

The game's tutorial will start you off with a single construction bot and walk you through the steps needed to build a fully functional base. The construction bot functions as an general-purpose worker; it mines ore and then processes the ore into refined materials, which are then used to construct buildings. Additional construction bots can be made to speed up construction or to expand your reach by starting a new base at another site.

Your industrial capacity is determined by three buildings. A Mine will extract ore from the ground. The ore is then send to a Refinery to be processed into refined materials. These materials can then either be used by construction bots to create additional buildings, or sent to a Factory to fabricate ships and construction bots. A construction bot will work far more efficiently when supplied with refined materials that it doesn't have to spend the time extracting and refining itself. Excess ore and refined materials can be stored in a Warehouse for future use.

All of these buildings require power, which is provided by a Generator. The larger the base and the more advanced the buildings, the larger the power requirements and thus more or more advanced Generators are needed. Turret platforms can be constructed and installed with any weapon you can produce and will fire on enemies within range, protecting your base from hostiles. Ships constructed in your factory can be assigned guard duty and will patrol around your base and intercept enemies.

Last but not least, Research Labs will produce new technologies, ship components and building designs. Each lab can research a separate project, or multiple labs can collaborate on a single project with diminishing returns to speed up the process.

A large portion of the strategy in base management will come from assessing your current situation and deciding where to spend your time and resources. If you aren't threatened by hostile neighbors, putting more into research and development will give you an advantage over your rivals in the future. If you're anticipating an attack, increasing your industrial output to boost fleet production or building additional defense turrets may take priority.  Building additional remote bases can extend your reach and provide early warning of incoming attacks, but will be a resource drain at first until they become self-sufficient.

If managing any of these systems is undesirable, there's an AI Manager that can be assigned to assume control. Base construction and research can both be automated to allow the player to focus on the aspects of the game they enjoy.  This can be advantageous as your empire grows, letting the AI manage your remote bases lets you focus on grand strategy instead of minutiae.

Rank: Warmaster will continue to increase in scope, adding new building types such as sensor towers and dome shield projectors that expand your capabilities and provide new ways to play. Signing off! Original post blogged on Rank: Warmaster Dev Blog.
View the full article

LordArt

LordArt

 

A Week in WebAR: London’s Waterloo Station, Porsche, Clarins, EVA Air and a Spider-Man: Far From…

A Week in WebAR: London’s Waterloo Station, Porsche, Clarins, EVA Air and a Spider-Man: Far From Home Activation A Week in WebAR is a new 8th Wall blog series that highlights innovative brand experiences created by our customers and partners. https://medium.com/media/58fd9e884062be301494fc3705b95884/hrefThe 2020 Porsche Taycan Porsche is running a print advertisement that appears in the September and October issues of German magazine Auto Motor Sport for the 2020 Porsche Taycan, which serves as an image target for a WebAR experience. Once activated, the ad triggers a realistic 3D model of the Porsche Taycan to appear. 2020 Porsche TaycanUsers can scale, rotate, change the paint color, and even change the hub caps of the vehicle before being directed to the Porsche website to learn more. Vienna-based digital agency Innovation.rocks is behind the WebAR ad. EVA Air Teleports Us to Bangkok International airline EVA Air takes us to Thailand with its latest WebAR activation, which transforms a simple print ad into a portal to a busy Bangkok waterway. The full page advertisement appears in the September issue of Fast Company and was created by agency, Tool. Fast Company (Sept. 2019 Issue)The ad itself is actually an image target which triggers a 360-degree video to play, giving the viewer the perspective of a passenger sitting in boat. Since the video itself is immersive, the viewer is invited to peer into the magazine at various angles to explore the scene around them. Trainline Activation Takes Over London’s Bustling Waterloo Station Trainline, a UK platform for finding and booking train tickets, installed a series of 16 WebAR-activated posters around Waterloo Station which transform into live departure boards when viewed through a smartphone. Produced by digital agency Byte, the AR timetables also reveal a comparison of CO₂ emissions generated by each journey when traveled by a car versus train. Take a look: https://medium.com/media/be1e8f78f1ef5c7c37fb282dd224619d/hrefSpider-Man: Far From Home In partnership with Walmart, Sony Pictures launched a WebAR activation for the DVD and VUDU release of Spider-Man: Far From Home. Produced by agency Ignite, the activation initially uses the front camera to apply a face filter to the user, then switches to the back camera where 3D drones appear. Spider-Man: Far From Home WebAR experience.The user is instructed to use voice commands to launch drones and explore their surroundings to collect the data for Peter Parker, MJ and Quentin Beck. See if you can complete the mission — give it a try here! Enter the House of Clarins Cosmetics and skincare brand Clarins is known for the premium plant-based formulas behind its popular line of makeup and serums. With its House of Clarins pop-up in Singapore, visitors had the opportunity to explore activities, learn about products and play an interactive WebAR game. House of Clarins pop-up in SingaporeProduced by agency Threedom, the WebAR experience highlights the company’s use of natural ingredients by sending users on a mission to capture the exotic ingredients found in Clarins Double Serum. Once the user captures the ingredients, they are sent to learn more about Clarins. Try it out for yourself here! On the hunt for ingredients at 8th Wall HQ.Did you try any of this week’s activations? Show us on Twitter 📸 @the8thwall. A Week in WebAR: London’s Waterloo Station, Porsche, Clarins, EVA Air and a Spider-Man: Far From… was originally published in 8th Wall on Medium, where people are continuing the conversation by highlighting and responding to this story.
View the full article

8thWallDev

8thWallDev

 

Some tech blabla

I made a few Projects with networking and stuff, also on work i have alot to do with sockets and network streams, so i think and hope i picked a good setup for my task. Client Side The Client is made with Unity by using its onboard Tilemap and Sprite system. I decided for unity because i wanted to be able to reuse code from the server, specially the network code and some stuff. Server Side Authentication is managed via an extra Authserver that accepts Rest API calls on an HTTPS address, after authentication is done, the client will connect to a World server, the address of this server and some kind of token to identify the client is in the response of the API call. The Authentication server is written in C# by using .net Core 3 and ASP core The world server is also written in C# with .net Core 3 but without ASP, it shares some database code with the auth server but its an own process. Database the database is curently RethinkDB a Document oriented database that i used for some projects and anyhow like alot, i will see how it performs for that task. But i layered all database code to an Interface, so i could replace the database to any other DBMS, specially if its also document oriented it should be very easy to implement. The communication between the client and the world server is done with LiteNetLib, because its works on .net core and also in Unity. currently the netcode is not so well layered of the game or server code, but switching to another network library should also be possible as long as i can write and read bytes from/to the stream. I dont use any object serialisation for the netcode, because im just not a big fan of all that metadata coming through with serialized objects. Full authorative Servers Any player action is executed on the server, so if a player losts connection he cant do anything. If example a player wants to move from A to B, then just a message preamble and a position is being transferred, and the answer is that the Player Entity is now moving from A to B, if this is even possible. Same with buy, sell and any other player Actions. World Servers Each world server represents a Game world that can be imagined as a continent or a big Island If you travel to another continent (by ship) then you technically connect to another world server.   here some image that i just made in mspaint:

Salmakis

Salmakis

 

What is MTO?

MTO is the name of a project that i am working on since a few weeks, its just a describing name for the project. It means "Massive Trader Online". you might think: Oh noes, another MMO as first project, yes thats maybe right. But i am not creating an 3d Action MMO, its just a game about traveling a 2d pixel world with a 2d pixel char and transport goods from A to B to make money. I am from Germany, and we Germans love trading and economic Games (maybe you know about games like Patrician Series, Die Fugger, Serf City, Anno Series or Guild Series). The World consists of 2d Tiles, i want it to feel like moving on a "overworld" map in old RPGs. Below are some current screenshots. the Tile are not the best since im not a Pixel artist.

Salmakis

Salmakis

Nightfall - DevBlog #2

NIGHTFALL DEVBLOG #2 I'd like to start this post by saying - This week has been absolutely insane! In just over a week's time since the last DevBlog, we've reached over 100 members in our Discord community, added three new team members to our team at Venatus, and broke ground on terrain generation... successfully. Yup! You read that correctly. We have actual world generation, in Nightfall, in less than two weeks and this time we'll have actual gameplay to share with you! In a big part, this is due to some of our additions to the team and the hard work that the entire team has been putting in for all of you in the past couple of weeks. Combined through Discord, our posts here on GameDev.net, Twitter, and Patreon, there are over 1.5 thousand people who are interested in Nightfall. This is an insane number, especially after the short amount of time that we've been at this... and it's going up every day. This is a driving force for us and the support people have shown us is inspiring! We are super motivated by the engagement we've had with you guys and are loving hearing your suggestions and answering your questions on the Discord!  Now with all that said, I'm sure you're all looking forward to hearing more about how Nightfall is coming along, and we can't WAIT to share it with you. In today's DevBlog, we'll take a look at some more concept art for features and biomes, discuss terrain generation, take a look at some of the new models and art for Nightfall, learn more about all of us over here in the Dev Team, and get a first look at the Nightfall pre-pre-alpha gameplay! Wow! That was a mouthful. That's enough of an introduction, let's get started! What is Nightfall? We discussed this last DevBlog, and we'll keep it brief, but in case you aren't coming from our Discord or our previous DevBlog on GameDev.net, here's the gist of what Nightfall is all about. "Nightfall is a block/voxel type game being developed by Venatus with influence from Minecraft, Castle Miner Z, and other predecessors. It is a base-defense open world sandbox game that pits you against dynamic and dangerous enemies along with other players. You can work together or go it alone to try and survive the harsh nights of Nightfall. The game is an open world sandbox where Players can do whatever they want. To survive, players will need to gather resources and construct a shelter. However, when night falls, things get much more difficult. Players will need to defend against difficult dynamic enemies and survive to the next morning." Yes, that's the same blurb as last time, and if you want more information than that, click here to head over to our Discord or here to read last week's post for more information. I don't want to bog you down with repeat information, so this is the last time we'll add this basic description of the game to the post. Yay! Biome Concept Art The Badlands Take a look at this beauty. Another incredible concept piece by Crimmy. These are the badlands, and yes, they're bad to the bone. No literally... You'll actually find large skeletons here of creatures that may have roamed the land. This is a pretty unforgiving biome, but the terrain generation here will be miles different from anything you've seen before. We're aiming to have huge spikes (as seen above), large skeletal remains, and sheer cliffs that drop far below. The consistency of the rock/stone you'd find making up these spikes would be that of volcanic rock. A good way to picture this biome is to take a look at this scene from the Lion King, and add some more pointy outcroppings of rock.  Unique biomes like the Badlands are something we are working hard to implement into our world generation. We have a LOT of new mechanics to our world generation that you probably won't be expecting, and we can't wait to share more of them here. Our goal is that exploring the world of Nightfall will not feel monotonous or empty, and that you'll be rewarded with fantastic sights and new materials for your travel. This applies to our surface world, but also the depths below... but that's for a future DevBlog! Door and Entrances Who doesn't like to make a dramatic entrance? Say goodbye to the days of doors that are two blocks tall and one block wide (although, we will have those as well) and hello to the grand entrances of Nightfall. We're currently working on a concept feature for larger doors and entrances in the game. This means doors, hatches, and gates that are not just you usual proportions. Crimmy took some time this week to concept out a bunch of possible entrances you may see in Nightfall. We want to allow for you to not have to limit your doorways to be a certain size. This will make allowing creatures larger than the average human into a building easier, but also make for more impressive builds. We're also planning on incorporating it into our dungeon system to allow for epic entryways into the horrors of Nightfall. Barn Doors (Sliding) Still don't understand what I mean? Take a look at these sliding barn door options. If you have a barn for your livestock, it may be smart to use these doors to seal the barn up during the winter, but still allow for animals to pass through easily when it's time to take them back out for the warmer weather. These doors not only look good, but they'll actually have functionality as well. And just like in real life, these barn doors may be higher than your head compared to the average sized door. Speaking of average sized doors... Other Door Types Nightfall is not without those either. Here's a concept for a more reinforced door and even a jail door in case you want to lock up your friends or even your enemies. We're open to suggestions for all of these doors or even individual features for each method of entrance. Should the jail door require a key? Can the flaps on the reinforced door be opened to pass items through or take a peek at who is there? You tell us! We want to have unique options for the player that provide both use and visual appeal. Take this garage type door as another example. A player might be able to grab this door and pull it up for a vertical entryway. This might take up less space and would be a good way to take or move larger things out of your base. It also looks pretty reinforced. Imagine gearing up with your squad and popping out of one of these babies to take on the approaching horde.  Don't worry, we didn't forget dungeon doors either. We want to have unique entrances to some of the larger non-player built structures as well. These could be harvested by the player after completing the dungeon to be used in builds or as decoration, but would also provide a certain vibe to the entrances of a crypt or a foreboding castle. We have a lot of plans for our dungeons, but that's something we'll touch more on in a later DevBlog.  In the image above you can see some concepts for fences (A, B, D) and fence gates (C, E). Obviously there's still a lot more ways we plan to take these structures, but this is another example of the variability we want to provide for you in the world of Nightfall.  Trapdoors, Hatches, and Other Entrances Coming in last but certainly not least for our entrance concepts, we have hatches, trapdoors, and other cool entrances. In image A, and B, we've got some concepts for a different kind of hatch -- traps. These could consist of spikes or launch pads and be used on players, enemies, or maybe even other things. The player would be able to conceal these in a hatch similar to some of our trapdoors which is why we included them here. In Images C, D, and E, you can seem some examples of wooden hatches/trapdoors, and in F, G, and H, you can see something similar done with stone. Specifically if you look at image G, you can see that we're currently tossing around the idea of doing some more hidden entrances as well, like the fake rock. Once again, these fantastic pieces of concept art were done by our very own, Crimmy. We actually worked on these while answering questions on our brand new Developer Twitch, which you can check out here. I'll talk more about this at the end of the DevBlog, but we'll be doing more live streams here in the future where we work on Nightfall, answer questions, and hang out with the community! Tools/Weapons This week, Alde spent some time working on some placeholder tools and weapons for us. Unlike your typical block game, Nightfall has a lot of unique tools. While Nightfall does have your basic four (Shovel, Axe, Pickaxe, Sword), don't limit your thinking to just the generic set. We're working on some concepts for other weapons, tools, and equipment that can be used for various purposes. We will have various tiers for the tools/weapons depending on the type of material it is made with, and ways to increase their strength, efficiency, and ability. This is something we'll talk about more in a future blog post. Pictured above from left to right, you can see our placeholder model for a; Shield, Spear, Sword, Knife, Hoe, Pickaxe, Hatchet, and Shovel. Keep in mind that these are just placeholder models that we'll be using while we develop the functionality of these weapons and tools and that eventually the actual model will reflect what tier you are using. What this means is that basic tools will app ear more primitive while higher tier tools will be much more refined. Take a look at some of these placeholders closer up below; Gameplay Well, well, well... the moment I'm sure you've all been waiting for is here! How far along is the gameplay in Nightfall? Let's take a look.  (Pre-Pre-Alpha) But first, an important disclaimer. What you're about to see is a pre-PRE-alpha version. There's plenty of bugs and a lot to be done, but we're showing you this now for two reasons. The first reason is the initial promise we made to ourselves and to you of being honest developers. This is truly where we are at in the development process, and we want to show you. The second is -- we're proud of what we've accomplished in such a short time and want to share it with you all who have been asking us every day for the past two weeks how much progress we've made. Is this the complete game? No. Is it a start? Hell yes. In less than two weeks we've created a fairly robust world generation system that's getting better every day, and are already able to do so much of what we thought would take us months to accomplish. This is a good sign and this is the foundation for us to create Nightfall on. Back to the disclaimer, however. Please remember that anything you see here is subject to change and is NOT A PUBLIC build. No, you can not yet play the game, and when a build is ready for public testing we will first release it to our Patrons over on Patreon. With all of that out of the way, here is what we've been working on. World Generation For starters, we've been tackling arguably the largest beast first, world generation. This past week, Jacob and Owen spent time on implementing the world generation system into Nightfall. Right now, we're focused on the basics, which is making the world appear, be modifiable, and save the modifications that players make. We're making sizable progress with this and getting closer and closer to being able to implement complex biomes and terrain. Right now, we've got a few basic blocks like grass, dirt, stone, and sand implemented into our generation engine. We also have a rudimentary form of water, but there is still quite a lot of work to be done in fluid physics. The world generation system is already nearly infinite in the same sense that Minecraft is, which is an impressive feat in itself.  Over the weekend, Jacob and Shelby really cracked down on getting our current gameplay builds and world generation builds merged together. At this point we've successfully implemented both of those and are working on stabilizing everything and making the terrain and player flow smoothly. We did have some issues with terrain clipping and weird generation at the start though that ended up being quite... interesting. (This GIF is from a very early build that is now vastly out-dated. Textures in this video are not ours and were purely for testing, we now have our own textures as shown previously) Overall, the entire system is built to be heavily expandable and within the next few DevBlogs we're hoping to share more biomes and world generation both surface and underground! We have some custom textures on the blocks in our world now which you can see in some screenshots or below, although they're very tiny here. We're currently deciding what size our textures will be (16x16, 64x64, etc) so if you have any opinions or suggestions, let us know! The Player  Our original alpha player you might have seen pictures or clips of is now dead. Long live alpha blue... He is now a Discord emote! His replacement who is still unnamed is now being implemented into the game. We're not entirely sure the direction we want to take character creation in yet, but we've fallen in love with this goofy blockhead made by Trevor! He's making his way into our current build and we're working on some new animations for him.   POV We're working on a First Person Perspective AND a Third Person Perspective for Nightfall. You can check out the basic implementations of both of those below.  Our Player's arms are still a bit goofy in first person, but we'll eventually have them nicely swing into view when you're walking or running! Alex is working on some new forms of movement for our character which we'll get into in a future DevBlog. Multiplayer Yup! You heard that right. We have basic Multiplayer functionality already working pretty smoothly! (Ignore my terrible apartment WiFi ping.) You can do quite a bit already as the heart system and breaking and placing blocks are both implemented in their early forms. Here is the first ever... uh... "special" statue built in Multiplayer Nightfall. We've made quite a bit of progress here and all of this is synced up between players. Overall, Multiplayer is doing very well in early testing and we are super excited for what's to come! Health System Check out this graphic to learn more about our health system. We've taken inspiration from some of our favorite ways of doing health and combined them to make our own unique form of health.  Hearts are measured in half heart increments and you can go down to one half of a heart before dying. You may have noticed some hearts in the top left of some of the screenshots we've shared. This is the basic implementation of our Heart System which you can read more about above. We've actually changed the way these hearts look from the screenshots and the placeholder to be a new design by Trevor. Here you can see a normal heart, Golden Heart, and a poisoned heart. Profiles and Friends Profiles In Nightfall, we're working on a non-gameplay related system for you to show off your stuff. We're planning to have an in-game area to view your profile and see all of your statistics and achievements all in one place. We will also have some cool collectibles called profile tags that you'll be able to showcase here. Profile Tags Profile tags are basically badges for your profile page. Imagine Pin Collecting at Disney world -- yeah, that. You'll be able to earn them through in-game achievements, reaching statistical milestones, events in-game and on Discord, and other ways like supporting us on Patreon. These are purely cosmetic and are more for collecting than anything else. They have NO effect on gameplay. You can actually earn one of these future profile tags right now through our Pioneer program on Discord. Go check out our community server on Discord to learn more about it! Congrats to those of you who have already earned your Pioneer title! Friends Another thing we would like to incorporate into the profile system is friends. This mechanic would allow you to add people you know in real life or friends you meet in game for ease of access in joining their games and seeing their profile pages! This is a great way to keep track of all of the people you meet and check out other people's profile tag collections! Dev Spotlight A new segment in the DevBlogs! Each blog we'll be spotlighting a different member of our Dev Team here at Venatus! This will give you a chance to learn more about us and see that yes, we're human too!  This week's spotlight is...   Jacob Jacob is a new addition to our team this past week! We're super excited to be working with him. Jacob has really spear-headed out terrain generation over the past week and came onto the team with a lot of world generation experience. If it was not for his previous hundreds of hours of hard work, Nightfall would not be as far along as it is today. Jacob is 22 years old and has been working in Unity for over four years. Before that, he was active in the Minecraft Modding community and developed multiple modifications to Minecraft. This is where he initially started his programming journey as a middle school student. He enjoys playing Minecraft, in which he has thousands of hours, and also likes to hop into the world of Dark Souls. Currently, Jacob is working on a system of layering chunks that will allow us to do some pretty nifty stuff with our terrain generation vertically! If Jacob could add anything to Nightfall, he would like to dive more into the complexity of chaotic bosses in the game.   Development Streams (Twitch) Some of you may have caught our previous development stream on Friday, which you can re-watch most of here. We're planning on doing a lot more of these Development streams in the future so you can watch us model, program, draw, and create the world of Nightfall. We'll do lots of Q+A sessions where we answer your questions about the game, and in the future we hope to do streams of actual gameplay showcasing new features or updates. We might even do streams where we play with the community some day! Here's hoping! If you're interested in watching these streams, go ahead over to our twitch by clicking the link below and give us a follow so you're notified when we go live!   Discord, Patreon, and Social Media Discord https://discord.gg/2BKtNks Use the link above to head on over to our Discord. This is the absolute BEST way to communicate with myself, any of the Developers, and the community. We have dedicated areas for you to suggest features, give feedback, learn more, and most importantly - ASK QUESTIONS (and get an answer too!) This is the easiest (and free!) way of supporting us and we are so happy to see so many of you already taking advantage of this by joining, talking to each other, suggesting features, and grilling us with questions! It's been great!   We already have over 100 members in our Discord community! Incredible! Patreon https://www.patreon.com/vgnightfall Honestly, we're new to the whole Patreon scene, but you can pledge to monetarily support us monthly here. We do have various tiers of support that each provide unique rewards like special roles on our Discord server, access to even more direct communication with Developers, and of course, eventual early access to the game to help us test. You'll also get bonus development content and an even closer peek into our development process directly through Patreon and Discord when you subscribe! We've already posted a lot of extra content on our Patreon! Thank you to our current Patreon supporters: Patreon - Nedac16   Twitter https://twitter.com/venatus_games This one is pretty simple. It's just Twitter. If you click the link, it'll take you to our page and let you follow along with what we do there. We'll share similar content updates there along with more information or if we're ever looking for help. Click the link and give us a follow if you're feeling generous and help support Nightfall!   (Closing) And night is upon us... As you can see it's been an absolutely bonkers week since our last post. We are through the roof with the progress that's been made in our short time working on this project and are looking forward to the next few DevBlogs where we'll really begin to show off what Nightfall has to offer. However, a word of caution there. This upcoming week is a very busy one for the team outside of developing Nightfall, so there's no promises on a DevBlog post next week. We'll let you know what our schedule for the next post is looking like over on our Discord, so come join us and keep your eyes on the announcement channel for more information.  We have a brief survey and would really appreciate if you took the time to fill it out! Click the link below to check it out! It won't take longer than a minute! Thanks!  https://docs.google.com/forms/d/1-XHJUX57RvUxOfJQDS122Ffg4B5FQqIsITWlejDcAOw/edit  Well, it's getting dark and night is falling, so we better get going, but we'll see you sooner than you think!   Thanks for reading!   Humbly,  VG Jack and the Venatus Team    

Venatus Games

Venatus Games

 

I want to be a character in a video game!

#IWantToBeAnNPC (I Want to be an NPC competition) Ever wanted to be a character in a video game. Not just be able to create a customizable character but there actually to be cannon characters who look like you? Young or old, black white Asian, purple pink hair, you! To celebrate the upcoming release of my first publicly available game #Frostbite you are going to have a chance to be a character in the next game #ScaryMermaid. I need a lot of characters for it and I want to ask you to be one of those characters. There are going to be 12 slots with a different way to win each month till the game comes out. For the 1st month(November) the challenge will be to upload a video of yourself playing or reviewing #Frostbite with a short description of yourself or the character you would like to see in #ScaryMermaid. There will be a vote. The person with the most votes wins. Well I’m sure you’re curious what will you actually win? Well A character who looks like you in the game with your name or the name of your choice You will get to do the voice acting for the character You will be featured on my blog A copy of #ScaryMermaid when it comes out Your name in the credits of #ScaryMermaid A specialized piece of promo art featuring your character And possibly additional prizes Stay tuned for the launch of #Frostbite and additional details. The post I want to be a character in a video game! appeared first on Gilded Octopus.
View the full article

GildedOctopusStudios

GildedOctopusStudios

 

How I Made a Struggling Indie Game $10,000, and How You Can Too

With my new game Frostbite nearly ready to release into the wild I’ve been thinking a lot lately about marketing. It’s an area that I see a lot of Indie developers struggling in. It’s also crazy crucial to the success of indie games. So when I saw a tweet by Travis Taborek– a Digital Marketer & Writer who specializes in #indiegame marketing- about the benefits of influencer marketing for indie games I knew I needed to learn more. So I’ve asked Travis for a guest post on how to accomplish this. I hope you enjoy this look into a different side of game development than what we normally see and find it helpful. Let’s be blunt, we all know that game development is a demanding and utterly thankless job. The neverending days, weeks, months and years of ceaseless grind working for cents on the dollar would be enough to crush anyone’s spirit.
Even if you do get your game to a playable state and have it ready for launch, your game is far from guaranteed to succeed.
If you’re going to stand out in a market that’s already oversaturated with indie games and sees tens-of-thousands of new releases every year, you need a plan, you need to understand your audience, you need to know how to leverage the channels that are the best fit for your game, and you need to have luck on your side.
In other words, you need to do marketing for your game. Game development in itself, as previously stated, is a full-time job, but both making *and* marketing your game as a solo indie dev with no budget is a herculean task.
But not to worry. With a couple of straightforward, scalable strategies, you can take the game that represents your hopes and dreams and turn it into a profitable business.
Here’s how it works. My First Case Study Pitching your games to Youtube and Twitch influencers in the gaming space is your safest marketing bet. If your game is:
1) Decent 2) In a playable state, even an alpha 3) You want it to make money
That’s how it’s done.
A year ago, I enrolled in a digital marketing course at a fancy-pants tech bootcamp in San Francisco. 
While studying there, I partnered with a two-man development team making a 2D space RPG on Steam. Influencer marketing was one of the first things we tried.
I did some research on influencer marketing for indie games. When I did, I came across this article by fellow indie game marketer @Tavrox: https://medium.com/@Tavrox/how-to-find-influencers-for-your-game-45b7e8fcb1a8.
In it, Tavrox outlines the process that he uses for influencer marketing campaigns for the games he works on. I read it and thought to myself “This seems worth trying. Let’s give it a shot.”
So here’s what I did.
1) I thought about the people who were most likely to play my client’s game. In this case, either hardcore gamers who enjoy space sims (EVE Online, Elite Dangerous etc.) or people who gravitate towards games with crafting elements (e.g. Terraria).
2) I made a list of ten games that were most similar to my client’s game
3) For each game, I came up with a list of 10 influencers who feature that game heavily on their channel until I had 50
4) I crafted a pitch explaining the game’s major selling points and why they would enjoy it
5) I sent them all Steam keys for the game asking them to review it
I sent out 50 emails to 50 YouTubers.
One of those 50 YouTubers did a review.
That review got 33,000 views.
The traffic from those 33,000 views made the game $10,000 in two days.
That’s a decent chunk of change. You could buy a car or put a down-payment on a house with that.
And that’s the basics. Here’s where it gets slightly more complicated. How to Split-Test and Optimize your Outreach I got a little lucky on my first outreach campaign. It isn’t usually that simple.
Here’s the thing. YouTubers get pitched by 100’s of indie developers just like yourself every single day. Their inboxes become inundated with review requests for games just as deserving as yours.
That means that they normally don’t respond to boiler-plate marketing emails sent en-masse. 
The flip-side to that equation though is that you need to send your game to 100’s of influencers in order to turn your game into a profitable business, which means that sending each one personally hand-crafted emails signed in triplicate and scented with rose-perfume and delivered with a gift basket of iced champagne, cuban cigars and beluga caviar just isn’t feasible or realistic.
The trick is to find the middle ground. Personalize your emails just enough to make the recipient think that you delivered it to them personally, but make it just generic enough so that you can set an email automation tool to fill in the blanks for you so you can make your outreach scalable.
A typical pitch email has the following structure:
Hey there {{first name/online handle}}.
I came across your {{game title review}}.
{{Include a short sentence here about their channel that you like or that stood out to you, so they know you took the time to watch their videos}}.
{{A one-to-two-sentence description of your game goes here}}
{{A GIF or screenshot of your game goes here}}
Here’s a Steam key for a review: {{Steam key}}
That’s a pretty standard pitch. A few things to keep in mind:
– Keep it short and sweet. Generally speaking, the fewer words it takes to convey a message the better.  – It takes me about an hour to come up with a list of 10 potentially suitable influencers for a game
And how do you perfect the art of pitching to influencers? The same way you do any and all marketing: through continuous testing and experimentation!
Set up a new test with every iteration of 50 influencers. Here are a few split-tests you can try:
– Impact of including their first name in the subject line – Times of day – Influencers who specialize in different genre – Long-form detailed pitch or a short-form pitch that cuts to the chase – Does including visual elements and branding e.g. logos, GIFs, screenshots have any effect?
Here’s how I would do it:
– Come up with a list of 50 influencers. Have 10 of those be your VIP’s – the most popular YouTubers who would feasibly take an interest in your game. These 10 people get personalized emails specifically crafted for them – Take the remaining 40 influencers, randomize the list and seperate them into Groups A and B. – Test one of the elements mentioned above – Use MixMax to send your emails: https://mixmax.com – See which group has the highest open and response rate after about a week – Find another 50 influencers, optimize off the winning result, and run a new test. Rinse and repeat!
What strategies have worked for you and your game’s outreach? Comment below with the processes and experiments you’ve tried!
The post How I Made a Struggling Indie Game $10,000, and How You Can Too appeared first on Gilded Octopus.
View the full article

GildedOctopusStudios

GildedOctopusStudios

Dev Diary #041 - Slicing Images

Hello and welcome to this weeks dev diary! Today I'll show a couple of ways to slice up your images into smaller portions, one that doesn't require any plugins and one that need you to download a script. The following tutorial uses the default settings for GIMP, just like a fresh installation with no previous installations that might have retained some of your old settings. The GIMP Version is 2.10.12   The Manual Way Slicing the image manually can be really work intensive, depending how many parts you want to slice your image to and is by no means an efficient way to do it, but will suffice for anyone who wishes to divide their image to 4 x 4 tiles or less. 1. When you have loaded up the image you want to slice into smaller pieces, go to image > Guides > New Guide...   2.a When you click on the "New Guide..." the following box appears. 2.b Now you have to do some math and divide your image into as many parts as you want. You have to do this both horizontally and vertically as many times as you need guides. For this tutorial I'll make the image into 4 x 4 tiles, meaning 3000x3000 pixels in size, as per 12000 / 4 = 3000 - this means that I need to space all the guides 3000 pixels apart from each other, adding 3000 to each position. i.e. the first guide to 3000, the second guide to 6000, and the third guide to 9000. 3. After you have added your guides, your image should look like this;   4. Go to Image > Slice Using Guides - Click it and GIMP will divide the image for you into separate images and switch your view to the last piece. The original image will still be intact. GIMP will use the same filename that your original file has, but add to the row and column number to the end of the name, like seen in the above image filename, on the top right corner. Original filename in this example is; M5213A-texture-12000x12000.png The last piece has an addition at the end of it; M5213A-texture-12000x12000-3-3.png The below image showcases how GIMP organizes the tiles. First number represents the Column and the second number represents the Row;   5. Save each image separately, by going to File > Export As... (or using shortcut of Shift + CTRL + E). The file extension is the same as the original file's, so no need to change any setting when saving the files. The default export path is the one that the original image resides in, so you may want to create a new folder for the image slices. There is also several plugins that helps with saving multiple tabs in GIMP.   The Much More Automated Method 1. First, download these plug-ins; ofn-layer-tiles Export Layer 2. Install both plugins into C:\Users\"Your-Username"\AppData\Roaming\GIMP\2.10\plug-ins Note that the "2.10" folder is the version of the GIMP you have installed and will change after each update that changes the first or second version number. Now your plug-ins folder should have these files.   3. After opening GIMP and your image file, remove the ".png" from your layer name. This will ensure that the "Export Layers" plugin names the layers correctly. 4. Go to Layers > Tiles > Split tiles (by rows and columns)...   5. Choose how many rows and columns you want, no need to change other settings, unless you want to specify different naming schemes. Read the plugin instructions for more information on that. For the purpose of this tutorial, I will be splitting the image into 4 x 4 tiles, just like before. By default, the slicing process named the files with the same logic as GIMP, the first number represent the Column and the second one is the ROW. The only difference is, that the plugin starts the numbering from 01 instead of 00, that GIMP starts from. This can be changed in the settings how ever, if this is important to you. To make the numbering start from 0, change "{column1:02d}-{row1:02d}" to "{column0:02d}-{row0:02d}".   6. Press the "OK" button and the plugin will change the image into separate layers. 7. Go to File > Export Layers... Choose the folder you would like to save the images to and your preferred file format. After you are done, click "Export". The Plugin will save each layer as a file and depending on the size of your original file, this could take some time.   Conclusion For my needs, these plug-ins are gems. I'm just surprised how come GIMP does not include these kind of functionalities out of the box. But then again, open source programs tend to rely more on community to add more functionality to the core program in the form of plug-ins and scripts. One thing that should be a out-of-the-boc functionality, is the "Save All" option for saving all open documents easily and fast. Hope this was of use to you and I'll see you on the next one! You can check out every possible mid week announcements about the project on these official channels; • YouTube • Facebook • Twitter • Discord • Reddit • Pinterest • SoundCloud • LinkedIn •

ProjectTaival

ProjectTaival

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!