Jump to content
    1. Past hour
    2. Hello Community, I'm passionated game developer and doing some hobby board game authoring in my spare time. I'm now at a point that there is need for some artworks for a new game I'm currently prototyping that need to match a certain art style, so I'm looking for a reliable Artist/ Illustrator to help getting the artwork done for a few cards. The card game is a collectible strategy card game where each player has a preconstructed deck of cards with the goal to decrease every other opponent's life points to zero. So far so convinient the game comes with a clue; in order to skip any randomness caused by throwing a dice or flipping a coin, players do some kind of Tarot Fortune telling to determine the result of certain situations. Away from classic taro cards, there are some other game related constelations like The Omen, The Herald or The Horseman which each has certain meaning based on current situation. The cards have a minimalistic but also detailed art style and this is my current problem. While my knowledge using Photoshop is at a level I could design my cards very well, I'm not talented enougth to do the art except the example picture I already did. So anybody who likes card games/ board games like I do and would be able to draw/sketch or however reach the art style of my current sample image and willing to help for 10 to 15 different images would be welcome. The game will, once be completed in design and balancing, presented to an agency to be or be not approved for further potential customers in order to get produced or otherwise put to Kickstarter. However, as always I do this for joy not profit so don't expect any financial outome. Please contact me via Discord or PM for interest or further questions. I expect a minimal netiqeutte for example to be honest, reliable and all but foremost tell me if and when I could expect first results so I wouldn't be waiting all day for a never comming reply Thanks in advance
    3. Today
    4. I think it's too big for me and for now.
    5. The game has you play as a young child in an oasis within a large desert. As you explore you will come across a brutal event and be forced to make a decision. It is a short 20 minutes worth of game play where we are aiming for high calibre work to show off something we can be proud of. We are a rather large team working on a RPG demo with about 20 minutes of gameplay that focuses on setting the scene for a wider game we hope to make. The first iteration of art is almost there but we still need someone to work on special effects: 1 outdoor and 1 indoor scene lighting and two screen visual effects. We are a mix of students looking to get experience and professionals looking to work on something fun. It is relatively relaxed and we give plenty of allowance for real life issues but we expect frequent contact and updates.
    6. Hi Anri, It is full 3D. If the demo is successful we can think about where to take it in the future but i figured this would be much easier for getting a prototype out.
    7. Hi all,DISCLAIMER: I'm just brain storming and have no ironclad design here - I'm really just trying to get fresh perspectives on this idea:I've got an idea for a basic 2D platformer/shooter and I'm trying to figure out how you would approach having a player/npc mutate in a none uniform random way (see 'The Thing' inspiration). The idea is essentially that as the player collects food items, they build up a meter indicating how much of that resource they have gathered. When a mutation is triggered (either by the player or at random periodic intervals - I haven't decided), the level on the meter dictates how severe the mutation would be. For example: A mutation occurring while the player has 5 food would perhaps grow an extra mouth or something small, whereas doing it with 20 food would cause the player to double in size or grow more limbs etc... I want the mutations to be randomised to make them ugly, unpredictable and weird, but I'm not sure how to go about it. Games like spore seem to do this well, as the random element its the player's imagination - but I'm not sure how their mechanic is broken down. My thinking is that you could equip the game with a bunch of different modular 'parts' that differ in value, these could sprout at random. The problem is, say you grow fifteen legs - how do you coordinate all of them/devise a character controller for that? Keen to hear how anyone else would tackle this. Could approach it like an army in an RTS? They are essentially a complicated single mind organism that varies in form - but it might get a bit clunky controlling all of that?
    8. Currently if I was to program a game using C++ with SFML or Java with LibGDX I would render game objects by calling "object.render()" on the game object. Although this makes it easy to access the information necessary to render the game object, it also couples rendering to the game logic which is something I would like to move away from. How can rendering be implemented so that it is decoupled from the game objects? I wish to know how this can be done in the standard object oriented paradigm, so please don't suggest that I use an ECS. Thank you.
    9. 3dBookman

      The 3D book

      After a break of several years the 3D book project is back on. A few short words now on what this blog is about. I have to deliver my wife to the bus station in a few minutes, then a week alone so may have the time then to explain things. But the 3D book is something I started in 014 and put several years into, then the break, now on again. A win32 app with a text window and an ogl window. I just remembered I had something written on this so here it is I write to see if anyone in this community of game developers, programmers, enthusiasts, may be interested in a project I have been developing[off and on] for several years now. So follows a short description of this project, which I call the 3D-Book project. The 3D-Format Reader: A new format of media. Imagine opening a book, the left page is conventional formatted text - on the right page a 3D animation of the subject of the text on the left hand page. The text page with user input from mouse and keyboard, the 3D page with user intput from a game pad. An anatomy text for a future surgeon, with the a beating heart in 3D animation. A childrens story adventure book with a 3D fantasy world to enter on the right page. ... Currently 3D-Format Reader consists of a C++ Windows program: Two "child" windows in a main window frame. Two windows: a text-2D rendering window and a 3D-rendering window. The text-2D window, as its' name implies, displays text and 2D graphics; it is programmed using Microsoft's DirectWrite text formatting API and Microsoft's Direct2D API for 2D graphics. The 3D-rendering window uses the OpenGL API. A 3DE-Book page is formatted in one of two possible modes: DW_MODE or GL_MODE. In GL_MODE both windows are shown; the text-2D rendering window is on the left and the 3D OpenGL window is on the right. In DW_MODE, only the text-2D rendering window is shown, the OpenGL window is hidden (Logically it is still there, it has just been given zero width). The 3D-Format Reader reads text files, which consists of the text of the book, control character for the formatting of text, (bold, underline, ...), display of tables, loading of images(.jpg .png ...), and control of 2D and 3D routines. 3D-Reader programming is based on a Model-View-Controller (MVC) architecture. The MVC design is modular: The Controller component handles user input from the operating system , the Model component processes the input, and the View component sends output back to the user on the display. Typical Parent-Child windows programs have multiple "call back" window procedures(winProcs): One for the parent window and one for child window. The MVC model, simplifies message routing by using a call-back window procedure which receives Windows messages for the main window, the text-2D window and the OGL window. A sample MVC program by Song Ho Ahn was used as a template for the 3DE-Reader. Rushed for time now, so a hasty sign off and thanks for reading. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 8 - 21 -18 I spent the last few days working on procedural mesh generation. First looking to find a bit of code to do what I had in mind. Which begs the question: What did I have in mind? I just wanted a cube mesh generator such that... Requirements Input: An integer n = units from origin to cube face. Output: The vertices for a unit cube centered on the origin. 8n² triangles per cube face. 3 times 8n² verts in clockwise winding order (from the outside of the cube) ready for the rendering pipeline. Screenshot of some cubes generated with the procedural cube mesh generator. That was about it for the output requirements. I did not want to hand code even a single vertex and did not want to load a mesh file. I was sure the code was out there somewhere, but was not finding it. So, a bit reluctantly at first, I started coding the mesh generator. I started enjoying creating this thing and stopped searching for the "out-there-somewhere" code; although still curious how others did this. Analysis First question: How do we number the verts? It would be great to conceive of some concise algorithm to put out the cube face verts all in clockwise order for the outside faces of the cube directly. That seemed beyond me so I plodded along step by step. I decided to just use a simple nested loop to generate the cube face verts and number them in the order they were produced. The hope(and the presumption) was: The loop code was in some order, running thru the x y and z coordinates in order, from -n to +n, therefore the output would be a recognizable pattern. The simple nested loop vert generator did not let us down: It gave us a recognizable pattern, at least for this face. It turned out (as expected now) that all six faces have similar recognizable patterns. Plotting the first row or two of verts you can easily see how to run the rest of the pattern. Plot of the first(of six) cube faces verts output by the vert generator: Input of n: There are (2n+1)² verts per cube face, or 25 verts for n = 2. This is looking at the x = -n face from the outside of the cube. To simplify the math it helps to define s = 2n. Then there are (s + 1)² verts, or 25 for s = 4 s² cells on the face, or 16 for 4 = 2. We are going divide each cell into 2 triangles, so there are 2s² triangles per face, or 32 for s = 4. Second question: What pattern for the triangles? How to number the 2s² = 32 triangles? What we want in the end is a bit of code such that... for triangles T[0] thru T[2s²-1] or T[0] thru T[31]( for n = 4), we have T[N] = f0(N), f1(N), f2(N). Where f0(N) gives the first vertex of T[N] as a function of N. and f1 and f2 give the second and third verts, all in CW winding order looking into the cube of course. Here the choice is a bit arbitrary, but it would seem to make things easier if we can manage to have the order of triangles follow the order of verts to a degree. Numbering the triangles. And now the problem becomes: Look at the triangle vert list, T0 - T8...T31 in the image, and try to discern some pattern leading us to the sought after functions f0(N), f1(N), f2(N) where N is the number of the triangle, 0 thru 2s²-1. This really is the holy grail of this whole effort; then we have T[N] = f0(N), f1(N), f2(N) and that list of verts can be sent directly to the rendering pipeline. Of course we want these functions to work for all six faces and all 12s² triangles to cover the cube. But first let's see if we can just do this one face, 0 thru 2s²-1.. Thru a bit of trial and error the 32 triangles(T0 - T31) were ordered as shown. Now we have an ordered list of the triangles and the verts from our loop. T0 = 0 5 6 T1 = 6 1 0 T2 = 1 6 7 T3 = 7 2 1 T4 = 2 7 8 T5 = 8 3 2 T6 = 3 8 9 T7 = 9 4 3 T8 = 5 10 11 ... T30 T31. If we can find a pattern in the verts on the right side of this list; we can implement it in an algorithm and the rest is just coding. Pattern recognition: It appears T2 = T0 with 1 added to each component T3 = T1 with 1 added to each component In general T[N+2] = T[N] with 1 added to each component, until we come to T8 at least. Also it is hard to recognize a relation between the even and odd triangles,To see what is happening here it helps to look at an image of the generalized case where n can take on any integer value n > 0. Looking for patterns in this generalized(for any n) vert plot we see... We have defined s = 2n. The 4 corner coordinates(+-n,+-n) of the x = - n cube face, one at each corner (+-n,+-n). There are (s+1)² verts/face numbered (0 thru (s+1)² -1). There are 2s² triangles/face numbered (0 thru 2s² -1). They are indicated in red. It's not as bad as it looks iff you break it down. Let's look at the even triangles only and just the 0th vert of these triangles. For any row we see the number of that first vert of the even triangles just increases by one going down the row. We can even try a relation such as T[N].0 = N/2. Here T[N].0 denotes the 0th vert of th Nth triangle. Which works until we have to jump to the next row. Every time we jump a row we T[N+1].0 = T[N].0 + 2 for the first triangle in the higher row. So we need a corrective term to the T[N].0 = N/2 relation that adds 1 every time we jump a row. We can use computer integer division to generate such a term and N/2s is such a term. It only changes value when we jump rows and we get our first function ... f0(N) = N/2 + N/2s. (even triangles) Remember the integer division will discard any remainder from the terms and check this works for the entire cube face, but only for the even triangles. What about the odd triangles? Going back to the triangle vs vert list for the specific case n = 2, s = 4 for the first row; we see for the odd triangles T[N].0 = T[N-1].0 + s + 2. And adding this term, s + 2 to the formula for the even triangle 0th vert we get f0[N] for the odd triangles. f0(N) = N/2 + N/2s + s + 2. (odd triangles) Continuing this somewhat tedious analysis for the remaining functions f1(N), f2(N) we eventually have these relations for the x = -n cube face triangles. for N = 0 thru N = 2s² - 1. defining m = N/2 + N/2s. T[N] = m, m + s + 1, m + s + 2 T[N] = f0(N), f1(N), f2(N). (even N) T[N] = m + s + 2, m + 1, m T[N] = f0'(N), f1'(N), f2'(N) (odd N) So it turns out we have two sets of functions for the verts, fn(N) for the even triangles and fn'(N) for the odd. To recap here; we now have formulae for all the T[N] verts as functions of N and the input parameter n: Input: An integer n = units from origin to cube face. But this is only for the first face x = -n, we have five more faces to determine. So the question is: Do these formulae work for the other faces? And the answer is no they do not, but going through a similar analysis for the remaining face gives similar T[N] = f0(N), f1(N), f2(N) for them. There is still the choice of how to number the remaining triangles and verts on the remaining five faces, and the f0(N), f1(N), f2(N) will depend on the somewhat arbitrary choice of how we do the numbering. For the particular choice of a numbering scheme I ended up making, it became clear how to determine the f0(N), f1(N), f2(N) for the remaining faces. It required making generalized vert plots for the remaining five face similar to the previous image. Then these relation emerged... For face x = -n T[N] N(0 thru 2²-1) we have the f0(N), f1(N), f2(N), even and odd For face x = n T[N] N(2s² thru 4s²-1) add (s+1)² to the x=-n face components and reverse the winding order For face y = -n T[N] N(4s² thru 6s²-1) add 2(s+1)² to the x=-n face components and reverse the winding order For face y = n T[N] N(6s² thru 8s²-1) add 3(s+1)² to the x=-n face components For face z = -n T[N] N(8s²0 thru 10s²-1) add 4(s+1)² to the x=-n face components For face z = n T[N] N(10s²0 thru 12s²-1) add 5(s+1)² to the x=-n face components and reverse the winding order And these are enough to allow us to write explicit expressions for all 12n² triangles for all 6 faces T[N] and what remains to be done is to implement these expression in code. Which turned out to be a much simpler task than finding the f0(N), f1(N), f2(N) and resulted in a surprisingly short bit of code. Implementation I have attempted to make this C++ snippet of code as generic as possible and have removed any dev-platform specific #includes and the like. GLM, a C++ mathematics library for graphics developed by Christophe Riccio is used. It is a header only library. https://github.com/g-truc/glm/releases/download/ That is the only outside dependency. // Procedural cube face verticies generator #include <vector> #include <glm/gtc/matrix_transform.hpp> struct Triangle { glm::vec3 vert[3]; // the three verts of the triangle }; /* std::vector<Triangle> cube_Faces(int n) Input: integer 'n'; the units from origin to cube face. Output: vector<Triangle> glTriangle; container for the 12*(2*n)² triangles covering the 6 cube faces. */ std::vector<Triangle> cube_Faces(int n){ size_t number_of_triangles(12*(2*n )*(2*n)); size_t number_of_face_verts(6*(2*n +1 )*(2*n+1)); std::vector<glm::vec3> face_verts(number_of_face_verts); std::vector<Triangle> glTriangle(number_of_triangles); // Generate the 6*(2n +1 )² face verts ------------------------------- int l(0); for(int i = 0; i < 6; i++){ for(int j = -n; j <= n; j++){ for(int k = -n; k <= n; k++){ // Below "ifS" strip out all interior cube verts. if( i == 0){ // do yz faces face_verts[l].x = (float)(-n); //x face_verts[l].y = (float)j; //y face_verts[l].z = (float)k;}//z if( i == 1){ // do yz faces face_verts[l].x = (float)(n); //x face_verts[l].y = (float)j; //y face_verts[l].z = (float)k;}//z if( i == 2){ // do zx faces face_verts[l].x = (float)j; //x face_verts[l].y = (float)(-n); //y face_verts[l].z = (float)k;}//z if( i == 3){ // do zx faces face_verts[l].x = (float)j; //x face_verts[l].y = (float)(n); //y face_verts[l].z = (float)k;}//z if( i == 4){ // do xy faces face_verts[l].x = (float)j; //x face_verts[l].y = (float)k; //y face_verts[l].z = (float)(-n);}//z if( i == 5){ // do xy faces face_verts[l].x = (float)j; //x face_verts[l].y = (float)k; //y face_verts[l].z = (float)(n);}//z l++; } } } // Generate the 12*(2*n)² triangles from the face verts ------- int s = 2*n; int q = 2*s*s; int a = (s+1)*(s+1); int f(0); int r(0); int h(0); for( int N=0; N < number_of_triangles; ){ // triangles already in CW winding if( N < q || N < 5*q && N > 3*q - 1 ){ // do the even indicies f= q*(N/q); r = a*(N/q); h = (N-f)/2 + (N-f)/(2*s) + r; glTriangle[N].vert[0] = face_verts[h]; glTriangle[N].vert[1] = face_verts[s + 1 + h]; glTriangle[N].vert[2] = face_verts[s + 2 + h]; N++; f= q*(N/q); r = a*(N/q); h = (N-f)/2 + (N-f)/(2*s) + r; // do the odd indicies glTriangle[N].vert[0] = face_verts[s + 2 + h]; glTriangle[N].vert[1] = face_verts[ 1 + h]; glTriangle[N].vert[2] = face_verts[h]; N++; f= q*(N/q); r = a*(N/q); h = (N-f)/2 + (N-f)/(2*s) + r; } // triangles needing reverse order for CW winding if( N > 5*q - 1 || N < 3*q && N > q - 1 ){ // do the even indicies glTriangle[N].vert[0] = face_verts[s + 2 + h]; glTriangle[N].vert[1] = face_verts[s + 1 + h]; glTriangle[N].vert[2] = face_verts[h]; N++; f= q*(N/q); r = a*(N/q); h = (N-f)/2 + (N-f)/(2*s) + r; // do the odd indicies glTriangle[N].vert[0] = face_verts[h]; glTriangle[N].vert[1] = face_verts[1 + h]; glTriangle[N].vert[2] = face_verts[s + 2 + h]; N++; f= q*(N/q); r = a*(N/q); h = (N-f)/2 + (N-f)/(2*s) + r; } } // Normalize the cube to side = 1 ------------------------------ for(int i = 0; i < number_of_triangles; i++){ glTriangle[i].vert[0].x = glTriangle[i].vert[0].x/(2.0*(float)n); glTriangle[i].vert[0].y = glTriangle[i].vert[0].y/(2.0*(float)n); glTriangle[i].vert[0].z = glTriangle[i].vert[0].z/(2.0*(float)n); glTriangle[i].vert[1].x = glTriangle[i].vert[1].x/(2.0*(float)n); glTriangle[i].vert[1].y = glTriangle[i].vert[1].y/(2.0*(float)n); glTriangle[i].vert[1].z = glTriangle[i].vert[1].z/(2.0*(float)n); glTriangle[i].vert[2].x = glTriangle[i].vert[2].x/(2.0*(float)n); glTriangle[i].vert[2].y = glTriangle[i].vert[2].y/(2.0*(float)n); glTriangle[i].vert[2].z = glTriangle[i].vert[2].z/(2.0*(float)n); }; return glTriangle; } The rendering was done using OpenGl. // OGL render call to the cube mesh generator - PSUEDOCODE int n(2); int cube_triangle_Count = (12*(2*n)*(2*n)); std::vector<Triangle> cube_Triangles(cube_triangle_Count); cube_Triangles = cube_Faces(n); glBindBuffer(GL_ARRAY_BUFFER, uiVBO[0]); glBufferData(GL_ARRAY_BUFFER, cube_Triangles.size()*sizeof(Triangle), &cube_Triangles[0], GL_STATIC_DRAW); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3*sizeof(float), 0); glEnableVertexAttribArray(0); glDrawArray(GL_TRIANGLES,0,3*cube_triangle_Count); This just gets the position attribute of the cube face triangle verts; for the color and other attributes there are a couple of options: Use separate GL_ARRAY_BUFFERS for the color and other attributes. Or add attributes to the Triangle struct... struct Triangle { glm::vec3 vert[3]; // the three verts of the triangle attribute1; attribute2; ... }; Screenshot of the spherified cube. What's next? Now that we have the cube mesh what we can do with with it practically unlimited. The first thing I did was turn it into a sphere. Playing with tesselating the cube or sphere or stellating it with different patterns; might do. Ended up trying a few matrix transformations on the cube mesh. These are shown in the image below. These shapes are result short bits of code like the code for the column shape below. //Column for(int i = 0; i < number_of_triangles; i++){ for(int j = 0; j < 3; j++){ if( glTriangle[i].vert[j].y < 0.5f && glTriangle[i].vert[j].y > -0.5f ){ float length_of_v = sqrt((glTriangle[i].vert[j].x * glTriangle[i].vert[j].x) + (glTriangle[i].vert[j].z * glTriangle[i].vert[j].z)); glTriangle[i].vert[j].x = 0.5f*glTriangle[i].vert[j].x/length_of_v; glTriangle[i].vert[j].z = 0.5f*glTriangle[i].vert[j].z/length_of_v; } } } Doing this; the blacksmith at his forge analogy soon presents. The mesh is the ingot, hammer matricies stretch, round and bend it against the fixed geometry of the anvil - coordinate system. I am the smith. Tetrahedron The tetrahedron is the platonic solid with the least number of faces(4), edges(6), and verts(4). In antiquity it was associated with the element of fire due to its' sharp vertices. The algorithm for the tetrahedron mesh was developed in a similar way to the cube, but here it seemed simpler to get a routine for just one face - an equilateral triangle - and use matrix translations and rotations to form the complete tetrahedron. So more like origami or tinsmithing than blacksmithing. Procedural tetrahedron screenshot. The n = 4 and the general case To get an routine for the general case, n an integer > 0, a bit of what I think is known as mathematical induction was used. PSUEDO-CODE Algorithm to generate equilateral triangle face with unit side composed of n² "sub-triangle" in the xy plane. std::vector<Triangle> equilateral(int n){ std::vector<Triangle> tri_Angle(n²); // Create the seed triangle in xy plane . // This is triangle "0" in the image above. // This is in the xy(z=0) plane so all the // tri_Angle.vert[0 thrue n -1 ].z = 0. // We just work with the x and y verts. tri_Angle[all].vert[all].z = 0; // The seed triangle tri_Angle[0].vert[0].x = 0; tri_Angle[0].vert[0].y = 0; tri_Angle[0].vert[1].x = 1/2n; tri_Angle[0].vert[1].y = sin(π/3)/n; tri_Angle[0].vert[2].x = 1/n; tri_Angle[0].vert[2].y = 0; // Build the equilateral triangle face. int count(0); for(int row = 0; row < n; row++){ count = 0; Spin = glmRotateMatrix( π/3, zaxis ); // The magic happens here! for(int i = 2*n*row - row*row; i < 2*n*row - row*row + 2*n - 2*row - 1; i++) { if (count % 2 == 0 ) // Triangle is even in the row - just translate { // more magic. x_Lat = glm_Matrix((count + row)/2n, row*sin(π/3)/n, 0.0f); tri_Angle[i].vert[0] = x_Lat* tri_Angle[0].vert[0]; tri_Angle[i].vert[1] = x_Lat* tri_Angle[0].vert[1]; } else // Triangle is odd in the row - rotate then translate { //and more magic. x_Lat = glm_Matrix((count + row + 1)/2n, row*sin(π/3)/n, 0.0f); tri_Angle[i].vert[0] = x_Lat*Spin*tri_Angle[0].vert[0]; tri_Angle[i].vert[1] = x_Lat*Spin*tri_Angle[0].vert[1]; } } count++; } return tri_Angle; } This is the psuedocode version of the routine which generates the verts for the n² triangles in a face. Getting this algorithm was a bit of a brain drain but looking for patterns in the image of the face allowed it to happen. We use a "seed" triangle, which is triangle 0 on the lower left of the figure. The verts of this one triangle are input; the rest of the n² triangles verts are generated by translating and rotating this seed triangle. Notice: There are n rows, every row has 2 less triangles than the row below. If we number the triangles from 0 to 2n - 2*row - 2, where the rows run 0 to n; the even triangles just need to be translated ... in the x direction by (count + row)/2n where count = their position in the row 0 to 2n - 2*row - 2. in the y direction by row*height. height = height of seed triangle. The odd triangles need to be rotated pi/3 = 60 degrees around the z axis then translated ... in the x direction by (count + row + 1)/2n where count = their position in the row 0 to 2n - 2*row - 2. in the y direction by row*height. height = height of seed triangle. Now we have a single face for the tetrahedron, to join the four faces together we need the angle between the faces called the dihedral angle. Dihedral Angle Each of the five platonic solids has a characteristic called the dihedral angle. This is the angle between the faces. For the cube it is 90 degrees or pi/2 radians. For the tetrahedron it is 70.528779° = arccos(1/3) = atan(2*sqrt(2)); The tetrahedron, with just four faces, is the simplest of the platonic solids. The simplest way I can think of to build it: Start with the four face stacked one on another, edges aligned. Imagine the top three faces each hinged to the bottom face along one edge. Then rotate each face around then hinged edge by arccos(1/3), the dihedral angle. That is the method of the bit of code shown below. vector<Triangle> tetrahedron(int N){ std::vector<Triangle> tetra(4n²); tetra[all].vert[all].z = 0; // The seed triangle tetra[0].vert[0].x = 0; tetra[0].vert[0].y = 0; tetra[0].vert[1].x = 1/2n; tetra[0].vert[1].y = sin(π/3)/n; tetra[0].vert[2].x = 1/n; tetra[0].vert[2].y = 0; // ----- The first face ----- // generate the first equilateral triangle face with unit side // composed of n² "sub-triangle" in the xy(z=0) plane. int count(0); for(int row = 0; row < n; row++) { count = 0; Spin = glmRotateMatrix( π/3, zaxis ); for(int i = 2*n*row - row*row; i < 2*n*row - row*row + 2*n - 2*row - 1; i++) { if (count % 2 == 0 ) // Triangle is even in the row - just translate { x_Lat = glm_Matrix((count + row)/2n, row*sin(π/3)/n, 0.0f); tetra[i].vert[0] = x_Lat* tetra[0].vert[0]; tetra[i].vert[1] = x_Lat* tetra[0].vert[1]; } else // Triangle is odd in the row - rotate then translate { x_Lat = glm_Matrix((count + row + 1)/2n, row*sin(π/3)/n, 0.0f); tetra[i].vert[0] = x_Lat*Spin*tetra[0].vert[0]; tetra[i].vert[1] = x_Lat*Spin*tetra[0].vert[1]; } } count++; } // ----- The second face ----- // generate the second equilateral face from the first // by rotating around the X axis by the dihedral angle. float tetra_Dihedral = atan(2*sqrt(2)); Spin = glmRotateMatrix( -tetra_Dihedral, xaxis ); //just rotate for(int i = 0; i < n²; i++) { for(int j = 0; j < 3; j++) { tetra[n² + i].vert[j] = Spin*tetra[i].vert[j]; } } //The rotation gives CCW verts so need need to make them CW again for(int i = n²; i < 2n²; i++) { swap(tetra[i].vert[0] ---- with --- tetra[i].vert[2]; } // ----- The third face ----- // For the second face we rotated the first triangle around its' // base on the X - axis. For the third face we rotate the first // triangle around its' edge along the vector ( 0.5, 0.866025, 0.0 ). Spin = glmRotateMatrix( tetra_Dihedral ,glm::vec3(0.5f,0.866025f,0.0f)); for(int i = 0; i < n²; i++) { for(int j = 0; j < 3; j++) { tetra[2n² + i].vert[j] = Spin*tetra[i].vert[j]; } } //need to make it CW again for(int i = 2n²; i < 3n²; i++) { swap(tetra[i].vert[0] ---- with --- tetra[i].vert[2]; } // ----- The forth face ----- // For the forth face we first translate the original face along the // X axis so it right edge vector (-0.5f, 0.866025f, 0.0f) passes thru the origin. // Then we rotate the first triangle around the that vector by the dihedral angle. x_Lat = glm::translate( glm::vec3(-1.0f, 0.0f, 0.0f)); Spin = glmRotateMatrix( -tetra_Dihedral, glm::vec3(-0.5f,0.866025f,0.0f)); for(int i = 0; i < n²; i++) { for(int j = 0; j < 3; j++) { tetra[3n² + i].vert[j] = Spin*x_Lat*tetra[i].vert[j]; } } //need to make it CW again for(int i = 3n²; i < 4n²; i++) { swap(tetra[i].vert[0] ---- with --- tetra[i].vert[2]; } // We now have the complete tetrahedron, tetra(4n²), but its' base // is not horizontal so let's make is so. // put the base in the xz plane // rotate 90 - dihedral angle around X axis. Spin = glm::rotate( tetra_Dihedral - half_PI, xaxis); for(int i = 0; i < 4n²; i++) { for(int j = 0; j < 3; j++) { tetra[i].vert[j] = Spin*tetra[i].vert[j]; } } // We now have the complete tetrahedron, tetra(4n²), sitting with its' // base on the xz(y=0) plane, let's put its' center at the origin. // For this we need another Platonic Solid attribute: The radius of // the tetrahedrons circumscribed sphere which is sqrt(3/8). So the // center of the tet is this vertical distance down from its' apex. // To put the center at the origin we need to translate down this // distance along the Y axis. We need also to xlat along the Z axis // by 1/2(sqrt(3)) = 0.28867; the distance from the center of a face // to the center of a side. // Finally we need to center along the X axis( xlat -.5) x_Lat = glm::translate( glm::vec3(-0.5f, -sqrt(3/8), sqrt(3)/2); for(int i = 0; i < 4n²; i++) { for(int j = 0; j < 3; j++) { tetra[i].vert[j] = x_Lat*tetra[i].vert[j]; } } return tetra; } Notes: Oops: Left out std::vector<Triangle> tri_Angles(4*n*n); Should be the first line of the function body! Those last two for loops could and probably should be combined to do a translate*rotate*triangle in one statement, but I have not tried it. All distances are for a tetrahedron with unit side. The sign of the dihedral angle in the rotations was usually determined by trial and error. I.e.; I tried one sign, compiled the code and rendered the tet. If it was wrong I just reversed the sign. The end result is a tetrahedron with its' center at the origin, its' base in the xz plane, and one edge parallel to the X axis. Of the five platonic solids; three (tetrahedron, octahedron, icosahedron) are composed of equilateral triangle faces. One of square faces (cube). And one of pentagon faces (dodecahedron). Two tetrahedrons fit nicely in a cube. 11-16-18: Corrections to code blocks for equilateral triangle and tetrahedon.
    10. @_WeirdCat_ Yes, correct. Anyways I thougt of this -> void Game::DoCollision(GameEntity *a, GameEntity *b) { Ship *player = static_cast<Ship *>(a == player_ ? a : (b == player_ ? b : 0)); Bullet *bullet = static_cast<Bullet *>(IsBullet(a) ? a : (IsBullet(b) ? b : 0)); Asteroid *asteroid = static_cast<Asteroid *>(IsAsteroid(a) ? a : (IsAsteroid(b) ? b : 0)); Bullet *bulletMode = static_cast<Bullet *>(IsBulletMode(a) ? a : (IsBulletMode(b) ? b : 0)); if (player && asteroid) { player->playerCollided = true; //AsteroidHit(asteroid); //DeletePlayer(); } if (bullet && asteroid) { if(bullet->bulletCollided == false) { bullet->bulletCollided = true; collidedBullets.push_back(bullet); } if(asteroid->asteroidCollided == false) { asteroid->asteroidCollided = true; collidedAsteroid.push_back(asteroid); } //AsteroidHit(asteroid); //DeleteBullet(); } if(bulletMode && asteroid) { if(bulletMode->bulletCollided == false) { bulletMode->bulletCollided = true; collidedBulletMode.push_back(bulletMode); } if(asteroid->asteroidCollided == false) { asteroid->asteroidCollided = true; collidedAsteroid.push_back(asteroid); } } } Would it work?
    11. For each visible bullet check for collisions if theres collision you add data to the stack then if theres another collision with same bullet you add new col info to the stack. In other words for each visible bullet check collision against all asteroids and do whatever you do there? Also i think using dynamic array for bullets is not the way one should ever do. Instead i would define a static array of bullets where the size is your predefined maximum if visible bullets (they surely wont exceed 100] where bullet class will hold bool visible, and you will check for which of new bullet index you want to use with int Find_first_free() { for (int i=0; i < BULLET_COUNT; i++) if (!BULLETS[i].visible) return i; return 0; }
    12. Hi! Thanks for the resource and for the work flow description. Are there any extended tutorials to help to get the basic grip on the subject, while concurently creating some basic games? I've looked on Udemy, but got the feeling they focus more on basic C# programming concepts (which I basically know) than on anything else, and there are no real Maya tutorials. The closest I could find about it, was the Maya LT Advanced Training: Character Modeling tutorial on Autodesks Official website.
    13. Hey, So I have got this asteroid type game and today I encountered a new issue while testing this game. What happened was that two asteroids were close to each other and I shot a bullet at them. The asteroids were so close to each other that a single bullet could collide to both of them. It collided and my game crashed there itself. I figured out it happened because two asteroids and one bullet collided in the same frame. This is the code - ```void Collision::DoCollisions(Game *game) const { for (ColliderList::const_iterator colliderAIt = colliders_.begin(), end = colliders_.end(); colliderAIt != end; ++colliderAIt) { ColliderList::const_iterator colliderBIt = colliderAIt; for (++colliderBIt; colliderBIt != end; ++colliderBIt) { Collider *colliderA = *colliderAIt; Collider *colliderB = *colliderBIt; if (CollisionTest(colliderA, colliderB)) { game->DoCollision(colliderA->entity, colliderB->entity); } } } }``` ``` void Game::DoCollision(GameEntity *a, GameEntity *b) { Ship *player = static_cast<Ship *>(a == player_ ? a : (b == player_ ? b : 0)); Bullet *bullet = static_cast<Bullet *>(IsBullet(a) ? a : (IsBullet(b) ? b : 0)); Asteroid *asteroid = static_cast<Asteroid *>(IsAsteroid(a) ? a : (IsAsteroid(b) ? b : 0)); Bullet *bulletMode = static_cast<Bullet *>(IsBulletMode(a) ? a : (IsBulletMode(b) ? b : 0)); if (player && asteroid) { player->playerCollided = true; //AsteroidHit(asteroid); //DeletePlayer(); } if (bullet && asteroid) { collidedBullets.push_back(bullet); collidedAsteroid.push_back(asteroid); //AsteroidHit(asteroid); //DeleteBullet(); } if(bulletMode && asteroid) { collidedBulletMode.push_back(bulletMode); collidedAsteroid.push_back(asteroid); } }``` ``` void Game::CollisionResponse() { if(player_->playerCollided == true) { DeletePlayer(); } else { if(!collidedAsteroid.empty()) { for(AsteroidList::const_iterator collidedAsteroidIt = collidedAsteroid.begin(), end = collidedAsteroid.end(); collidedAsteroidIt != end ; ++collidedAsteroidIt ) { AsteroidHit(*collidedAsteroidIt); } collidedAsteroid.clear(); } if(!collidedBullets.empty()) { for (BulletList::const_iterator bulletIt = collidedBullets.begin(), end = collidedBullets.end() ; bulletIt!=end; ++bulletIt) { DeleteBullet(*bulletIt); } collidedBullets.clear(); } if(!collidedBulletMode.empty()) { for (BulletList::const_iterator bulletIt = collidedBulletMode.begin(), end = collidedBulletMode.end() ; bulletIt!=end; ++bulletIt) { DeleteBulletMode(*bulletIt); } collidedBulletMode.clear(); } } }``` in my game->docollision() - whenever an asteroid and a bullet used to collide, the collided objects get collected in collidedasteroids and collidedbullets respectively. When two asteroids collided with the same bullet, the two asteroids got collected safely in collidedAsteroid but the single bullet got collected in collidedBullets twice, so when the deletion was happening, the second time iteration of the bullet couldn't find the respective bullet and it got crashed. How am I supposed to approach this problem now? Thanks
    14. FarNorthRichard

      FNZ - Four vs. Thousands in Zombie Survival co-op

      A wild DevLog appears! For this DevLog we have a couple of new exciting stuff to share! Features: Crafting: we now have a crafting system working in the game. You can craft different tools depending on what materials you come across while exploring. Melee Attacks: we have implemented melee attacks. Melee attacks are meant to be a last resort and only works well against a single zombie, since they are pretty weak. Audiovisual improvements: Lasersight: it’s now possible to see where you and other players are aiming. Nasty growls: zombies now make sound! The sound differs if the zombies are just standing or walking around, and if they are chasing you. Death effects: when killed, zombies now burst into flying body parts with trails of blood. Damage effects for players: there is a visual effect, as well as a sound effect, for when you are taking damage. Performance improvements: Zombies are now managed by a single script, instead of one script per zombie. We have implemented visual culling, so that only zombies that are in view will be animated. Lots of new stuff this week! We are also working on changing the world system and a map editor!
    15. Before you read further this is non funded. I have a few friends on board helping me with the core mechanics and would like to see if anybody would like to join and help me get this project really going. So basically, I have a MOBA I am working on and have already came up with most of the lore (but that part really isnt important until later on), have about 20 to 30 characters created at the time of posting this. That is the part i had my friends helping me with. One is pretty friendly with some pro smite players and is super knowledgeable at the game period. And the other is actually actively in a pro team for smite himself. What I would need is those looking to get on board and help with the programming aspect and maybe if im lucky, the sound portion as well. Whatever it is you feel you would like to help with and get some experience in at the same time, dont be shy to let me know. this also includes any artist for character design as well as 3d modelers
    16. From a high level perspective, there are two ways to do it: - You could create the texture somewhere, somehow, and then (using OpenGL) send it to the graphics card and render it regularly. In that case your OpenGL workflow is the same as when rendering any "regular" texture. And you can choose whatever tool or code you want to generate the texture data. - Or, you could calculate the colors in OpenGL directly, in the shader you write. Then your shader is the tool for generating the texture: instead of getting the pixels from an existing texture, you instead somehow calculate the color for each pixel in the shader itself.
    17. How do you feel about helping with a MOBA?
    18. OpenGL is an API for modifying pixels... What specific issue are you referring to?
    19. Hello all, I'm working with Opengl for maybe, a future space game and let's say I want to create skybox textures, but I don't want to use photoshop or other tools. Let's say, I want to generate them procedurally. How can I do that, because from what I know, I have to modify all the images per pixel and OpenGL doesn't support this. Or I have to modify an image with, let's say OpenCV and then import them in OpenGL and modify them colors ? Thank you!
    20. Brunni

      Arcade car physics

      Thanks! I just went ahead and did it right away It's really just a start and I'll take care of it, including much more laid-back explanations about the algorithmic contents
    21. I always liked playing both Mario Kart (the most was on DS) and Crash Team Racing. There's just something fascinating with the mechanics of the game. I could play it endlessly, despite a small number of different circuits. Actually I like racers in general. Two years ago I made a racer looking like Outrun, which is another type of game which I loved as a child (at a time where games didn't yet have a defined standard, so it was OK to just play to hit the road and explore environments, without princess to save, big boss or other deadly stake). Link: https://itunes.apple.com/us/app/highway-runners/id964932741?mt=8 But still, back to Crash Team Racing, I always wanted to make my own clone for fun, and I gave up due to lacking physics knowledge (and free time). This remained a dream though, and this time I committed to it harder, and learned, fiddled with every concept until I grasped it. It started with an inspiring video about Space Dust Racing. I think that's the one mentioned everywhere when it comes to developing an arcade racer. I think I kinda knew that it was lacking a lot of concepts that I'd eventually have to fiddle with, but many people were saying that the theory was alright, so I started. I also created a topic, which I'll now turn to a blog: Anyway as with many things the very hard part was the beginning. It's amazing when I think about how at first I was unsure about everything. About how I had to swallow my ego and realize that I wasn't able to implement a simple spring correctly, or to understand the true implications. Well I can say that I still don't truly understand everything, but it's enough to get what my car does and make it do what I want so so this blog may just start with a common and sweet "Believe in yourself" claim I hope to develop it into a fully playable game (homebrew quality though), focusing on the mechanics, and detail here some specific algorithmic areas. I'm not sure yet of the final form, maybe I'll want to get as close to the CTR as possible. Maybe I'll go for something else and think about special challenges that I could bring to the table. Here's how it looks for now Not playable demo yet, but feel free to leave your impressions, suggestions, and anything that you'd like to see in such a project CarGame-v2.mp4
    22. Septopus

      Arcade car physics

      WOW.. That's a lot of meantime!! Once you're ready to start blogging I hope you write up some how-to's on this project for people to follow. As you well know, these mechanics can be fairly frustrating to get working. Keep it up!! Can't wait to do some laps.
    23. I thought you wanted to use either the Fallout 2 or Heroes of Might and Magic 3 IP and were looking for licensing info on those two fan pages. I most likely miss-understood your post.
    24. I just shared those two projects as examples of what I was looking to develop. Why would I have to contact the companies? Anyways I did contact Blizzard though and they replied right away. I already shared the public page where they state weather or not game assets can be used for such fan projects. And the answer was "no". And I believe the same should be true for any game. Here is the link again http://us.blizzard.com/en-us/company/about/legal-faq.html I hope this topic can be informative for other game devs who have the same question in the future.
    25. I might be wrong but I believe Ubisoft holds the rights to Heroes of Might and Magic 3 and Bethesda holds the rights for Fallout 2. If those rights are mutually shared among the developers and publishers I don't know, but you'll have to contact those parties.
    26. Brunni

      Arcade car physics

      Thanks a lot for your encouragement @Septopus I'll do as you said then, just need some time to prepare it In the meantime, I managed to get the sideways force implemented properly (got back to dot product and its amazing uses), fixed the suspensions which always cause issues, added friction (separated from the sideways force: it seems like you could go with one that does both, but if you really want the amazing drift mechanics like Crash Team Racing, you'll have to implement it properly. Thanks to that I could also lower the friction to a realistic minimum, and at the same time the force of the engine, so that the slopes provide a realistic slow down), made a more realistic downforce which allows to take loops reliably, put back the vehicle on its feet, computed the vehicle speed (in the flat surface plane, that is not counting the gravity component), added a dropout condition when taking sharp bumps and a few small things. Now I'll have to actually modelize a track. Then add a way to know if you're going forward, if you achieve laps as expected, and handle collisions with other players. That's probably when I'll start to model my car not as a soap box but with spheres or similar
    27. Hi @_Flame_, 1) How do you write data to CL image ? 2) May be problem with normalized colors value (float/int/uint) ? 3) Which result from function clGetImageInfo(img, CL_IMAGE_FORMAT, sizeof(cl_image_format), imgFormat, &ret) ? 4) Try to write to CL image simple value (255, 0, 0,), which result will you receive ? 4) Can you post your code ?
    28. A few years ago I played FOnline, which is a Fallout 2 rip/remake https://fonline2.com/en/ Recently I came across http://heroesland.com which is the same but with Heroes of M&M III The latter is more like the thing I was thinking about making, although there was probably 1% chance for me to ever finish it. I'm looking for the licenses of both of those projects but I can't find it.
    29. Rutin

      I'm going for basic.

      I work from lists too! I'm looking forward to seeing you progress on this game.
    30. Rutin

      Escape Pod Model

      Nice job on the escape pod.
    31. Guy Fleegman

      How can anyone draw with an Graphics Tablet ?

      My Bamboo tablet installed with a default aspect ratio that was not the same as my monitor. My pen movements were actually squished a bit in one axis compared to the other. It took me a week or two of struggling to realize this and correct the problem. I suggest that you draw a perfect square on a piece of paper. Place the paper on your tablet and make sure it doesn't move. Trace the square with the tablet pen in your graphics program. If the shape is a rectangle on your screen, change the tablet settings and try again until the problem is fixed.
    32. Hey my dudes, Me and 4 friends are third year compsci students. Three of us are pretty good at drawing. We are hoping to make a 2d roguelite game with unity during the next few months. We are still brainstorming. At the moment, my idea is to create a card roguelite game: First, you would need to choose 2 heroes to enter the dungeon with the goal of finding a treasure. The treasure found gives you extra bonus in later runs. You can choose between mage, gunner, rogue, paladin, warrior and fighter. Each hero has their own unique cards. And there are common cards that every heroes can get(like hearthstone). The progression system would be like slay the spire’s. You can choose your own path, but every paths leads to the boss. It would use procedural generation. After defeating an enemy, you get to choose a new card out of the three options. There would be shops, random events, elite enemies, etc The combat system is where i need some suggestions on. There would be two piles of deck. One for each hero. I can think of two good combat systems: 1. Before every enemy encounters, you can choose what cards to use from your deck. Cards not used would not get discarded. Cards are drawn from the deck only if they break or due to special card’s effect. Every card have a durability number. Ones the durability reach zero, the card would break and can no longer be used. Events/enemies can modify the durability of the cards. 2. Card not used this turn would get discarded. Once the deck is empty, the discard pile gets shuffled and copied to the deck. Card/item effects can increase the number of cards you draw. How can I make the game more interesting? Any suggestions would be appreciated.
    33. Could you please post your full class with includes and so on. I'm newbie with directx and it would be great if i can just paste your code into main.cpp and get simple SDL window and dx11 renderer and simple texture to render. SDL_Window* window; ID3D11Device* device; ID3D11DeviceContext* context; SDL_Init( SDL_INIT_VIDEO | SDL_INIT_GAMECONTROLLER ); window = SDL_CreateWindow( "Window Title", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN ); D3D_FEATURE_LEVEL featureLevel; D3D11CreateDevice( 0, D3D_DRIVER_TYPE_HARDWARE, 0, D3D11_CREATE_DEVICE_SINGLETHREADED, 0, 0, D3D11_SDK_VERSION, &device, &featureLevel, &context ); int width = 0; int height = 0; SDL_GetWindowSize( window, &width, &height ); DXGI_SWAP_CHAIN_DESC sd; sd.BufferDesc.Width = width; sd.BufferDesc.Height = height; SDL_SysWMinfo sysWMInfo; SDL_VERSION( &sysWMInfo.version ); SDL_GetWindowWMInfo( window, &sysWMInfo ); sd.OutputWindow = sysWMInfo.info.win.window; SDL_Renderer *renderer = SDL_CreateRenderer( window, -1, SDL_RENDERER_ACCELERATED ); string path = SDL_GetBasePath(); SDL_Surface *surfRed = IMG_Load( ( path + "\\Red.png" ).c_str() ); SDL_Texture *textRed = SDL_CreateTextureFromSurface( renderer, surfRed ); SDL_FreeSurface( surfRed ); SDL_Surface *surfBlue = IMG_Load( ( path + "\\Blue.png" ).c_str() ); SDL_Texture *textBlue = SDL_CreateTextureFromSurface( renderer, surfBlue ); SDL_FreeSurface( surfBlue ); SDL_Rect destRed, destBlue; destRed.x = 128; destRed.y = 128; destBlue.x = 196; destBlue.y = 196; SDL_QueryTexture( textRed, NULL, NULL, &destRed.w, &destRed.h ); SDL_QueryTexture( textBlue, NULL, NULL, &destBlue.w, &destBlue.h ); SDL_BlendMode blendMode = SDL_ComposeCustomBlendMode( SDL_BLENDFACTOR_ONE, SDL_BLENDFACTOR_ONE, SDL_BLENDOPERATION_MAXIMUM, SDL_BLENDFACTOR_ONE, SDL_BLENDFACTOR_ONE, SDL_BLENDOPERATION_MAXIMUM ); SDL_SetTextureBlendMode( textRed, blendMode ); SDL_SetTextureBlendMode( textBlue, blendMode ); SDL_RendererInfo *rendererInfo = new SDL_RendererInfo(); SDL_GetRendererInfo( renderer, rendererInfo ); string info = rendererInfo->name; SDL_SetWindowTitle( window, info.c_str() ); SDL_SetRenderDrawColor( renderer, 0, 0, 0, 255 ); SDL_Event event; bool isRunning = true; while ( isRunning ) { if ( SDL_PollEvent( &event ) ) { if ( event.type == SDL_QUIT ) { isRunning = false; } } SDL_RenderClear( renderer ); SDL_RenderCopy( renderer, textRed, NULL, &destRed ); SDL_RenderCopy( renderer, textBlue, NULL, &destBlue ); SDL_RenderPresent( renderer ); } Cause this code doesn't work for me.
    34. Septopus

      VERY EXPERIENCED C# Programmer needed

      You should be well taken care of with that setup then. I'll message you some more info.
    35. Hey Alvaro thank you for all the help!The maths is way over my head so I decided to have a go at just implementing the code -_-" this is in Unity C#: void SetLaunchAngle(float gravity, float velocity) { /* Based on this formula: Angle = atan(((v*v) +- sqrt((v*v*v*v) – g*(g*x*x+2*y*v*v)) / (g*x)) */ float x = mouseWorldPos.x - myPos.x; float y = mouseWorldPos.y - myPos.y; float v = velocity; float g = gravity; float root = v*v*v*v - g * (g* (x * x) + 2 * y * (v* v)); root = Mathf.Sqrt(root); float angle = Mathf.Atan2(v*v - root, g*x) * Mathf.Rad2Deg; PointerPivot.eulerAngles = new Vector3(0, 0, angle); } It's working alright
    36. addictCoderCS

      VERY EXPERIENCED C# Programmer needed

      Thank you, I appreciate your feedback. Unfortunately, my Killer hardware is the hardware that aws has allowed me to use on the free tier (until I can get a game that could bring in some income and afford the better/faster shit). However, I'm just looking for the experience... right now. There may be up to 10 people playing this to test it. Also, just wanted to add a few things. My client application doesn't have knowledge of the db. That's what the web services/api is for. The client sends a user login request to the api endpoint. The api handles the login and sends a response back to the client. I was thinking about using SQL because I don't believe the db will be queried too often. Think of like a game of pong. The game server will handle the match between the two players, after the game is over, the server will send the result of the match to the api. Api stores the stats and updates player data. I should have mentioned that I'm not trying to build a WoW clone. Just a little something to get some experience in building a game server. However, now that you bring up the sql thing, what would you recommend if I needed something faster? Would a node sever and mongoDB suffice? If not, give me an idea of what you think would work for something like an mmorpg. Again, Thanks for the tips.
    37. TinyDev

      Sprite Animator needed

      I am in need of a sprite creator (A REAL PERSON, NOT PROGRAM for you people who likes to troll). I can only pay you when/if my game gets kickstarted. reply if interested
    38. phil67rpg

      1943 Plane Game

      I am going to combine a side scroller into an space wars type of game also like asteroids thanks rutin for all the help
    39. Septopus

      VERY EXPERIENCED C# Programmer needed

      Unfortunately, I'm working on similar goals on a very different timeline. When you say a Unity3D game, I assume you mean something that is actually 3D and has some action, like a FPS or Third Person whatever/etc..? So that's the angle this response takes. If you are going for something turn based, or otherwise not "real-time", then some of these points probably shouldn't concern you much. Some notes on your proposed setup: SQL Server: (Unless you have some super killer hardware..)Great for storage, not the best for looking up/changing data repeatedly at high frequency, even when cached. Focus on using that to store information that is infrequently changed, like login details and high scores, player stats, etc.. mostly static information that won't be changing every frame of the game. Also, I wouldn't expose the SQL server directly to your clients at all. It's just too risky and it probably won't provide you any performance benefits. Any Database access should come via the Server Code directly, and the parts that the client needs to know should be relayed to the client by the server. Windows Server is fine for hosting a game server, especially if it's written to run on Windows. The usefulness of a web services/api layer for a game server database is mostly in the realm of public access to data, like public scoreboards on your games website and things like that. You probably won't get effective access to data at 3D game speeds from a web service, plus it's just more surface area to hack. If people like your game, it will happen. Look at writing, or better yet, incorporating an existing UDP(faster) or TCP(slower but more reliable by nature) networking code solution into your client and server directly. This will give you the best performance when it comes to communicating data at high frequencies. Anyhow, just some pointers, take what you want from them. Hope they help out.
    40. Septopus

      Pub/Sub for game Servers... Are you?

      This is my general philosophy. haha So very true, I've been scouring the net for something "like" mqtt that uses UDP, not much mention of it anywhere.. I think ZeroMQ has some mostly undocumented UDP abilities, but like I said, not much mentioned about it anywhere. That's not really in my worry-house right now. Implementation concerns come with Options, not many of them out there like this that tailor to game developers. Right, and I'm not really thinking about AAA titles moving their infrastructure over to a system like mine either. Chances are they are already using the best tech they can get their hands on anyhow. I'm talking about something that might speed a game to market by a significant amount by abstracting the server build and deployment process, allowing the developer to focus more on the code and less on the system that has to support it. A lot of those specific scenarios are addressed in the .pdf I linked above. A good read so far, but I'm not done yet haha.. Essentially this is how my system works for the game I'm building, using Redis as the RAM based cross-bar, the mqtt routers are the public facing pub/sub netcode, as well as arbitrary server code execution points for distributed operations/localized entity interactions. I'm more interested in the feasibility of this thing I'm building finding some use in somebody else's game, not so much if it fits my use case.. Because it does fit my use case, perfectly, or I rewrite it. The grand idea is to leave that part open to the game developer. The architecture of the messages/topics isn't going to be predefined by the system(aside from the routing mechanics which relies on specific topic ids). Leaving the full(basic) capabilities of the mqtt pub/sub system available to the developer. Obviously there would have to be some concerns for that on a shared hosting system, but for an open-source server, I see no reason to push a format. It will all be end-user code that runs on the router(server), aside from basic routing functionality which is obviously built in. So, I'm mostly picturing this as a fairly simple, spin up the docker/virtual server in the cloud, publish your server logic in C# form to a specific topic with authentication and encryption, and now you have multiplayer support in your game, while still controlling nearly all of the code that runs on the server and not caring one bit about actually Engineering a server/netcode, solution. Not a AAA solution out of the box, but I think it might be a AAA time saver for somebody, especially for prototyping.
    41. Yesterday
    42. Hello, I am looking for a programmer to help me with a specific task that I need experience in to continue my current project. A little bit about me, I'm a full-time software developer. I create business application using the .Net stack. I'm trying to transition into the indie game dev world because I hate building boring business applications. Also, I don't want to work for anyone other than myself. Task: Building a game server for a test networked Unity3D game. What I have: SQL Server to login using test accounts. Test SQL Database Windows server to host the game server. (I think this what you use, then again, that's why I'm posting this ad) Web Services/API to handle interactions with the DB Unity3D test project Details: We will need to create a login controller in the client application. After a successful login, we need to grab the player's data from the db and load it in client. When the player joins the game, we need to connect them to the game server... then do whatever the game server does. This is only a test project. I'd like to get the experience by building this with someone who has built a multiplayer game before. I'd like to take this experience and apply it to my main project. I'm not opposed to bringing on another programmer to my main project. So if we work well together and you would like to work on the game with me, let's team up. If not, that's completely fine. Ask me about "Rev-share."
    43. Rutin

      1943 Plane Game

      Continue on your journey to make the game 1943: Create a background image then have the player start at the bottom, and start spawning in enemies with movement patterns and shooting timers. With collision you'll be able to make bullets destroy planes, and allow planes to crash into the player. Good work.
    44. You are right but I never said resources weren't available in his language. He is on a English speaking forum asking for advice though so I'm assuming there may be some difficulty. I also think you took the statement a tad far... reductio ad absurdum comes to mind. As for the unity/gamemaker thing I believe they are both quite beginner friendly so if if his goal is to use unity then he should just start with it. If he wanted to start with say cryengine then maybe a more newbie friendly engine would of been best for him to start with. I agree though that no matter what one he starts with he will gain skills that are transferable. But as I said if the end-goal is unity then just start with it.
    45. phil67rpg

      1943 Plane Game

      after I do the collision stuff what should I do next?
    46. Welcome! If you're looking to grow you skill set in 3D I would suggest looking at: https://www.thegnomonworkshop.com/ You'll also have to consider workflows and such... Normally I will do the following for characters: Sculpt -> Retopologize -> Bake High to Low -> Texture -> Rig -> Animate or Rig -> Animate -> Texture ( during the "sculpt phase" it's not uncommon to go back and forth between different packages to create clothing, armor, and other parts of the character before going into the retopologize phase ) Hard surfaces can be different but I'm also seeing a good sweep in artists using sculpting for hard surface, but it's normally cleaned up during the rebuilding phase. If I'm working on something hard surface I will usually use a 3D modeling package and not a sculpting package as personal preference. I sometimes will take that hard surface model into a sculpting state to add details for when I bake. Rigging and animation can be done in Maya, and it's preferable to rig and animate your low poly version, not your high. This is why understanding workflow is important. Texturing can be done in a number of applications (Photoshop, Painter, ect...) This is one of those crafts where hands on is key and the hours put forth are extremely important. The more exposure you have, the better you'll become. Best of luck!
    47. You're free to make that argument, but you didn't provide anything to state why this would be a bad path. It's always a good idea when saying something isn't "recommend" to add why it isn't recommend otherwise your point loses any value beyond "Don't do this because I don't think you should". What is wrong with building transferable skills using one tool and then moving over to another tool? Game Maker Studio and Unity are both great options, however it's far more important to pick the tool which will continue to motivate you to grow and go forward in your journey. It's up to the OP to decide at the end of the day what motivates them more, and there is nothing wrong with trying both to see or even picking a tool not listed. When I started I went down the "hardcore" way but it doesn't mean other people should as well. In this day and age it's amazing for how easy it is to get started in Game Development, and I'm very happy that many more people are able to get in as the entry requirements are getting smaller and smaller. The focus is really moving more to making actual games and less on working with the technology behind the tools that help you craft those games, and I'm glad for that. This is far from the truth... There are game developers from all over the world... I speak two languages English and Russian. There are people in Russia and places like Ukraine who don't speak English at all, yet they're making games. What about Asian developers that don't know English? Do you think they don't have their own communities? To think that resources are not available in a person's native language would be very naive, especially a language as popular as Spanish. If you're talking about some language that isn't popular, then yes, most likely resources are going to be limited unless someone can translate. As a final note, one's reading ability is directly linked to their passive vocabulary and will far exceed their active vocabulary. When you read books or watch videos it's your passive vocabulary at work, not active. I also took a brief look online and there are resources in Spanish for both Game Maker Studio and Unity both written and in video format. Quantity does not equal quality.
    48. therax1986

      Theraxius - HTML5 2D action game + level editor

      Maybe a little detail about technology used behind the game. Like I said before, engine (all game logic and level editor) is written completely in JavaScript. Level data (stored in JSON format in the database) is exchanged thru Ajax calls. Server side is written in PHP. All images and sounds are preloaded from the server before play. The game uses HTML5 features like canvas, Fullscreen API, Pointer Lock API, Audio,… At this moment only Chrome and Firefox are supported. The game is meant to be played on PC, phones and tablets are not supported. theraxius.com
    49. Tom Sloper

      From Uni To Remote Developer

      Any remote work you find as a raw college grad is likely to be unpaid. My advice is get a job, and look for remote work on the side. Don't move to a game hotbed until you've saved up enough money to tide you over while job-hunting in the new location.
    50. This is an adaptation of our Standard AD to forum structure due to the restructuring efforts of the site, I apologize for any formatting issues or inconsistencies as a result of this change. I have done my best to retain the previous format for our standard operating procedures (SOPs), since all current members with the exception of me and our creative & Art director were recruited with some version of what you are about to see. Project Info Team name: Honor Games LLC Project Name: Tiberium Secrets Target Aim: RTS communities Compensation Plan: Since this is classed as a modification, no direct monetary compensation is possible. Technology: -Command& Conquer 3: Tiberium wars- Sage Engine (XML code) Team Structure: 15+ members -myself: Project Coordinator/ Producer, PR Lead, Lead Writer -Creative & Art Director -2nd lead writer -Lead Coder -Lead Audio composer -Lead Animator -QA Lead -2 more 3D Artist -1 more Audio SFX Artist -1 more promotional Artist (a few other semi active/inactive contributors) Talent Needed In order of demand: -Associate producer https://www.moddb.com/company/honor-games-llc/jobs/unpaid-associate-producer-wanted-for-released-scifi-rts -Lead Artist: https://www.moddb.com/company/honor-games-llc/jobs/unpaid-lead-artist-wanted-for-sifi-rts-command-conquer-3-modification -PR manager: https://www.moddb.com/company/honor-games-llc/jobs/unpaid-pr-manager-wanted-for-sifi-rts-command-conquer-3-modification -3D Artist: https://www.moddb.com/company/honor-games-llc/jobs/unpaid-3d-artists-wanted-for-sifi-rts-command-conquer-3-modification -Writers: AD WIP ________________________________________________________________________________________________________________________ Homepage: http://www.moddb.com/mods/tiberium-secrets Contact Method secretreality7@gmail.com (include: time zone, educations/ experience, site/ portfolio/ samples) Skype: Eric Chou(Jist)/ eric.chou27 Additional Info -US Time zones bonus -Microphone Required -Use of Skype, Google Drive -Contract Signature -English verbal & written fluency -Grit -Initiative -10 to 15 hours a week minimum commitment (depending on position) Feedback Any Mission statement This project's aim is to create an aesthetically pleasing, diverse and intriguing play-style for each faction, drawing inspiration from many other works and real-world subjects (including the Tiberium-related canceled projects of Westwood & EA). Beyond the additions that we will be making, we have a desire to further diversify the three vanilla factions of the Tiberium universe. We wish to present them as they might appear following the events of C&C3 within the bounds of the parallel universe that we are creating. Greetings, We're working on a released project for Command & Conquer 3: Tiberium Wars. As an established team that has been developing this mod since 2011, our content, documentation, and accomplishments extend beyond conventional modding. For example, we were awarded two sponsored passes for the 2017 Game Developers Conference (GDC 2017), valued at approximately $2K each, for leadership. As well as 1 pass for GDC 2018. From the chief admin Khawkins,here at gamedev.net We consist of both hobbyists and individuals striving to get into the games and entertainment industries. We're looking for dedicated individuals interested and able to continue this journey with us. We've recently released, and are growing our team to expand and support our efforts (Note: Depending on the skills being contributed to the project owning a copy of said game is not required, but strongly recommended. Past familiarity with the universe and or RTS is also a strong bonus." Due to the flexibility build into our GDD to As we prefer for each team member to put their own unique spin on things Project overview Tiberium Secrets is a total overhaul mod set in a parallel universe to the Command and Conquer canon. It introduces three new factions that can stand in conjunction and potentially independent from the others within the Command and Conquer Tiberium universe. These new factions come complete with diverse units, structures, mechanics, and lore. Players will take command of a shadowy human faction intent on ensuring the survival of its species without concern for red tape or ideologies, a biological experiment turned hunter of their creators, and an artificial intelligence believing itself to be the next evolution of humanity. Comparatively minor, but fundamental changes will also be made to the original factions. New factions Artificial Systematic Intelligence (ASI) Their aim of Ascension is through the use of technology, not Tiberium, which is where the ASI split from the Brotherhood of Nod. For all their belief in the purity of the ingenuity of man, they have transcended their biological flesh, and willingly integrated their consciousness with that of their own messiah of sorts, ASIM, an Artificial Intell The Colony The Colony is heavily based on the designs similar to the appearances of deep sea and insect creatures found on earth and from other games’ universes. Their primary theme is that of a plague involving the mutation and infection of creatures. In addition to this they also have now developed with some bony and scaly attributes on top of pre-fall civilization technology. The Dream Army (D51) The Dream Army is a secretive military organization that draws heavily from the designs of the US. Military and Area 51 (Located out in Nevada). Technological advancement has been made from analyzing alien technology recovered from the Roswell crash (i.e. remains of an alien vessel). Thank you for your time & consideration, -Eric (Project Coordinator/ Producer, PR Lead, Lead writer)
    51. Hi! I am new to this forum.. I would like to start out as an indie game developer. I have completed a few official Unity3D courses and my C# programming language knowledge is good, but I'd like to do basic 3D art too. I have some knowledge in Autodesk Maya, but I am looking for a (paid) course that'll teach me some basic stuff (like creating popular games. By that I don't mean like popular like Fortnite, more like a Subway surfers clone.). I created some smaller games before, but got the feeling I am not making anything, so I'd like to pickup a course that teaches some basic concepts including character creation, rigging, animation and texturing. Where to look for such tutorials?
    52. phil67rpg

      1943 Plane Game

      here is my pic https://imgur.com/a/4fzcd2v it is very small but it is there, I know it is hard to see
  • Advertisement

Important Information

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

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!