Jump to content
  • Advertisement
    1. Past hour
    2. Cool Racoon

      How can i create a Fighting Game?

      where can i find the link to that forum?
    3. Tom Sloper

      How can i create a Fighting Game?

      I think you're asking "what engine should I use," which is not a Writing question. Moving to appropriate forum.
    4. DividedByZero

      Blending textures question

      Probably, but if I do the image becomes washed out and along with that the same symptom remains. Seems that it probably is a blend mode issue, but I can't seem to figure out, for the life of me, what parameters I need to put in to get a 'normal' (using Photoshop terminology) blend. I.e. The new image gets pasted over the original image.
    5. ALT PLUS VIETNAM

      3D ASSET BUNDLE - VIASS SIMPLE CHARACTER PACK

      ❣️❣️HEY GUYS, WE ARE VIASS - VIETNAM ASSET DESIGN ❣️❣️ Today, we introduce to you, the best 3D asset ever for your game - VIASS SIMPLE CHARACTER PACK This is a low poly asset bundle containing characters, animals and equipments. With this package, game developers can create every kind of game with polygonal style based on their imagination. Character: White Boss, zombie, knight. Animal: Dragon, horse. Equipment: Arrow, axe, bow,etc. Characters and animals have replacement color and texture. List of animations for the characters and the Dragon: idle, walk, die, attack, get hit. ---------------------------------------------------- To get a better look at our 3D product, click the link below: Unity Asset Store - Click here Follow us to stay updated: https://www.facebook.com/ViassDesign https://viass.altplus.vn/ Thank you!
    6. Hi all, I am a programmer. I am starting to learn about game programming for the Android operating system. Some games I did: Bombi: https://play.google.com/store/apps/details?id=vn.nguoiviet.bomb GoSouth: https://play.google.com/store/apps/details?id=com.nguoiviet.gosouth My ability to design is limited and currently, I don't have much experience with game programming. But I really like game programming, I hope, anyone with the same interests as me or can design, cooperate with me to create good games for everyone. Thanks for your interest !!!
    7. Today
    8. phil67rpg

      c# console snake game

      well I put your code in vs2017 and it works. I think I am going to use a list to move the snake. Do I need to use my for loops?
    9. There are no hard and fast "rules" so you can't really be "breaking the rules" 🙂 However, there are hard-won "best practices" that, 99 times out of 100, end up giving the best experience to players. You don't have to follow the best practices -- it entirely depends on what your most important goals are. Turn based game on UDP? Fighting game on TCP? RPG on top of video streaming? Whatever works best for YOUR GAME should be what you use. Your game has gameplay, and simulation, and graphics, but also a target platform, operating cost, and community/player base, which are just as important. It does help to understand what the failure modes are for the different kinds of transport, so that you can define your simulation/gameplay to work well under the particular specifics of your chosen implementation. Tp me, that's what this thread is about: "If I want to do an FPS on TCP, what should I think about?" It's not about saying "all FPS-es on TCP are doomed from the start" 🙂
    10. Another thought to add: There is a fairly serious FPS around at the moment that uses or was using TCP. It's called Ironsight. I haven't followed it, but I saw that people were complaining about the TCP and that the developers made an (unsuccessful?) effort to switch to UDP. It's probably be worth looking into if your interested in exploring the feasibility of TCP in shooter.
    11. Hello, I'm an indie game developer that has been working on a number of projects. I'm launching a website within the next couple months which will link to a demo game and an open source multiplayer networking library I've authored. I expect to use the demo game to advertise the "netcode" underneath with the hope of commoditizing multiplayer game code for indie developers. The project will be backed by Patreon. It's a serious project nearing the end of about 8 months of labour. I am looking for a digital artist to produce three assets for me for the game demo. Assets are; a) A cloaked mage, b) a ranger, and c) a warrior. I have 3d assets which the 2d art will need to be based on, these 2d assets will be used in the character selection screen. I'm looking to create a serious brand and the game demo will be in existing for awhile, likely hosted on AWS. This is a portfolio opportunity, unpaid. If you are interested (even if licensing me some of your existing work) let me know. Thanks, Jarmo
    12. Yesterday
    13. Hey, i'm new to the game developing, i have this idea of a basic fighting game, looking for a platform or an application where i can create this. The idea of the game is simple, but i don't know where can i develop this game. The game would be a 1vs1, 2vs2 or 3vs3. Every character will have its own HP stat, Movement Speed stat and Jump Speed stat, the game is based on turns, so if it is your turn you can move freely depending on your movement speed and jump speed, and you can also use 4 attacks per turn. The game is based on squares, like playing chess, the range of the attacks is calculated by squares and the movement speed of the characters is calculated by squares which can be horizontal, vertical or diagonal depending on the character. For example this is an idea of what movement speed should be like, if player 1 has 5 speed points and player 2 has 6 speed points. Jump Speed works as an additional movement speed, but you can use specific attacks while jumping. If you want to face another direction you will lose 1 movement speed point. Now with the movement speed explained, i will explain how attacks will work. Attacks are also based on squares, the range of the attack to be precise. Every character will have 5 types of attacks, which are, Charged Attacks, Special Attacks, Tilt Attacks, Aerial Attacks and Grab Attacks. Each attack will have its own range, damage, knockback and launch direction. If the opponent has 10 HP and your attack has 3 damage points, your opponent will lose 3 of its HP, and the game won't finish untill the opponent loses all of its HP. Charged Attacks are the strongest attacks, usually they have an average or high knockback. Special Attacks have neutral damage, and can also include movement speed while using them. Tilt Attacks are weak attacks that usually have low knockback so you can combo on them if you are close to the opponent. Aerial Attacks have neutral damage, and can only be used while performing a jump. And finally Grab Attacks, drags your opponent in front o you and it will perform an attack, you can add extra damage to your Grab Attacks, but you will lose your attack turns. This is the list of attacks available per category: - Charged Attacks: Forward Charged Attack, Up Charged Attack, Down Charged Attack. - Special Attacks: Forward Special Attack, Up Special Attack, Down Special Attack. - Tilt Attacks: Forward Tilt Attack, Back Tilt Attack, Neutral Tilt Attack, Up Tilt Attack, Down Tilt Attack. - Aerial Attacks: Forward Aerial Attack, Back Aerial Attack, Neutral Aerial Attack, Up Aerial Attack, Down Aerial Attack. - Grab Attacks: Forward Grab Attack, Back Grab Attack, Up Grab Attack, Down Grab Attack. Each of this attacks will be different on each character. If your opponent is behind you and you dont have any movement speed to change your position, you can perform a Back Attack, because the hitbox usually is behind you. Up Attacks usually launches the opponent vertically, if the Up Attack with vertical launch has low knockback, you can combo with other moves without moving, but if the Up Attack has high knockback, the opponent can perform an air dodge, to any direction, but vertical launching moves with high knockback can early K.O the opponent even if the opponent hasnt lost all of its HP. There are different types of hit boxes, each of them works differently. - Hit Box: Causes damage. - Additional Hit Box: Causes additional damage. (Only certain attacks have additional hit boxes) - Character Hit Box: Causes damage also in the player box. - Air Hit Box: Causes damage only when your opponent is in the air. - Alternate Hit Box: Causes damage if you choose to. (Only certain attack can have alternative hit boxes, like blasting attacks) - Trip Box: The squares your character is moving while performing an attack. - Drag Trip Box: The same as Trip Box but it drags your opponent with you while you are using the attack. - Alternate Trip Box: The squares your character will move if you choose to. - Grab Box: The range of the grab, to perform a Grab Attacks, works almost like a Hit Box. (But will have a special animation) This is the idea of how the hit box will work, of two different attacks. In which the Player 1 uses an attack with 2x6 squares hit box and Player 2 uses an attack with 1x4 squares hit box. This is an example of Player 1 using a Charged Attack with 2x6 squares hitbox on Player 2 that has 5 knockback squares. This is an example of Player 1 using an Special Attack on Player 2, that has a Trip Box and a 1x6 square hitbox that has 4 knockback squares. This is an example of Player 1 using an Special Attack on Player 2, that has a Dragging Trip Box and a 1x6 square hitbox that has 4 knockback squares. This is an example of Player 1 using an Up Tilt Attack on Player 2, that has a 1x1 hitbox with very low knockback, and causes a vertical launch to the opponent. This is an example of Player 1 using an Up Tilt Attack on Player 2, that has a 1x1 hitbox with high knockback, and causes a vertical launch to the opponent. But the high knockback let the opponent to air dodge to the right. (Air dodge has 3 movement squares) (If Player 2 had less than the half of its HP it would instanlty K.O it) This is an example of Player 1 using a Back Grab on Player 2, with a 1x2 Grab Box and 7 knockback squares. This is an example of Final Fantasy Brave Exvius, that's similar of what i plan the game to look like. But with a more cartoon look like this, it's just an idea. I accept suggestions. Thanks for reading my post, that's the basic idea of the game, i tried to be very simple with the explanation, but if someone its interested on more details i can give them by message. Which platform i can use to develop this game, that works with squares, and damage, HP, attacks, etc.
    14. Sambo Hobbs

      System Requirements

      Thank you, Steam says that I don't need it to complete the release and I did check Unity's site and typed what they said.
    15. Hey, i'm new to the game developing, i have this idea of a basic fighting game, looking for a platform or an application where i can create this. The idea of the game is simple, but i don't know where can i develop this game. The game would be a 1vs1, 2vs2 or 3vs3. Every character will have its own HP stat, Movement Speed stat and Jump Speed stat, the game is based on turns, so if it is your turn you can move freely depending on your movement speed and jump speed, and you can also use 4 attacks per turn. The game is based on squares, like playing chess, the range of the attacks is calculated by squares and the movement speed of the characters is calculated by squares which can be horizontal, vertical or diagonal depending on the character. For example this is an idea of what movement speed should be like, if player 1 has 5 speed points and player 2 has 6 speed points. Jump Speed works as an additional movement speed, but you can use specific attacks while jumping. If you want to face another direction you will lose 1 movement speed point. Now with the movement speed explained, i will explain how attacks will work. Attacks are also based on squares, the range of the attack to be precise. Every character will have 5 types of attacks, which are, Charged Attacks, Special Attacks, Tilt Attacks, Aerial Attacks and Grab Attacks. Each attack will have its own range, damage, knockback and launch direction. If the opponent has 10 HP and your attack has 3 damage points, your opponent will lose 3 of its HP, and the game won't finish untill the opponent loses all of its HP. Charged Attacks are the strongest attacks, usually they have an average or high knockback. Special Attacks have neutral damage, and can also include movement speed while using them. Tilt Attacks are weak attacks that usually have low knockback so you can combo on them if you are close to the opponent. Aerial Attacks have neutral damage, and can only be used while performing a jump. And finally Grab Attacks, drags your opponent in front o you and it will perform an attack, you can add extra damage to your Grab Attacks, but you will lose your attack turns. This is the list of attacks available per category: - Charged Attacks: Forward Charged Attack, Up Charged Attack, Down Charged Attack. - Special Attacks: Forward Special Attack, Up Special Attack, Down Special Attack. - Tilt Attacks: Forward Tilt Attack, Back Tilt Attack, Neutral Tilt Attack, Up Tilt Attack, Down Tilt Attack. - Aerial Attacks: Forward Aerial Attack, Back Aerial Attack, Neutral Aerial Attack, Up Aerial Attack, Down Aerial Attack. - Grab Attacks: Forward Grab Attack, Back Grab Attack, Up Grab Attack, Down Grab Attack. Each of this attacks will be different on each character. If your opponent is behind you and you dont have any movement speed to change your position, you can perform a Back Attack, because the hitbox usually is behind you. Up Attacks usually launches the opponent vertically, if the Up Attack with vertical launch has low knockback, you can combo with other moves without moving, but if the Up Attack has high knockback, the opponent can perform an air dodge, to any direction, but vertical launching moves with high knockback can early K.O the opponent even if the opponent hasnt lost all of its HP. There are different types of hit boxes, each of them works differently. - Hit Box: Causes damage. - Additional Hit Box: Causes additional damage. (Only certain attacks have additional hit boxes) - Character Hit Box: Causes damage also in the player box. - Air Hit Box: Causes damage only when your opponent is in the air. - Alternate Hit Box: Causes damage if you choose to. (Only certain attack can have alternative hit boxes, like blasting attacks) - Trip Box: The squares your character is moving while performing an attack. - Drag Trip Box: The same as Trip Box but it drags your opponent with you while you are using the attack. - Alternate Trip Box: The squares your character will move if you choose to. - Grab Box: The range of the grab, to perform a Grab Attacks, works almost like a Hit Box. (But will have a special animation) This is the idea of how the hit box will work, of two different attacks. In which the Player 1 uses an attack with 2x6 squares hit box and Player 2 uses an attack with 1x4 squares hit box. This is an example of Player 1 using a Charged Attack with 2x6 squares hitbox on Player 2 that has 5 knockback squares. This is an example of Player 1 using an Special Attack on Player 2, that has a Trip Box and a 1x6 square hitbox that has 4 knockback squares. This is an example of Player 1 using an Special Attack on Player 2, that has a Dragging Trip Box and a 1x6 square hitbox that has 4 knockback squares. This is an example of Player 1 using an Up Tilt Attack on Player 2, that has a 1x1 hitbox with very low knockback, and causes a vertical launch to the opponent. This is an example of Player 1 using an Up Tilt Attack on Player 2, that has a 1x1 hitbox with high knockback, and causes a vertical launch to the opponent. But the high knockback let the opponent to air dodge to the right. (Air dodge has 3 movement squares) (If Player 2 had less than the half of its HP it would instanlty K.O it) This is an example of Player 1 using a Back Grab on Player 2, with a 1x2 Grab Box and 7 knockback squares. This is an example of Final Fantasy Brave Exvius, that's similar of what i plan the game to look like. But with a more cartoon look, its just an idea. Also accept ideas. Thanks for reading my post, that's the basic idea of the game, i tried to be very simple with the explanation, but if someone its interested on more details i can give them by message. Which platform i can use to develop this game, that works with squares, and damage, HP, attacks, etc.
    16. Rutin

      System Requirements

      If you cannot benchmark yourself then you'll need to send copies to people for testing. You can either find fans willing to do it, or use paid services for this. Nothing gets around doing the actual testing. Depending on if you're using a pre-made engine or not, there might be already established minimum requirements set which means your game is either at that, or above. Finding out RAM and GPU usage should be fairly simple as well. You'll want to consider the engine's GPU card requirements if applicable. This is where closed or open BETAs come in handy.
    17. 8Observer8

      c# console snake game

      It is a popular solution how a snake can grow: using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace SnakeByPhil_WinFormsGDI { public partial class Form1 : Form { public Form1() { InitializeComponent(); CenterToScreen(); timer1.Interval = 200; timer1.Start(); } Random rnd = new Random(); Point foodPos = new Point(0, 0); const int snakeSize = 10; Point dir = new Point(snakeSize, 0); List<Point> snake = new List<Point>() { new Point(50, 50) }; private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = this.CreateGraphics(); foreach (var cell in snake) { DrawRectangle(g, cell.X, cell.Y, Color.Green); } DrawRectangle(g, foodPos.X, foodPos.Y, Color.Red); g.Dispose(); } private void DrawRectangle(Graphics g, int x, int y, Color color) { SolidBrush brush = new SolidBrush(color); Rectangle rect = new Rectangle(x, y, snakeSize, snakeSize); g.FillRectangle(brush, rect); brush.Dispose(); } private void Form1_KeyPress(object sender, KeyPressEventArgs e) { switch(e.KeyChar) { case 'd': dir.X = snakeSize; dir.Y = 0; break; case 'a': dir.X = -snakeSize; dir.Y = 0; break; case 'w': dir.X = 0; dir.Y = -snakeSize; break; case 's': dir.X = 0; dir.Y = snakeSize; break; } Invalidate(); } private void timer1_Tick(object sender, EventArgs e) { int newHeadXPos = snake[0].X + dir.X; int newHeadYPos = snake[0].Y + dir.Y; snake.Insert(0, new Point(newHeadXPos, newHeadYPos)); snake.RemoveAt(snake.Count - 1); if (snake[0].X == foodPos.X && snake[0].Y == foodPos.Y) { snake.Add(new Point(foodPos.X, foodPos.Y)); //foodPos.X = rnd.Next(0, Width - snakeSize); //foodPos.Y = rnd.Next(0, Height - snakeSize); } Invalidate(); } } }
    18. Rutin

      Dungeon Crawler Challenge - Post Mortem

      I'm glad you were able to make the deadline. I enjoyed your entry. Was the hardest one out of all of them, and I finished it by speed-running tactics. I replied to your forum post showing the completion. Assuming you're using animation frames or a timer per hit cycle, you can just do this: #1 -> Weapon Collision Checks against IDs not stored in the Hit Tracker -> If Weapon collides with a Snail then Register one attack -> Store ID for the hit Snail in a hit tracker When checking for collisions you should only check objects that do not have an ID stored in the Hit Tracker. Once Timer ends or Animation is on (x) frame to allow another hit cycle then you just purge the IDs in your hit tracker. This will allow you to maintain single hit registrations throughout. If you have two snails close enough to get hit at the same time but you only want to allow single target per cycle, then you just need to make sure once you cycle through a combat action you don't allow addition hits to be registered until you've ended your hit timer or you're on animation frame (x). Otherwise the above will work for multi-strike. If you need more help let me know. I hope to see more of your games either way. I'll be closely considering future challenges myself based on what is required and the deadline as I do all the visuals and programming myself. Even though I enjoy the overall experience and making art and coding, it just sucks not meeting the deadlines. I've failed two already, and barely completed the others on time. I don't recycle my assets after use for these, or even intend on releasing or working on these projects past the deadline so there isn't much motivation to push forward after as I have bigger projects I'm working on. Either way, keep us updated on anything you're working on. Great job!
    19. We are looking at Edutainment, as you said. When you refer to "saving the world" my first thought is keeping the environment we exist in survivable/livable. To me it's an environmental concern. Financial and other concerns disappear when the air doesn't even have enough oxygen to sustain our species.. Generally speaking the education part is the most important. The idea of making a game out of environmental concerns causes some hesitation in my mind. Since we are looking at educating the player, why not have it function as a simulation initially. The simulation teaching the player what their real world environment looks like and how it is eroding. Then the education comes in, how to, where to, why to etc do a specific thing and how it helps or harms. The game allows MMO style interactions and coordination to continue progress, but is not a requirement, players can make much slower but definable progress alone. Then the applicable local organization that works with that particular aspect of the environment is where the real world interaction starts. Players then donate time or help raise awareness via said organization and earn achievements and in-game progress. Lock significant rewards behind this interaction, causing a drive to participate real world, but participation is not a requirement for game progress. As the player progresses the real world interactions become more frequent and the in-game rewards become greater. Then, near the top end of the game, the real world interactions are about 50% of the game, rewards are accordingly difficult or rare. You can design class structure around specific environmental concerns (Metal/plastic/Electronic Recyclist, Water/Air Conservist, etc). As each player progresses in their class they are educated on the entire process of each class. For Example: how recycling plastic works and why we can recycle certain plastics but not all of them. This information is stored in each classes instructional database.... You know, i never read your blog about this, this could have all been addressed. I'll post and edit if necessary - gotta read your blog Edit: Read the blog post. Continuing on. Simulation first, education within the simulation. in game results from in game decisions. in-game results from real world decisions, and eventually in-game and real world results from real world decisions. I think you're best bet is to make this a slow transitional game. The simulation part I believe will be the most difficult. Probably have some basic idea of how it scales based on individual and group efforts. For example if a player is playing alone and doing all these environmentally improving things their progress is slower than a person who is collaborating 10 people to make changes, but there's a cap also, no more than XX people. The simulation is a microcosm of the players immediate environment uninfluenced by the world at large. The changes the player and their "guildmates" make affect their microcosm, and progress to that microcosm is greater when more guildies participate. Greater progress to the Microcosm is achieved when multiple people participate. Huge rewards and Mile-stones for Real world action - failure to participate means those who didn't show up lose out until that activity is undertaken again. I could go on for a long time with some structural ideas, Feel free to message me for more discussion if you're interested.
    20. hi Hodgman, many thanks for the hint about the UAV loading formats. At the end the problem was simple to solve. The Shader Compiler does NOT recognize in which format values shall be read So we have to explicit say read asfloat(.. then it works It took me soooo much time to find out beause i searched the problem at "so many other different corners". I hope some co-readers will have benefit when searching about this problem. About my question we can definitly say YES //in_position = out_data.Load4(t); // wrong //in_color = out_data.Load4(t + 16); // wrong in_position = asfloat(out_data.Load4(t)); // correct in_color = asfloat(out_data.Load4(t + 16)); // correct
    21. When I had submitted my project for the Dungeon Crawl challenge, it was very late at night. I was able to get everything sufficiently together to complete what was needed but I did want to write up more in the ways of a post mortum. Last Thursday I found out that we had another day to work on our Dungeon Crawler projects and I was quite releived to hear the news. I was able to get a bit of work done in Friday afternoon which basically amounted to positoning all the critters an items throughout the dungeon and doing a final check that the concluding dialogues came up and the menus looked ok and that sort of thing. The one little thing that I wanted to address in the evening was to ensure that the player would die when he landed in the water, For some reason, when a critter pushed the player into the water he would be fine and had ample oportunity to jump back out and continue on. I was feeling pretty confident I could handle that one little thing in less than an hour or so and then get everything uploaded. So having settled in to work on another machine, I ran the release build, tried a few quick tests and found assertion after assertion being thrown that I hadn't seen before. What was to be an hour or so of touch ups became four hours of franticly trying to find memory leaks and otherwise trying to stabilize things. The main culprit was from bringing over the class for the snails from an old project. A lot of things had changed with how I handle actors since I used it last and it needed more updating than I realised. Another problem was eventually tracked down to be an out of bounds array issue. A few more tests and I found that things had generally stabilized although I was still getting occasional crashes. I couldn't figure out how to reproduce them though so I just left it. Quite late at night, I checked through the list of required things and I wasn't entirely sure if I had enough Items in the game. In theory each weapon could count as an item. It might be evident that combat is easier with better weapons but I didn't think the difference between these items doesn't get expressed clearly anytwhere. I realised that I could quickly add an effect to improve the lighting when the player equips the glasses. It made sense as a power up item and seeing it work was quite gratifying. The dialogue system was something that I've been wanting to show off since WOA IV. I finally had a chance to do so with this project and for the most part it went well. I could add to conversations pretty easily and apply some logic to flow from one bit of text to another depending attributes set either in game or through the dialogue script. There were two problems I found though. The first was that I was unable to allow more than one section of dialogue that presented a choice to the player. The other was that I had never actually worked on being able to have conversations with multiple NPCs. Otherwise, I might've added a character in the lounge that you would have to retreive a flower for or otherwise setup a few other fetch quests. This is probably going to be something that gets some additional work done in the near future. The combat system... well it's not ideal by any means but I rather liked how it turned out. I haven't done a melee system before so I'm considering this one as one of the thigns that went well. Each weapon has a collision rect associated with it when you attempt to strike and it moves with the hand as a sort of swing. Anything within that rect is considered hit. Some additional work was needed to ensure that a collision with a critter was only registered once but concerned about not having time to sort that out, I just made the weapons collision rects smaller for the lower grade weapons. the result is that it's very difficult to hit anything with a dagger. It was supposed to be that daggers would require 3 hits on an enemy, short swords only 2, and long swords just 1. The ban hammer was going to take out all enemies within a much larger range but I didn't have time to make the necessary changes for that. The entire project seemed to be a continual exercise in adapting for time available. It surprised me the number of things that I just left as it was so that I could move onto the next. The invisble obstacals that were mentioned for example, some of them have explinations for being there and others don't. I just didn't have time to look into it and generally it seemed a jump would get you out of most situations. Gerneally, leaving things seemes as though it was the right way to proceed as in the end everything had come together sufficiently. But I'll need to be careful about using this project as any kind of base for future work. As for the future, there's a few things that I'd still like to finish on this project before moving on. But I don't think I'll be working on another challenge for awhile. I have a lot to sort out with my code base before I try something like this again and I'm behind on my project "One Day". It'll be good to get back to that project and when I'm able to wrap that one up I'll be taking everything I learned from it and the past two challenges and applying it to my perpetual, never going to finish it, open world sim. Or some new version of it anyways.
    22. phil67rpg

      c# console snake game

      hey guys thanks for all the input, is there anyway I can improve the snake movements? do I need to use the for loops I am using?
    23. Thank you both so much, I'll have faith. Josheir
    24. Sambo Hobbs

      System Requirements

      Hi there, I'm new to gamedev.net, but I have a question. If I don't have all OS types, but I know that I can build to all of them. How do I know what are the min and recommended specs to tell Steam? My game Super Kittens is a game developed in Unity engine and it will be released on 28th Feb 2019. It is a family friendly first person game. Thanks Sam
    25. Hello everyone, I want to present you my new game, "Vortex". Play the game online now: odiusfly.com/portfolio/vortex More games available on my website: odiusfly.com This game is available for licensing.. If you are interested, please don’t hesitate to contact me via email: odiusfly [at] hotmail [dot] com Best regards, Kyriakos
    26. CombatWombat

      Gyro + Accel values into useful values.

      I think you need to break this down a bit before trying to jump into detecting certain motion paths. Use the gyro and accel data together to form a reliable estimator of orientation and orientation rate of change. Unfortunately this is non-trivial, because it involves things like Kalman or complementary filtering to combine the data, so I'd have to second Nagle's suggestion of investigating a ready made solution from the drone community. You might want to look into using an IMU board designed for drones that also give you magnetometer data for 9 DOF. This can make your orientation estimate better. Some of the drone algorithms will likely have position estimation as well, since they typical do things like "return to take-off point" and enforce "no fly zones" (via GPS, though). Possibly you could plot position estimates over time (essentially the "path") and then check if those points are within some geometry to determine if you are doing "the sweep" motion. Maybe keep a rolling log of the last 100 positions (or however many) and compare that path to a known path that represents the sweep you want to trigger on. Sorry if this is kind of "hand wavy" and general.
    27. Have you run with the D3D debug/validation layer enabled to see if it's producing any warnings or errors? As a guess, UAVs have some weird rules around non-32bit loads... It sounds dumb, but try replacing your two Load4s with eight Loads.
    28. V3 build pictured, but the V4 upgrades are all internal to the pad.If you’re unfamiliar with my DanceForce work or the previous versions, please read the introduction of my V3 build post for the rationale and advantages of this particular approach to a hard pad and what I’m going for. In short, the DF is a slimmer, lighter hardpad that can be more reliable and consistent than conventional designs due to its use of pressure sensitive sensors that are separated from the “click action” of the actual steps. I’m now building the DanceForce V4 prototype. V4 is simpler, easier to build, requires less parts, and is cheaper. Traditionally I build and design these pads, make a bunch of tweaks, and play on them for a good while. Then I begin working on the draft of the instructional write-up, and eventually publish the full how-to guide. If I followed that timeline again, this V4 guide would appear in *checks notes* summer 2020. Let’s not do that. I began work this past weekend, so I’m just going to post a stream of photos and exactly what I’m doing as I go. Excluding pad graphics and a few incidentals, this pad costs about $160 to put together. Current Status: Core pad is done but top hasn’t been installed and control board hasn’t been assembled. These are not changed from V3. Building the Base Basic layout sketch of the initial cut pad.Note: the dimensions in this photo are slightly wrong and I had to go back and fix it. Always triple check your measurements before cutting and gluing!The base layer is 1/2″ plywood cut to 34″ x 33″. The extra inch on top will be useful for wiring. I’ve marked off the steps in pencil, and then begun adding the spacer layer. I’m using 1/8″ hardboard this time around, for shallower steps than in the past. My hope is this will reduce ankle stress and overall impact while playing barefoot. The bottom panels are 10.25″ square, the top are 10.25″ x 5.25″. The upper panels are sized to leave space for Start/Select buttons. Next step is beginning to lay out the contacts. I’m using 3″ copper tape today, but 4″ is probably even better because it’s less work and barely costs any more. I’ve added the hardboard spacers around the Start and Select buttons. Note that these go on AFTER the copper tape, which runs underneath it. Here’s a detail shot of what you’ll end up with: Finally, all of the contacts get connected together with a plus to serve as the common contact for the step sensors. That concludes the base layer. Sensor Construction Start by building the top contact. Cut four 10.5″ squares of Lexan, and cover one side in copper tape. Add a little strip around to the top side to serve as our connection point for later. It’s important here to place the contact strip off center. You don’t want it touching the extension strip on the common contact. I also clip the corners to leave space between steps.Place an 11″ square of Velostat over the bottom of the contact. It does not need to cover it completely. Then the top contact goes over it. The top contact MUST be insulated by Velostat on every edge or the step will not work. That’s why we cut it a little small. I’ve moved to 6 mil Velostat in the V4 design due to the higher sensitivity of pure copper contacts. Finally, duct tape secures the sensor in place. I’ve done a couple experiments now and it appears that too much duct tape is a bad idea. This is a pressure sensor and excessive tape applies so much pressure that there isn’t enough range left to reliably detect steps. The clipped corners leave space for hardboard strips that will fill the space between diagonal steps.Four assembled sensors. It’s a good idea to test them with a multimeter at this point, while the duct tape still isn’t that strongly bonded. You’re looking for 70+ ohms at rest, and sub-10 with foot pressure.I also add some corner boundaries at this stage. These are hardboard strips of 1.75″ x 0.5″ and they are important to have good corner separation of the steps. The gap is important, wiring is going to run through there. Electrical Get ready to break out the soldering iron – but we have some prep work to do first. Take a look at the edges where your top contacts are – is copper peeking out past the Velostat? We don’t want this. It will short if we try to take the contact over this section. A little strip of electrical or duct tape will insulate the boundary. That’s better. Now I’m going to build a solder pad from two layers of copper tape. This solder pad I’ve laid down does not connect to the top contact of the step yet. This way if the step needs to come out, the soldered wire can stay where it is.Now to solder some wires. It’s important to leave lots of extra length when cutting the wire, I’ve been screwed multiple times by not having enough spare lead. Be judicious with the heat. The copper tape solders decently enough but it’s not going to tolerate the iron for an extended period.Finally, one more layer of copper tape will link the top contact to the solder pad and shield it all in one go. And now all four arrows wired up: I’ll finish up Start and Select later. For now, we really need to neaten up those wires. Find a hot glue gun, route the wires nicely up through the top of the pad, and glue them in place. And with that, the internal construction of the pad is complete. View the full article
    29. SIr Pep

      Need some ideas

      I'd definitely build on the quest you already have in place. It'll give the game more purpose, and will give each monster the player battles more meaning. Part of any role playing game is a good story to get the player interacting and feeling like they're a part of your game world
    30. Hi, again i am at a point, were my incompetence makes me frustrated. I really try hard to solve my problems by myself before posting here. I have to mention that i have already worked with compute shader but until now i always read from one buffer and write to another. My kernel question: Is it possible in Directx11 SL 5.0 to bind a RWByteAddressBuffer to a computeshader as a UnorderdAccessView an then read a value from the buffer an write it back in the same dispatch ? This i exactly what i am doing. As a test i have also bound a StructuredBuffer to my computeShader as SRV with the same content as the RWByteAddressBuffer. When i read values from StructuredBuffer and write to RWByteAddressBuffer all works fine. => I conclude that the value is correctly read from StructuredBuffer and correctly written to the RWByteAddressBuffer Now comes the rediculous situation: If just read back the value from the same adress from the RWByteAddressBuffer and write it back the unchanged value to the same address in the RWByteAddressBuffer nothing is in the output and the model disappears. Many thanks in advance for everyone who can give me a hint. P.S. I know that i could work with two buffers, but because of the particle system (5 million) the buffers a very big and i would like to avoid this. The principle in most stages of the simulation will be, that the "old output buffer" is feeded as "input as input" buffer like a control loop. static const uint out_struc_stride = 32; // Size of RWByteBuffer_layout static const uint nThreads = 1000; // only as info, not used struct RWByteBuffer_layout { float4 Position ; float4 Color ; }; // structure buffer definition struct position_color_struc { float4 Position : POSITION; float4 Color : NORMAL; }; cbuffer CB_shared : register(b0) { uint nStructs; float time; } RWByteAddressBuffer out_data : register(u1); StructuredBuffer<position_color_struc> in_data : register(t25); [numthreads(nThreads, 1, 1)] void MoveParticles_ComputeShader(uint3 id : SV_DispatchThreadID) { uint range = nStructs / nThreads; position_color_struc input; for (uint i = id.x * range; i < (id.x + 1) * range; i++) { uint t = out_struc_stride * i; float4 in_position; float4 in_color ; bool do_read_from_byte_buffer = false; bool do_read_back = true; if (do_read_from_byte_buffer) { // read position, color from RWByteAddressBuffer ( does not work !!) in_position = out_data.Load4(t); in_color = out_data.Load4(t + 16); } else { // read position, color from StructuredBuffer ( does work ) input = in_data[i]; in_position = input.Position; in_color = input.Color; } out_data.Store4 (t, asuint(in_position)); out_data.Store4 (t + 16, asuint(in_color)); if (do_read_back) { // does NOT work even when reading first from structured Buffer // so we are shure that the value we read back from the structured buffer is OK // so reading from buffer and write back is IMPOSSIBLE ?? // read again from byte buffer in_position = out_data.Load4(t); // store bytebuffer out_data.Store4(t, asuint(in_position)); } } }
    31. MichaelAWolfe

      Need some ideas

      You could still have obstacles couldn't you (downed pillars, rocks, holes, etc.)? You did say you would see enemies wondering around the map as well correct?
    32. A name for the game has actually come up along those lines, but I'm supposed to keep it a secret. And I HAAAATE keeping secrets!!!
    33. So this is like a racing game on rails? I like irreversible's approach, slight possible tweaking: You could label each lane numbered, -1, 0, 1, 2 etc. Store the current lane position of the player as a float. Have a target lane number (as an integer) you are moving towards (could be the same as you are already in). Each iteration lerp the current lane towards the target lane (by a fixed amount if using fixed tick rate, or dT if using frame timing) On corners, preserve the lane information but because you are joining different 'segments' of track, do an additional lerp from one segment to another as you cross the corners. This way lane changing on corners 'just works'. If the difference between 2 players is less than some value (e.g. 0.5) they crash This might mean you can only turn e.g. left into a single side road from the left lane, which you may or may not want. You would also have to handle crashing on corners involving turning vehicles.
    34. Esteban5XG

      Project BlockchainZ [Available on itch.io]

      [BzPatch 2]: Updates and improvements! Hey everybody! New Patch is here! Say hello to Patch 1.0.2b (Patch notes below) A new update with nice improvements for a better game experience. Firstly we have reworked so hard the AI, so now they will react much better to the different situations, more work will be added, like advanced behaviors, different animations and there will be more in futures patches! Also we've done optimizations in the shooting feedback, first we add some shake to the camera. Also we have been working a lot in the IK stuff so when you shoot the gun move the character's arms and shoulders. And we have changed nearly all the SFXs for a more interesting version. Give it a try, you will notice with the first shoot. What is IK? IK is the acronym for Inverse Kinematics. IK is an animation technique that allows much more responsive animations in games. Unfortunatelly, this improvement forces us to turn off the option to disable the Right/Left Angle shooting until the next patch 😢 You'll see that now the difficulty level is a little bit more harder (We also took out rookie level), because we want the video game to be a really interesting challenge for every zombie killer. Nobody said that killing zombies was easy. The real challenge is to survive until your reinforcements arrive. Finally, and not less important, we have corrected some nasty bugs! Are you capable to save the bunker? Prove it and save the world: https://projectblockchainz.itch.io/projectbcz PSD.: we are still working on the story. And now we are so happy to show you some of the concept arts we have prepared. Check it! When we started developing the video game, we had the idea to create a huge city completely ruined by thousands of years of struggling. It would be a desolated scenario... More on the Devlog What do you think? Let us know on our Discord Server. Patch Notes: General improve on AI, now the bandits reacts much better. Big optimization in shooting feedback. Camera improvements. SFX improvements. IK optimizations. New SFX for each every weapon. Now the foots adjust to the terrain. The character reacts when is hitted. Fixed zombie speed bug. Not the zombies let some space after attacks. Rookie challenge level removed. Now the challenge level includes the difficulty. Challenge level adjustment in order to create a more interesting challenge for the player. Fixed some related bugs on AI. Aiming by the left is temporarily disabled while improving the character's IK. Now you can't train the last civilian in the bunker. Fixed the bug related to the updates, now it works fine. Some adjustment to max units at the same time, to avoid performance hitccups Minor Bugs Additionally, we are working on the auto-resolve feature that let the easy battles be done without wasting time Eg. when you have 20 soldiers and fight against 3 raiders. These kind of battles have no sense at this point, so we believe player doesn't need to waste time them. Just focus in the good ones. Once we have this feature totally balanced and tested, we'll update it in the next update! We really hope you enjoy these new improvements. If you find any bug, please tell us right here or through our Discord Server. Thanks a lot for all the support you are bringing to us. It's great to know how do you feel about Project BlockChainZ.
    35. Esteban5XG

      [Bz Patch 2]: How to kill a bug

      [BzPatch 2]: Updates and improvements! Hey everybody! New Patch is here! Say hello to Patch 1.0.2b (Patch notes below) A new update with nice improvements for a better game experience. Firstly we have reworked so hard the AI, so now they will react much better to the different situations, more work will be added, like advanced behaviors, different animations and there will be more in futures patches! Also we've done optimizations in the shooting feedback, first we add some shake to the camera. Also we have been working a lot in the IK stuff so when you shoot the gun move the character's arms and shoulders. And we have changed nearly all the SFXs for a more interesting version. Give it a try, you will notice with the first shoot. What is IK? IK is the acronym for Inverse Kinematics. IK is an animation technique that allows much more responsive animations in games. Unfortunatelly, this improvement forces us to turn off the option to disable the Right/Left Angle shooting until the next patch 😢 You'll see that now the difficulty level is a little bit more harder (We also took out rookie level), because we want the video game to be a really interesting challenge for every zombie killer. Nobody said that killing zombies was easy. The real challenge is to survive until your reinforcements arrive. Finally, and not less important, we have corrected some nasty bugs! Are you capable to save the bunker? Prove it and save the world: https://projectblockchainz.itch.io/projectbcz PSD.: we are still working on the story. And now we are so happy to show you some of the concept arts we have prepared. Check it! When we started developing the video game, we had the idea to create a huge city completely ruined by thousands of years of struggling. It would be a desolated scenario... More on the Devlog What do you think? Let us know on our Discord Server. Patch Notes: General improve on AI, now the bandits reacts much better. Big optimization in shooting feedback. Camera improvements. SFX improvements. IK optimizations. New SFX for each every weapon. Now the foots adjust to the terrain. The character reacts when is hitted. Fixed zombie speed bug. Not the zombies let some space after attacks. Rookie challenge level removed. Now the challenge level includes the difficulty. Challenge level adjustment in order to create a more interesting challenge for the player. Fixed some related bugs on AI. Aiming by the left is temporarily disabled while improving the character's IK. Now you can't train the last civilian in the bunker. Fixed the bug related to the updates, now it works fine. Some adjustment to max units at the same time, to avoid performance hitccups Minor Bugs Additionally, we are working on the auto-resolve feature that let the easy battles be done without wasting time Eg. when you have 20 soldiers and fight against 3 raiders. These kind of battles have no sense at this point, so we believe player doesn't need to waste time them. Just focus in the good ones. Once we have this feature totally balanced and tested, we'll update it in the next update! We really hope you enjoy these new improvements. If you find any bug, please tell us right here or through our Discord Server. Thanks a lot for all the support you are bringing to us. It's great to know how do you feel about Project BlockChainZ.
    36. Technically, if you change lane, you're moving (somewhat) diagonally, so your forward movement speed decreases. Likely you don't want to model that
    37. Hi everyone, I'm an orchestral music composer with 5 years experience. Now I would like to get experience in making music for games. I'm specialized in epic music and traditional big orchestrations, you can listen to some of my work on soundcloud/youtube at the bottom. Please contact me if you are interested, would love to hear from you. Best regards, Jonathan Soundtrack Portfolio: Rescored Trailers I did for practice:
    38. I started work on DiligentFX, a high-level renderer. As the first step, I reworked epipolar light scattering effect and made it ready-to-use component with a clear interface. Check it out on GitHub.
    39. jonri

      Islands and Land

      Yes, that is the ideal situation but it's not currently supported. There are some issue requests open for it, so hopefully it gets implemented eventually. My latest CPU numbers were just under 50% all-in, including the rest of the physics, rendering, etc. I'm not sure what I'm at for just my code. In that scene, 2 of the 3 boats were unoptimized, there are probably around 2000 potentially-buoyant faces in total, so a simpler hull should make a significant difference. I'm releasing what I have this week, and one of my goals for a future version will be to offer some options to trade accuracy for speed. I'll be sure to give it a go on mobile to see how things hold up. As you noted, this would prevent the inside of the boat from rendering. You need to sandwich the depth rendering of the closed hull between the rendering of the boat and the water. If you do find a better workaround, I'd love to know!
    40. lawnjelly

      Islands and Land

      Ahha! I have a solution, possibly. Draw the hulls first using colour without blending. This draws the colour and depth, no blending and is cheap. Draw a skybox over this, without using depth testing or depth write. This will draw the colour over the previous result. Now draw the boats. Now draw the ocean. I think this might work and would be super cheap. 🙂 /edit Ah darn this may interfere with the boat rendering. However you could use it to draw masked areas maybe, or get it to work with a cunning shader. I'm sure there must be a cheap solution! 🙂
    41. (note: there is ambiguity about where the line is drawn between raypunk - or raygun gothic - and atompunk as used in games like Fallout. I have attached a couple of images to illustrate the style I am talking about) Lately I have started browsing artwork and pictures of old science fiction movies from the 50's/60's again and started wondering - why isn't that aesthetic explored in videogames more frequently? It's a fresh and most of the times vibrant look at a future that never was, far away from the sleek designs of Mass Effect and the bleak colour palette of your average first person shooter. Let's face it, how many games can you name where the skies are a nice and warm yellow colour? Illustrators and film makers alike didn't care about realism and explored the realms of their imagination while throwing the laws of physics out of the window of their saucer shaped spaceships, and they gave us movies like This Island Earth or Forbidden Planet and the classic Star Trek series in return. So I have been trying to come up with a genre or game mechanic and I think a more campy and over-the-top version of something like Age Of Wonders would work great (yes, Planetfall might be set in a sci-fi setting but it's going in the complete opposite direction). Who wouldn't want to engage in diplomatic conversation with this friendly fellow while your fellow band of spacemen and -women fight off strange creatures with their trusty rayguns? What do you all think - is this a theme/idea worth exploring? What would make you want to play the 4X version of a 50's science fiction movie? Or would this lend itself better for a different genre instead?
    42. lawnjelly

      Islands and Land

      It might work but usually stuff like that is a big red flag to take care in case of pipeline stalls etc I think. It is all a roundabout way of trying to write to the depth buffer without writing out colour as I understand it? There may be a way of using alpha blending with transparent pixels, and getting the sorting / render order correct, maybe this will be faster. I think there is some support for changing the render order in Godot (I did it for my skybox) but I don't know if you can force this even with blending where things are often sorted back to front. Speaking for myself I'm also keen to have stuff that will work fast on mobile, so you have to be careful as things like that can kill the framerate for little visual gain. Also this is why my emphasis on shortcuts in the calculations, I saw from your latest version it was using 30-50% CPU. To give comparison, I think mine uses very low, figures around 0.1% CPU for 30 or so boats. However I think your approach could be optimized by using simplified hull (maybe a box or something) and lookup tables if you are feeling brave. I may get round to having a go at this when I eventually get home and can program again! :-)
    43. ArcanaDragon

      New Hero Added 02-19-2019

      New hero added: Haunted Nikes Click here to play Hero Land for free in your browser
    44. OK. That's a good focus. To get some ideas flowing, think of sayings or phrases other than the paper cuts thing. Like daily good deeds, or "paying it forward," or mountains from molehills.
    45. jonri

      Islands and Land

      Good point. I looked into it a little more and found it in the official documentation: http://docs.godotengine.org/en/3.0/tutorials/shading/screen-reading_shaders.html I think it should perform the same as any other screen-space post-processing shader (although I wonder if that means it would interfere with those as well), and it will only capture the screen texture once so having several boats using this at the same time won't decrease performance.
    46. We will see how to place OpenTK.GLControl on WPF window to make GUI application with 2D/3D graphics using modern OpenGL 3. This is the result VS project: EditedTriangle_WPFOpenGL31CSharp.zip How to create the project from scratch Note 1: RMB - Right Mouse Button click Note 2: Good Color calculator for normalized values: http://doc.instantreality.org/tools/color_calculator/ Create WPF application, with the name "EditedTriangle". See the screenshot: Download OpenTK.GLControl.zip and OpenTK.zip Create the empty "Libs" folder in the solution folder (where the ".sln" is placed) Unzip "OpenTK" and "OpenTK.GLControl" folder in the "Libs" folder Add references to "OpenTK.dll" and "OpenTK.GLControl.dll". For this: RMB on "References" -> select "Add Reference..." -> select "Browse" -> click the "Browse..." button -> select DLL's. See the screenshot with the result: Add "Assemblies". For this: select "Assemblies" -> "Framework" -> check: System.Drawing System.Windows.Forms WindowsFormsIntegration , see the screenshot with the result: Click "OK" button Open the file "MainWindow.xaml" in VS. Add this line as an attribute of the "Window" element: xmlns:opentk="clr-namespace:OpenTK;assembly=OpenTK.GLControl" Place this code inside of <Window></Window> element: <Grid> <DockPanel LastChildFill="True"> <StackPanel DockPanel.Dock="Right"> <Button x:Name="buttonSetBGColor" Content="Set BG Color" Margin="5" Click="buttonSetBGColor_Click"></Button> <Button x:Name="buttonSetTRColor" Content="Set TR Color" Margin="5" Click="buttonSetTRColor_Click"></Button> </StackPanel> <WindowsFormsHost Margin="5" Initialized="WindowsFormsHost_Initialized"> <opentk:GLControl x:Name="glControl" Load="glControl_Load" Paint="glControl_Paint" /> </WindowsFormsHost> </DockPanel> </Grid> Copy the code below to "MainWindow.xaml.cs" and run the project MainWindow.xaml.cs using System; using System.Windows; using OpenTK.Graphics.OpenGL; using OpenTK.Graphics; namespace EditedTriangle { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { private int _numOfVertices = 0; private int _uColorLocation; public MainWindow() { InitializeComponent(); } private void glControl_Load(object sender, EventArgs e) { glControl.MakeCurrent(); // Get a shader program ID int shaderProgram = InitShadersAndGetProgram(); _numOfVertices = InitVertexBuffers(); _uColorLocation = GL.GetUniformLocation(shaderProgram, "uColor"); if (_uColorLocation < 0) { MessageBox.Show("Failed to get uColorLocation variable"); return; } // Set a triangle color GL.Uniform3(_uColorLocation, 0.945f, 0.745f, 0.356f); // Set a color for clearing the glCotrol GL.ClearColor(new Color4(0.286f, 0.576f, 0.243f, 1f)); } private void glControl_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { GL.Viewport(0, 0, glControl.Width, glControl.Height); // Clear the glControl with set color GL.Clear(ClearBufferMask.ColorBufferBit); if (_numOfVertices != 0) { GL.DrawArrays(PrimitiveType.Triangles, 0, _numOfVertices); } // Swap the front and back buffers glControl.SwapBuffers(); } private int InitVertexBuffers() { float[] vertices = new float[] { 0.0f, 0.5f, -0.5f, -0.5f, 0.5f, -0.5f }; int n = 3; int vbo; GL.GenBuffers(1, out vbo); // Get an array size in bytes GL.BindBuffer(BufferTarget.ArrayBuffer, vbo); int sizeInBytes = vertices.Length * sizeof(float); // Send the vertex array to a video card memory GL.BufferData(BufferTarget.ArrayBuffer, sizeInBytes, vertices, BufferUsageHint.StaticDraw); // Config the aPosition variable GL.VertexAttribPointer(0, 2, VertexAttribPointerType.Float, false, 0, 0); GL.EnableVertexAttribArray(0); return n; } private int InitShadersAndGetProgram() { string vertexShaderSource = "#version 140\n" + "in vec2 aPosition;" + "void main()" + "{" + " gl_Position = vec4(aPosition, 1.0, 1.0);" + "}"; string fragmentShaderSource = "#version 140\n" + "out vec4 fragColor;" + "uniform vec3 uColor;" + "void main()" + "{" + " fragColor = vec4(uColor, 1.0);" + "}"; // Vertex Shader int vShader = GL.CreateShader(ShaderType.VertexShader); GL.ShaderSource(vShader, vertexShaderSource); GL.CompileShader(vShader); // Check compilation string vShaderInfo = GL.GetShaderInfoLog(vShader); if (!vShaderInfo.StartsWith("No errors")) { MessageBox.Show(vShaderInfo); return -1; } // Fragment Shader int fShader = GL.CreateShader(ShaderType.FragmentShader); GL.ShaderSource(fShader, fragmentShaderSource); GL.CompileShader(fShader); string fShaderInfo = GL.GetShaderInfoLog(fShader); if (!fShaderInfo.StartsWith("No errors")) { MessageBox.Show(fShaderInfo); return -1; } int program = GL.CreateProgram(); GL.AttachShader(program, vShader); GL.AttachShader(program, fShader); GL.LinkProgram(program); GL.UseProgram(program); return program; } private void buttonSetBGColor_Click(object sender, RoutedEventArgs e) { var dialog = new System.Windows.Forms.ColorDialog(); if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { GL.ClearColor(dialog.Color); glControl.Invalidate(); } } private void buttonSetTRColor_Click(object sender, RoutedEventArgs e) { var dialog = new System.Windows.Forms.ColorDialog(); if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { float r = dialog.Color.R / 255f; float g = dialog.Color.G / 255f; float b = dialog.Color.B / 255f; GL.Uniform3(_uColorLocation, r, g, b); glControl.Invalidate(); } } } } MainWindow.xaml <Window x:Class="EditedTriangle.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:EditedTriangle" xmlns:opentk="clr-namespace:OpenTK;assembly=OpenTK.GLControl" mc:Ignorable="d" Title="Triangle" Height="256" Width="290"> <Grid> <DockPanel LastChildFill="True"> <StackPanel DockPanel.Dock="Right"> <Button x:Name="buttonSetBGColor" Content="Set BG Color" Margin="5" Click="buttonSetBGColor_Click"></Button> <Button x:Name="buttonSetTRColor" Content="Set TR Color" Margin="5" Click="buttonSetTRColor_Click"></Button> </StackPanel> <WindowsFormsHost Margin="5"> <opentk:GLControl x:Name="glControl" Load="glControl_Load" Paint="glControl_Paint" /> </WindowsFormsHost> </DockPanel> </Grid> </Window>
    47. fleabay

      Assets used for free game?

      It would likely be a win in court regardless. Trademarks don't prevent all use, just certain specific uses. Trouble is, nobody wants to be the one to set precedence in court, including Turbosquid, who settled out of court recently with BMW for selling car models with the logo. (I think it was BMW) Anyway, it's a touchy subject because people think trademarks are all powerful because of the status quo and can't reason about it objectively with legal jargon. It's like telling someone that cholesterol isn't bad for you after all the years of being told that cholesterol = bad!
    48. SmaugA

      Mobile V0.1.6 Update

      ENG: This update introduces many changes: Added new user interface changes; Added game menu; Added store for starting bonuses; Added store at the end of levels; Added save system; Improved and fixed camera behavior; Added some little changes. In the store of starting bonuses purchase is due to the accumulated score points. Improving your level with score points, you will open new additional bonuses for improvement. Maximum game level is 10 now. In the store at the end of the levels, you can replenish your stocks of ammo and health. RUS: Это обновление вносит много изменений: Дополнен интерфейс пользователя; Добавлено меню игры; Добавлен магазин для стартовых бонусов; Добавлен магазин в конце уровней; Добавлена система сохранений; Улучшено и исправлено поведение камеры; Добавлены мелкие исправления. В магазине стартовых бонусов покупка осуществляется за счет накопленных очков мощи. Улучшая свой уровень за очки мощи , Вам будут открываться дополнительные бонусы для улучшения. Всего в игре 10 уровне на данный момент. В магазине в конце уровней можно пополнить свои запасы патронов и здоровья. You can download apk file here: https://drive.google.com/file/d/16pae6KTY9XHbB8cSws600jLnH31eVxxH/view?usp=sharing
    49. MiniDarkOF

      Any tips for Better Writing?

      really thanks guys!
    50. duke_meister

      Bit of a cleanup

      using System; using System.Drawing; using System.Linq; using System.Windows.Forms; namespace GdiSnake { public sealed partial class Form1 : Form { // our unchanging values: // playfield height & width const int PlayfieldWidth = 80; const int PlayfieldHeight = 40; const int CellSize = 9; const int PlayfieldYOffset = 50; const int PlayfieldXOffset = 20; Color[] CellColors = { Color.White, Color.Blue, Color.CornflowerBlue, Color.Coral, Color.Black }; // timeout to adjust speed of snake const int MillisecondsTimeout = 40; // our playfield; stores FieldVals instead of ints so we don't have to remember them readonly FieldVals[,] PlayField = new FieldVals[PlayfieldWidth, PlayfieldHeight]; // not yet used until we increase length of snake int _snakeBodyLen; // not including head // which direction (SnakdDirs enum) the snake is currently moving SnakeDirs _snakeDir; // position of the one-and-only piece of food; use our own coordinate class, Pos readonly Pos FoodPos = new Pos(0, 0); // defines the snake; each element tells us which coordinates each snake piece is at static int _maxSnakeLen = 31; readonly Pos[] _snakeCells = new Pos[_maxSnakeLen]; // guess int _score = 0; // for randomizing things like food placement Random _rnd; // how many body pieces the snake will increase by when it eats food int SnakeSizeIncrease = 2; // could've used something existing, but made a simple screen coordinate class public class Pos { public int X { get; set; } public int Y { get; set; } public Pos(int x, int y) { X = x; Y = y; } } // these make it easy (for the human) to know what each cell contains public enum FieldVals { Empty, SnakeHead, SnakeBody, SnakeFood, Border } // these make it easy (for the human) to read snake the direction public enum SnakeDirs { Up, Right, Down, Left } public Form1() { DoubleBuffered = true; InitializeComponent(); RunGame(); } public void Timer1_Tick(object sender, EventArgs e) { CheckForKeyboardCommand(); CheckForSnakeOutOfBounds(); CheckForSnakeCollisionWithSelf(); UpdateSnakeBodyPosition(); CheckSnakeHasEatenFood(); Invalidate(); } public void CheckForSnakeCollisionWithSelf() { if (_snakeCells.Skip(1).Any(pos => pos.X == _snakeCells.First().X && pos.Y == _snakeCells.First().Y)) { EndGame(false); } } /// <summary> /// Work out the initial coordinates of the snake's body parts /// </summary> public void SetUpSnake() { _snakeBodyLen = 4; // create the empty snake array cells for (var i = 0; i < _snakeCells.Length; i++) { _snakeCells[i] = new Pos(0, 0); } // randomly choose snake's initial direction _snakeDir = (SnakeDirs)_rnd.Next((int)SnakeDirs.Up, (int)SnakeDirs.Left + 1); // First set the position of the snake's head. // We'll work out the rest of the snake body coords based on which // direction it's initially facing. _snakeCells.First().X = PlayfieldWidth / 2; _snakeCells.First().Y = PlayfieldHeight / 2; switch (_snakeDir) { case SnakeDirs.Up: // make the snake's body go below the head, as it's moving up for (int i = 1; i < _snakeBodyLen; i++) { _snakeCells[i].X = _snakeCells.First().X; _snakeCells[i].Y = _snakeCells[i - 1].Y + 1; } break; case SnakeDirs.Right: // make the snake's body go left of the head, as it's moving right for (int i = 1; i < _snakeBodyLen; i++) { _snakeCells[i].X = _snakeCells.First().X - 1; _snakeCells[i].Y = _snakeCells.First().Y; } break; case SnakeDirs.Down: // make the snake's body go above of the head, as it's moving down for (int i = 1; i < _snakeBodyLen; i++) { _snakeCells[i].X = _snakeCells.First().X; _snakeCells[i].Y = _snakeCells[i - 1].Y - 1; } break; case SnakeDirs.Left: // make the snake's body go right of the head, as it's moving left for (int i = 1; i < _snakeBodyLen; i++) { _snakeCells[i].X = _snakeCells.First().X + 1; _snakeCells[i].Y = _snakeCells.First().Y; } break; } } /// <summary> /// Check the keyboard for arrow keys /// I got the code off the net (see bottom of code); no point re-creating this /// </summary> public void CheckForKeyboardCommand() { if (NativeKeyboard.IsKeyDown(KeyCode.Down)) // player hit Down arrow { // can't hit down while going up; game over if (_snakeDir == SnakeDirs.Up) EndGame(false); // change snake direction to down _snakeDir = SnakeDirs.Down; } else if (NativeKeyboard.IsKeyDown(KeyCode.Up)) { // can't hit up while going down; game over if (_snakeDir == SnakeDirs.Down) EndGame(false); // change snake direction to up _snakeDir = SnakeDirs.Up; } else if (NativeKeyboard.IsKeyDown(KeyCode.Left)) { // can't hit left while going right; game over if (_snakeDir == SnakeDirs.Right) EndGame(false); // change snake direction to left _snakeDir = SnakeDirs.Left; } else if (NativeKeyboard.IsKeyDown(KeyCode.Right)) { // can't hit right while going left; game over if (_snakeDir == SnakeDirs.Left) EndGame(false); // change snake direction to right _snakeDir = SnakeDirs.Right; } } /// <summary> /// See if snake has eaten the food /// </summary> public void CheckSnakeHasEatenFood() { // if snake head is in the same x,y position as the food // NB: First() is a Linq function; it gives me the first element in the array if (_snakeCells.First().X == FoodPos.X && _snakeCells.First().Y == FoodPos.Y) { IncrementScore(); MakeNewFood(); IncreaseSnakeSize(); } } public void IncreaseSnakeSize() { if (_snakeBodyLen + SnakeSizeIncrease < _maxSnakeLen) { _snakeBodyLen += SnakeSizeIncrease; } } public void DrawScore(Graphics g) { WriteAt(g, $"Score: {_score} Snake Size: {_snakeBodyLen}", 0, 0); } public void IncrementScore() { ++_score; } /// <summary> /// Put food item at random location /// </summary> public void MakeNewFood() { int x, y; do { // this ensures we're not putting the food on top of the snake, or the border x = _rnd.Next(1, PlayfieldWidth - 1); y = _rnd.Next(1, PlayfieldHeight - 1); } while (_snakeCells.Any(pos => pos.X == x || pos.Y == y)); // set the food coords FoodPos.X = x; FoodPos.Y = y; // update the playfield position with the food value PlayField[FoodPos.X, FoodPos.Y] = FieldVals.SnakeFood; } void CheckForSnakeOutOfBounds() { // snake mustn't be on any border cell, or game over if (_snakeCells.First().Y < 1 || _snakeCells.First().X > PlayfieldWidth - 2 || _snakeCells.First().Y > PlayfieldHeight - 2 || _snakeCells.First().X < 1) { EndGame(false); } } /// <summary> /// Move the snake pieces appropriately. I just did the simplest thing that I thought of. /// </summary> void UpdateSnakeBodyPosition() { // Last piece of snake's tail will always become empty as the snake moves // NB: Last() is a Linq function; it gives me the last element in the array (end of snake tail) PlayField[_snakeCells[_snakeBodyLen].X, _snakeCells[_snakeBodyLen].Y] = FieldVals.Empty; // move the 'middle' section of the snake one cell along for (int i = _snakeCells.Length - 1; i > 0; i--) { _snakeCells[i].X = _snakeCells[i - 1].X; _snakeCells[i].Y = _snakeCells[i - 1].Y; } // move the snake's head, depending on direction moving // the body was already moved above switch (_snakeDir) { case SnakeDirs.Up: // moved the snake head up 1 (-ve Y direction) --_snakeCells.First().Y; break; case SnakeDirs.Right: // moved the snake head right 1 (+ve X direction) ++_snakeCells.First().X; break; case SnakeDirs.Down: // moved the snake head up 1 (+ve Y direction) ++_snakeCells.First().Y; break; case SnakeDirs.Left: // moved the snake head left 1 (-ve X direction) --_snakeCells.First().X; break; } // Set the playfield position at the head of the snake, to be... the snake head! PlayField[_snakeCells.First().X, _snakeCells.First().Y] = FieldVals.SnakeHead; // Set the positions on the playfield for the snake body cells // so we know to draw them // NB: Skip(1).Take(4) is Linq; it gives me the array left after // skipping the first item, then grabbing the next 4 (so in this // case misses the first and last). foreach (var cell in _snakeCells.Skip(1).Take(4)) { PlayField[cell.X, cell.Y] = FieldVals.SnakeBody; } } /// <summary> /// Just show a message and exit (can only lose right now) /// </summary> /// <param name="win"></param> void EndGame(bool win) { //var g = CreateGraphics(); //WriteAt(g, $"YOU DIED. Score: {_score} Snake Length: {_snakeBodyLen}", 0, 20); RunGame(); } public void RunGame() { _rnd = new Random(); _score = 0; for (var i = 0; i < PlayfieldWidth; i++) { for (var j = 0; j < PlayfieldHeight; j++) { PlayField[i, j] = FieldVals.Empty; } } // create the initial snake cell coords (place it on playfield) SetUpSnake(); // start with an initial piece of food MakeNewFood(); timer1.Interval = MillisecondsTimeout; timer1.Start(); } /// <summary> /// Set the console size appropriately & draw the border, leaving room for the score /// </summary> void DrawBorder( Graphics g) { for (var i = 0; i < PlayfieldWidth; i++) { DrawCell(g, FieldVals.Border, i, 0); DrawCell(g, FieldVals.Border, i, PlayfieldHeight); } for (var i = 0; i < PlayfieldHeight; i++) { DrawCell(g, FieldVals.Border, 0, i); DrawCell(g, FieldVals.Border, PlayfieldWidth - 1, i); } } /// <summary> /// Go through every element of the 2d array, only drawing a cell /// if it has a value (other than 0). This way we only draw the /// cells that need to be updated. A bit like Invalidate() in GDO. /// Pretty self-explanatory; if a cell has a value, draw the character /// appropriate for it. The space is only used to overwrite the last /// piece of the snake's tail. /// </summary> void UpdatePlayfield( Graphics g) { DrawBorder( g); for (var i = 1; i < PlayfieldWidth - 1; i++) { for (var j = 1; j < PlayfieldHeight - 1; j++) { switch (PlayField[i, j]) { case FieldVals.SnakeHead: DrawCell( g, FieldVals.SnakeHead, i, j + 1); break; case FieldVals.SnakeBody: DrawCell(g, FieldVals.SnakeBody, i, j + 1); break; case FieldVals.SnakeFood: DrawCell(g, FieldVals.SnakeFood, i, j + 1); break; } } } } public void DrawCell( Graphics g ,FieldVals cellType, int x, int y) { if (cellType != FieldVals.Empty) { Color color = CellColors[(int)cellType]; g.FillRectangle(new SolidBrush(color), x * CellSize + PlayfieldXOffset, y * CellSize + PlayfieldYOffset, CellSize, CellSize); } } private void WriteAt( Graphics g, string s, int x, int y) { using (var drawFont = new Font("Arial", 16)) using (var drawBrush = new SolidBrush(System.Drawing.Color.Black)) { g.DrawString(s, drawFont, drawBrush, x, y); } } private void Form1_Paint(object sender, PaintEventArgs e) { UpdatePlayfield( e.Graphics); DrawScore( e.Graphics); } } /// <summary> /// Codes representing keyboard keys. /// </summary> /// <remarks> /// Key code documentation: /// http://msdn.microsoft.com/en-us/library/dd375731%28v=VS.85%29.aspx /// </remarks> internal enum KeyCode { Left = 0x25, Up, Right, Down } /// <summary> /// Provides keyboard access. /// </summary> internal static class NativeKeyboard { /// <summary> /// A positional bit flag indicating the part of a key state denoting /// key pressed. /// </summary> const int KeyPressed = 0x8000; /// <summary> /// Returns a value indicating if a given key is pressed. /// </summary> /// <param name="key">The key to check.</param> /// <returns> /// <c>true</c> if the key is pressed, otherwise <c>false</c>. /// </returns> public static bool IsKeyDown(KeyCode key) { return (GetKeyState((int)key) & KeyPressed) != 0; } /// <summary> /// Gets the key state of a key. /// </summary> /// <param name="key">Virtual-key code for key.</param> /// <returns>The state of the key.</returns> [System.Runtime.InteropServices.DllImport("user32.dll")] static extern short GetKeyState(int key); } }
    51. Brain

      Assets used for free game?

      If in doubt, use a large site like turbosquid, and pay something for the models. They have some very expensive models on there, but also some very good ones for pocket change. Most of my 3D models in my game come from there and/or are kitbashes of stuff on there. Because you've paid them, and they've certified and guaranteed that the license is correct, so long as you abide by the reasonable terms (e.g. don't go using a porsche in your racing game or an AK-47 in your first person shooter!) if someone did try to sue you, you have reasonable defence that you bought it from turbosquid, and paid for it, and turbosquid have done their due diligence, which pins the fault clearly on the asset's seller. It's not completely watertight and I am no lawyer, but this is how i see it, and it's common sense to me. I'm sure if someone was vindictive enough, they could go after you, turbosquid, and the seller of the asset together. If in doubt, take legal advice, if still in doubt don't do it!
    52. Brain

      Mr Boom's Firework Factory

      Mr Boom's Firework Factory is a fast paced puzzle game written in Unreal Engine 4 with a combination of Blueprints and C++. Through many levels of mayhem, you'll discover the secret behind the firework factory. This game is approaching the point where a complete vertical slice can be submitted to various distributors such as steam. I welcome contributors, please note that this is a hobby project and there is at yet no agreement as to profit sharing etc.
  • 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!