Jump to content
  • Advertisement

Search the Community

Showing results for tags 'Custom'.

The search index is currently processing. Current results may not be complete.


More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Categories

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

Categories

  • Audio
  • Visual Arts
  • Programming
  • Writing

Categories

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

Forums

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

Calendars

  • Community Calendar
  • Games Industry Events
  • Game Jams
  • GameDev Challenges's Schedule

Blogs

There are no results to display.

There are no results to display.

Product Groups

  • GDNet+
  • Advertisements
  • GameDev Gear

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Website


Industry Role


Twitter


Github


Twitch


Steam

Found 57 results

  1. Hi there. I'm looking for some quick opinions, advice or other comments on my custom engine architecture. For better or for worse, I have ended up with an ECS engine. I didn't intend to go this way, but countless searched through Google and the forum seem to confirm that this is the case. I have entities (mere Ids), components (pure data) and systems (holding raw resources and functionality) to operate on them. To be honest, I'm fairly happy with it. However, I have yet to implement any actual logic into my 'game', and have been looking around for details on the various ways of handling interactivity, specifically, interactively between entities and components. A topic that comes up a lot is events and event queues. I have not liked these. I don't want to add functionality to entities or components, and I don't like the idea of callbacks or event calling firing all over the place. So, I have been puzzling over this for the last two or so days. Eventually, I gave up on the musing and came to accept that some kind of event system is going to be needed. So, I had another look at the bitSquid blog (recommended on this forum), and something occurred to me. Isn't an event really just another form of entity? If it isn't, why isn't it? I also realised that I already have something pretty similar running in my engine now. Specifically, my (admitted quite naive) implementation works more or less like this. The scene hands a list of physicalComponents and their corresponding placementComponents, and the collisionDetection sub-system iterates through them, looking for collisions. If it finds one, it creates a collision, adds it to the list, and moves on to the next one. Once it is finished, the collisionResolution sub-system goes through the list, and handles the collisions - again, currently very naively, by bouncing the objects off of one another. So, I am wondering if I can just use this same approach to handle logical interactions. Entities with logical requirements have a collection of components related to interactivity (the range, the effect, and so on), and the various sub-systems iterate through potential candidates. If it notices an interaction, it creates an interactionEntity (with the necessary data) and the interactions are processed by the next sub-system. I guess I'm looking for some feedback on this idea before I start implementing it. The hope i for more granularity in the components, and the ability to add a logical scripting system which combines various components into potential interactions, and omits the need for any kind of event system. Or am I just repeating the general idea of events and event queues in a slightly more complicated way? Additionally, any comments or commentary on this approach (ECS, and so on), would be very gratefully received. I've pretty much run out of resources at this point. Regards, Simon
  2. Do you know any papers that cover custom data structures like lists or binary trees implemented in hlsl without CUDA that work perfectly fine no matter how many threads try to use them at any given time?
  3. As DMarket platform development continues, we would like to share a few case studies regarding the newest functionality on the platform. With these case studies we would like to illuminate our development process, user requirements gathering and analysis, and much more. The first case study we’re going to share is “DMarket Wallet Development”: how, when and why we decided to implement functionality which improved virtual items and DMarket Coins collection and transfer. DMarket cares about every user, no matter how big or small the user group is. And that’s why we recently updated our virtual item purchase rules, bringing a brand new “DMarket Wallet” feature to our users. So let’s take a retrospective look and find out what challenges were brought to the DMarket team within this feature and how these challenges were met. DMarket and Blockchain Virtual Items Trading Rules Within the first major release of the DMarket platform, we provided you with a wide range of possibilities and options, assuring Steam account connection within user profile, confirmation of account and device ownership via email for enhanced security, DMarket Coins, and DMarket Tokens exchanging, transactions with intermediaries on blockchain within our very own Blockchain system called “Blockchain Explorer”. And well, regarding Blockchain... While it has totally proved itself as a working solution, we were having some issues with malefactors, as many of you may already know. DMarket specialists conducted an investigation, which resulted in a perfect solution: we found out that a few users created bots to buy our Founder’s Mark, a limited special edition memorabilia to commemorate the launch of the platform, for lower prices and then sell them at higher prices. Sure thing, there was no chance left for regular users. A month ago we fixed the issue, to our great relief. We received real feedback from the community, a real proof-of-concept. The whole DMarket ecosystem turned out to be truly resilient, proving all our detractors wrong. And while we’ve got proof, we also studied how users feel about platform UX since blockchain requires additional efforts when buying or selling an item. With our first release of the Demo platform, we let users sign transactions with a private key from their wallet. In terms of user experience, that practice wasn’t too good. Just think about it: you should enter the private key each time you want to buy or sell something. Every transaction required a lot of actions from the user’s side, which is unacceptable for a great and user-friendly product like ours. That’s why we decided to move from that approach, and create a single unified “wallet” on the DMarket side in order to store all the DMarket Coins and virtual items on our side and let users buy or sell stuff with a few clicks instead of the previous lengthy process. In other words, every user received a public key which serves as a destination address, while private keys were held on the DMarket side in order to avoid transaction signing each time something is traded. This improved usability, and most of our users were satisfied with the update. But not all of them... You Can’t Make Everyone Happy….. Can You? By removing the transaction signing requirement we made most of our users happy. Of course, within a large number of happy people, we can always find those who are worried about owning a public key wallet. When you don’t own a public key, it may disturb you a little bit. Sure, DMarket is a trusted company, but there are people who can’t trust even themselves sometimes. So what were we gonna do? Ignore them? Roll back to the previous way of buying virtual items and coins? No! We decided to go the other way. Within the briefest timeline, the DMarket team decided on providing a completely new feature on Blockchain Explorer — wallet creation functionality. With this functionality, you can create a wallet with 2 clicks, getting both private and public keys and therefore ensuring your items’ and coins’ safety. Basically, we separated wallets on the marketplace and wallets on our Blockchain in order to keep great UX and reassure a small part of users with a needed option to keep everything in a separate wallet. You can go shopping on DMarket with no additional effort of signing every transaction, and at the same time, you are free to transfer all the goods to your very own wallet anytime you feel the need. Isn’t it cool? Outcome After implementation of a separate DMarket wallet creation feature, we killed two birds with one stone and made everyone satisfied. Though it wasn’t too easy since we had a very limited amount of time. So if you need it, you can try it. Moreover, the creation of DMarket wallet within Blockchain Explorer will let you manage your wallet even on mobile devices because with downloading private and public keys you also get a 12-word mnemonic phrase to restore your wallet on any mobile device, from smartphone to tablet. Wow, but that’s another story — a story about DMarket Wallet application which has recently become available for Android users in the Google Play. Stay tuned for more case studies and don't forget to check out our website and gain firsthand experience with in-game items trading!
  4. Steamie Tilted

    Test and feedback

    Hi guys, I just released my first game and would like to know if anyone wants to test it. This is the first attempt to produce a game. A total new world for me. The link to test is here. https://play.google.com/store/apps/details?id=com.steamiegames.beatem I hope you like and have fun. Any feedback will be appreciated. Kind regards, Steamie & Tilted
  5. Hi, guys! I have a rather abstract question, because I don't know which side to approach to its solution. So, I would appreciate any information. I have a task to create a simple game that generates floor plans and I following by this perfect algorithm (https://www.hindawi.com/journals/ijcgt/2010/624817/). At the moment I use squarified treemaps (http://www.win.tue.nl/~vanwijk/stm.pdf) and here no problems. I create nested array in which elements are rooms with size. Problems starts when I trying to represent generated "rooms" as edges and vertexes (a, b, c, d steps in attached picture) That representation can give me access to this elements as special "entities" in future game versions. I don't have skills in graphs (and do I need graphs?) and at the moment totally stucked at this step. How can I represent room walls as trees (or graphs?) at this step? Calculate size of squares (rooms) and convert sides to a vectors? Then in loop find shared vectors (same position by "x" or "y") and determine them as shared walls? The instinct tells me that there exist more elegant and efficient ways. Anyway, thanks for any information about this.
  6. A sticky dilemma. I'm part of a team based in USA that produces a virtual world software for remote business purposes. The businesses that use us are our Clients with users from all over the world (and expanding), but primarily in the USA. Our software makes use of customizable human avatars to use in world for each user. We have gotten requests from one of our biggest paying Clients and approval from boss to include religion based avatar clothing options (yamulkes, headscarves, skullcaps and turban head coverings currently, potentially garments too). As our software is used for business, most people want to keep their real world likeness, which may include some of this clothing because it is a part of their identity. Since this is such a sensitive topic on all sides involved and we are in a politically charged climate in the USA, clearly we don't want to offend anyone because they all pay us. In my opinion, even if this request was deemed as a reason for loss on Client's part, it will still be our company providing the service that will be affected primarily. As an emerging company we can't afford to lose users or current/potential Clients over something unrelated to the core mechanics or hardware requirements of the game. How do we put it in the avatar creation menu? Keep it with the other head coverings (so not to upset/offend the religious wear users via segregation) or separate it (to protect from accidental abuse of said garments from ignorant users and offend everybody)? As difficult as it would be for us to do (right now), do we only allow access to certain users? Would that be going too far to request information such as this from users, or for them to have to volunteer it for access? How do we talk about it with the client? When the concern was brought up, they warned us to be careful about using the term "religious wear", so we switched to the more broad "cultural wear", in which they again implied even that term might offend in discussion (because Texas users (very many) would get mad about their cowboy hats not being treated as culturally significant...) and client tactfully avoided telling us what they want us to call it themselves. How do we have a productive conversation though they put out a controversial request and are not willing to speak confidently on it's behalf?
  7. Zemlaynin

    Need feedback for UI

  8. I have an idea for a 2D game and engine. I'm looking for someone to join me with making them.
  9. I am an audio researcher developing new audiovisual technologies and currently interested in new applications for games, especially in areas of VR arcades, large immersive spaces, 360 degree installations and even escape rooms. I am wondering if anyone has any ideas how to get 32 independent channels (or more) of audio output in real-time from a game engine like Unity that can be spatially mapped to XY coordinates of virtual objects in a screen, or the XYZ coordinates for a spatial enclosure, when most game engines only allow for fixed pre-defined output formats such as stereo, 5.1 or 7.1. I have an executive summary of the technology online at (the link also includes my email address): http://bit.ly/pixelphonics Thanks, M
  10. When creating a game, particularly in Unity, is it possible to connect the game to an external device? I’m looking into ways to allow a device or devices to respond to player actions in-game, but I’ve had trouble finding sources on the subject. To help explain sort of what I’m looking into, an example of how I’d like to test out this idea is by having a physical LED light. That LED light would turn on in the real world when a player did a certain action. Is there any way to go about doing something like this?
  11. Vik Bogdanov

    DMarket Releases Product Version 2.0 Beta

    DMarket, the world’s first and only working marketplace on blockchain for in-game items trading, today announced the release of its product version 2.0 Beta. One of the key features of v2.0 is Steam integration. It allows users to trade and exchange Steam-stored in-game items on DMarket, providing a whole new model of assets monetization. The annual turnover of in-game assets trading is over $10 billion, and it has the potential to reach $450 billion. The average monthly trading volume of skins globally exceeds 60 million items. DMarket v2.0 also features an upgraded version of the Blockchain Explorer that has been supplemented with a cold wallet functionality for enhanced user security. The company launched version 1.0 of its marketplace in October 2017. DMarket Founder’s Mark, a unique piece of memorabilia commemorating the marketplace launch, has already risen in price from a few cents to thousands of dollars. To date, the trading volume of DMarket Founder’s Mark is 486,000 DMC. Most recently, DMarket signed a partnership agreement with Unity Technologies, the world’s most widely-used real-time 3D development platform. This will allow any Unity-based game to easily plug into the DMarket API and integrate in-game items into DMarket blockchain for trading and exchange. Under the agreement, DMarket will build a custom SDK for Unity games integration that will be officially certified by Unity and presented and supported in the Unity Asset Store. About DMarket DMarket is the world’s first and only working blockchain-based marketplace for trading in-game items and turning them into real assets. To learn more or test DMarket in action, check out dmarket.com
  12. Vik Bogdanov

    DMarket Releases Product Version 2.0 Beta

    DMarket, the world’s first and only working marketplace on blockchain for in-game items trading, today announced the release of its product version 2.0 Beta. One of the key features of v2.0 is Steam integration. It allows users to trade and exchange Steam-stored in-game items on DMarket, providing a whole new model of assets monetization. The annual turnover of in-game assets trading is over $10 billion, and it has the potential to reach $450 billion. The average monthly trading volume of skins globally exceeds 60 million items. DMarket v2.0 also features an upgraded version of the Blockchain Explorer that has been supplemented with a cold wallet functionality for enhanced user security. The company launched version 1.0 of its marketplace in October 2017. DMarket Founder’s Mark, a unique piece of memorabilia commemorating the marketplace launch, has already risen in price from a few cents to thousands of dollars. To date, the trading volume of DMarket Founder’s Mark is 486,000 DMC. Most recently, DMarket signed a partnership agreement with Unity Technologies, the world’s most widely-used real-time 3D development platform. This will allow any Unity-based game to easily plug into the DMarket API and integrate in-game items into DMarket blockchain for trading and exchange. Under the agreement, DMarket will build a custom SDK for Unity games integration that will be officially certified by Unity and presented and supported in the Unity Asset Store. About DMarket DMarket is the world’s first and only working blockchain-based marketplace for trading in-game items and turning them into real assets. To learn more or test DMarket in action, check out dmarket.com View full story
  13. If you have worked on somebody else’s project, you know how hard it is to makes sense of long blocks of complicated codes not written by you. There were many reasons Apple introduced Swift Programming Language in 2014 to replace Objective-C, Apple’s primary programming language since 1996. The main reason was getting a piece of work done without the programmer having to write long lines of codes and raise readability of the program written. For example, Swift, unlike Objective C, supports functional programming, doesn’t need instance variables and to state the type explicitly, and has the ability to map raw value to enum directly. Swift is, indeed, the iOS development language for lazy developers. Of course, Swift supports the traditional programming paradigms based on the rules of mathematics like any other languages. Sometimes, developers have no option but to use them. However, most of the time, Swift programmers can do away with fewer lines of code. I will validate my point with a few code examples: 1. Swift extensions are a life saver Long, boring codes make an already tough job of a programmer, tougher. For example, writing a program to square a number makes Swift look such an average programming language, it is not in the code example below. func square(x: Int) -> Int { return x * x } var squaredOFFive = square(x: 5) square(x:squaredOFFive) // 625 As I said, Swift makes way for smaller, concise code. In this example, the credit goes to Swift extensions. Squaring a number seems like a cakewalk. extension Int { var squared: Int { return self * self } } 5.squared // 25 5.squared.squared // 625 Did you know unlike Objective-C categories, Swift extensions do not have name? 2. Use Generics and avoid creating unnecessary functions Three functions and three variables are an overblow to write such a minuscule program. Swift doesn’t seem to add any value to the programmer in the following code example. var stringArray = ["Bob", "Bobby", "SangJoon"] var intArray = [1, 3, 4, 5, 6] var doubleArray = [1.0, 2.0, 3.0] func printStringArray(a: [String]) { for s in a { print(s) } } func printIntArray(a: [Int]) { for i in a { print(i) } } func printDoubleArray(a: [Double]) {for d in a { print(d) } } With generics, you can write the above example with a single function in Swift. func printElementFromArray<T>(a: [T]) { for element in a { print(element) } } 3. Use For loop when you want to use While loop While loops are unnecessarily long to write. A single loop to count numbers from 1 to 5 doesn’t have to be 4 lines long. var i = 0 while 5 > i { print("Count") i += 1 } For loops are a complete bliss in Swift. The example below will clear you doubts if you had any. for _ in 1...5 { print("Count") } 4. Use Guard let, not if let If let leads to hideous codes. A pyramid of doom is a big no-no in programming, at least with Swift as the language to develop iOS apps. Look at the code example to welcome new users. Those are nasty nested code. var myUsername: Double? var myPassword: Double? func userLogIn() { if let username = myUsername { if let password = myPassword { print("Welcome, \(username)"!) } } } Abolish the bad, bring the good with Guard let var myUsername: Double? var myPassword: Double? func userLogIn() { guard let username = myUsername, let password = myPassword else { return } print("Welcome, \(username)!") } 5. Exclusive functions vs dependent function You can create two mutually exclusive functions or you can connect between them if you’re looking to write smaller codes. The following code example finds the diameter of a circle using two exclusive functions. func getDiameter(radius: Double) -> Double { return radius * 2} func getRadius(diameter: Double) -> Double { return diameter / 2} getDiameter(radius: 10) // return 20 getRadius(diameter: 200) // return 100 getRadius(diameter: 600) // return 300 However, when the radius and diameter variables dependent on each other, you will make more connections, type less, make fewer typos, result in fewer bugs and thus rarer instances of programming blunders. var radius: Double = 10 var diameter: Double { get { return radius * 2} set { radius = newValue / 2} } radius // 10 diameter // 20 diameter = 1000 radius // 500 6. Enum to Type Safe “Adult”, “Child”, “Senior”. You are not supposed to do hard coding in Swift. The least, there mustn’t arise an event when you have type all these string values for each case, over and again. That’s a big no. Don’t do that, please. switch person { case "Adult": print("Pay $7") case "Child": print("Pay $3") case "Senior": print("Pay $4") default: print("You alive, bruh?") } When you write too much, you lose track and end up making mistakes. Did I mention, Swift has the ability to map raw value to enum directly. Let’s leverage on it. enum People { case adult, child, senior } var person = People.adult switch person { case .adult: print("Pay $7") case .child: print("Pay $3") case .senior: print("Pay $4") } You will never make a typographical error because “.adult”, “.child”, “.senior” will highlight themselves in the Apple’s IDE. 7. If let is hard to get by If let is something you’re going to encounter in every language. The advantage with Swift is you can skip it more often than other programming languages. For example, the code below helps users choose Twitter theme color. var userChosenColor: String? var defaultColor = "Red" var colorToUse = "" if let Color = userChosenColor { colorToUse = Color } else { colorToUse = defaultColor } I can cut the code. This is going to change your life as a programmer. var colorToUse = userChosenColor ?? defaultColor If userChosenColor returns nil, choose defaultColor (red). If not, choose userChosenColor. As simple as that. 8. Conditional Coalescing Hair spike increases your height by a couple of inches. So I tried to write a code to solve the problem, except against Swift convention I used three variable and if else in my code. Will god forgive me? var currentHeight = 185 var hasSpikyHair = true var finalHeight = 0 if hasSpikyHair { finalHeight = currentHeight + 5} else { finalHeight = currentHeight } I am a god-fearing programmer and have utmost respect for the Apple’s primary programming language. So I compacted the code above my measures. This is how it looks now. finalHeight = currentHeight + (hasSpikyHair ? 5: 0) The code above states, if hasSpikeHair is true, add 5 to the final height, if not add zero. May the force be with you. The power of Functional Programming Among many reasons Apple replaced Objective C with Swift as its primary programming languge, one was Objective C’s alienation with functional programming. I have written the program below in Swift as I would have in Objective C that lacks functional programming. The code looks lousy, doesn’t it? var newEvens = [Int]() for i in 1...10 { if i % 2 == 0 { newEvens.append(i) } } print(newEvens) // [2, 4, 6, 8, 10] A simple function will get me rid of the For loop and if let (I hate it) and will reduce the entire code to two lines. Just take a look back and see how much time you wasted writing for-loop. Let’s make the code explicit. Ingenious, isn’t it? var evens = Array(1...10).filter { $0 % 2 == 0 } print(evens) // [2, 4, 6, 8, 10] Functional Programming is prodigious. Functional Programming separates shrewd programmers from everyday programmers. Closure vs Func This is how a normal function looks like in in Swift. I mean this looks a fine piece of code. func sum(x: Int, y: Int) -> Int { return x + y } var result = sum(x: 5, y: 6) // 11 However, who wants to remember the name of the function and the variable when you can do away with remembering either a function or variable. I chose variable in this case: var sumUsingClosure: (Int, Int) -> (Int) = { $0 + $1 } sumUsingClosure(5, 6) // 11 Love your code and it is gonna love you back
  14. Hi, Recently I have been looking into a few renderer designs that I could take inspiration from for my game engine. I stumbled upon the BitSquid and the OurMachinery blogs about how they architect their renderer to support multiple platforms (which is what I am looking to do!) I have gotten so far but I am unsure how a few things that they say in the blogs.. This is a simplified version of how I understand their stuff to be setup: Render Backend - One per API, used to execute the commands from the RendererCommandBuffer and RendererResourceCommandBuffer Renderer Command Buffer - Platform agnostic command buffer for creating Draw, Compute and Resource Update commands Renderer Resource Command Buffer - Platform agnostic command buffer for creation and deletion of GPU resources (textures, buffers etc..) The render backend has arrays of API specific resources (e.g. VulkanTexture, D3D11Texture ..) and each engine-side resource has a uint32 as the handle to the render-side resource. Their system is setup for multi-threaded usage (building command buffers in parallel and executing RenderCommandBuffers (not resources) in parallel. One things I would like clarification on In one of the blog posts they say When the user calls a create-function we allocate a unique handle identifying the resource Where are the handles allocated from? the RenderBackend? How do they do it in a thread safe way that's doesn't kill performance? If anyone has any ideas or any additional resources on the subject, that would be great. Thanks
  15. Hey everyone, my name is Tom, and I'm the creator for the MMORPG called Zapoco. A text-based MMORPG, set in a zombie apocalyptic setting where you can train, scavenge, fight other players, build safehouses, trade and do a bunch of other cool stuff. I built it to be fully browser based lets you play from any device with a web browser for free, no downloads or personal details required, just an email address I've been working incredibly hard over the past few months on this, and am very proud of what I've been able to accomplish with it, and I hope for some of you to be able to play it and enjoy it as much as I enjoyed making it! I'll also gladly address any comments, questions, criticism, concerns, or anything else you may have (I apologize if this isn't allowed to be posted here, if it's not, feel free to remove it). Thank you. Link: https://www.zapoco.com
  16. Hello All, About 4 months ago I started a community driven Game Development Kit project on gitlab to teach myself OpenGL. It's slowly starting to pick up a bit of attention and i'm looking for more people interested in developing an open source tool which could be use to develop new game engines in the future. The library is written in C++17 and uses OpenGL core profile. Your graphics card must support opengl version 3.3 or higher. If you're interested in this project here is the gitlab: https://gitlab.com/oddly-doddly/salem-gdk There is a wiki page for contributors, but since the project is so new, a lot of the documentation is still in the works. I will be putting up setup instructions for windows, osx, and linux (Debian and arch based) this weekend. If you are interested or have questions, there is a discord link on the project's readme please feel free to contact me through discord or a reply to this thread.
  17. This is my first time building a game engine, albeit a 2D one for Android. I've decided to build a simple ECS engine. The game I'm trying to *almost* duplicate at the moment is Doodle Jump. I currently have the following systems running in my update loop, in the given order: 1) Physics (applies gravity) 2) Collision (works by predicting next position based on current position and velocity, and updates the current position on collision) 3) Transform Update (updates all entities based on their current velocities) 4) Render System (Draws to canvas) I have the following questions: I want to write a manager that generates obstacles at, say, fixed gaps and when the player reaches the middle of the screen. This manager will need the current position and velocity of the player. (It finds the player by quering the ComponentManager for all entities having a PlayerComponent) 1) Where should this manager be placed in the game loop? 2) Should it even be a manager? Can such logic lie in systems? 3) Extending upon 2, what really are Systems supposed to handle? Any help is appreciated!
  18. My team and I are developing a game engine! We would like as much help as possible. The project is currently hobby only, but pay will be appropriately rolled out to those who work on the engine. people we are looking for are: Network Programmer Artist For User Interface Physics Programmer Graphics Programmer Prerequisites wanted, but not needed, are: Intermediate C++ knowledge 1 Yr in Game development Industry Thank you for your intrest in the project. You can contact me at my email: thesargkyle@gmail.com or my discord: TheSargKyle#8978
  19. DogmaStudios

    Advice Gameplay vs Story

    What techniques do you use to help develop the plot alongside gameplay when you finally have an idea for a story down?
  20. Hey all, with the announcement of House Marque ditching their current game engine to use Unreal Engine , http://www.playstationlifestyle.net/2017/12/05/housemarques-next-game-will-use-unreal-engine-4/, I wanted to ask how everyone feels of the current state of commercial and custom game engines in the AAA and Indie Space. It seems like more and more studios are starting to switch to commercial engines, either Unity or UE4. Square Enix is creating Kingdom Hearts , Dragon Quest, and FF Remake in Unreal Engine, Rare is using UE4 for Sea of Thieves, Bend is using Unreal Engine for Days Gone, Insomniac Games used Unity for their smaller titles, and the list continues. As a graduate student that is about to graduate, I just wanted to see if the concept of fully creating a game from scratch is becoming a dying breed for engine developers, and I should focus more on creating my projects using these more popular engines, especially from a portfolio perspective. Thank you.
  21. I will be taking inspiration from WoW arenas and would like to make a proof of concept before I begin work. There must be some way I can use a WoW client to isolate Arenas and everything necessary to play them and then design a bit more to polish it. I have no idea how to accomplish this but would like to figure it out, any ideas?
  22. D956

    Character Solver

    So right now for my character solver I compute the time of impact of a character AABB and convex polygons using an algorithm based on "Robust Continuous Collision Detection Between Arbitrary Polyhedra Using Trajectory Parameterization of Polyhedral Features" by J.M.P van Waveren (link) Doom 3 uses this for all of it's collisions so it never has to deal with penetration. This seems undesireable for a couple of reasons so I've decided I'm going to switch to a position solver instead. After some googling I came across Erin Catto's 2014 GDC presention "Understanding Constraints" (link) where he briefly describes how his character solver works. I've written a simple C program (attached to this post) to play around with these concepts and I have some questions that hopefuly I will be able to get answered here. Keys for the test program: ESC - quit r - reset s - step 1-8 - switch to setup 1-8 Here's how I intepret the algorithm: Let's call the current position of the character the 'initial position'. This position never changes during the algorithm. Let's call the position we are trying to move the character to the 'target position'. This position also never changes during the algorithm. Scan the environment for overlap with the capsule at the initial position and construct a list of contact planes. Perform a plane solve on the target position to get the first solve position. Perform a shape cast from the initial position to the solve position. Move to the first hit point and collect new contact planes there. Add these new planes to the list. Perform a plane solve on the target position to get the next solve point. If the distance between the new solve point and the old one is within some epsilon, we are done. Otherwise go back to step 3. Plane solve code: vec3_t p = target_position; vec3_t a = p + local_capsule_a; vec3_t b = p + local_capsule_b; for(uint32_t i = 0; i < max_iter; i++) { vec3_t last_p = p; for(uint32_t j = 0; j < plane_count; j++) { const plane3_t &plane = planes[j]; float d1 = point_distance(plane, a); float d2 = point_distance(plane, b); float dist; if(d1 < d2) dist = d1; else dist = d2; dist -= capsule_radius; if(dist < 0.0f) { p -= dist * plane.n; a = p + local_capsule_a; b = p + local_capsule_b; } } vec3_t delta = p - last_p; if(dot(delta, delta) < epsilon) break; } solve_position = p; Couple of issues: 1. Is this interpretation correct? 2. In the test program I am only adding one new plane per shape cast, is there a reason to collect more (all touching planes)? 3. In the test program I am using the segment planes directly. In 3D I would directly use the polygon planes. If I use the direction from the closest point on the segment to the circle centre I get into situations like this, where the character ends up away from the collision geometry: 4. If I naively add all overlapping planes during step 1 I get into sitations like this: The green circle is at the source position. Step 1 will find both planes and the character will end up in the corner, not touching either segment. In the test program I solve this problem by clearing the plane list after step 2, but this is insufficient as I also need to select the proper planes after a shape cast. I can think of some approaches to solving this problem, but instead of experimenting right away, I'd like to know how other people have solved this. What is a good way to determine which planes to actually use? test.c
  23. So here's the deal : many many years ago, I saw screenshots of Miegakure, that very famous 4D puzzle-platforming game you probably all know about by now. The thing is, it never came out, not even a playable demo, except at big gaming events that I have no way to get to. As such, I decided a while ago that I had waited long enough and I decided to start working on my own mathematically accurate 4D rendering engine. Without going too deep, the point of it is that 4D objects live in 4D space, and the so-called 4D camera just cuts a 3D slice of the 4D space and of every 4D object in it, which is then passed to your regular run-of-the-mill 3D engine to display. Doesn't sound like anything too hard then. The big problem however comes from optimisation. In 3D engines, you expect your geometry to never change ever, allowing for a lot of cool stuff like GPU caching and the like, and is usually pretty vital for performance. However in a 4D engine, the thing that never changes is your 4D geometry, not the 3D geometry that results from the cutting (that in fact changes every frame). The more mathematically inclined will also think about spatial complexity, since in 4 dimensions you have "a lot more space" to put objects in (purposefully keeping it vague). Moreover, I don't want to go through the trouble of building an actual 3D engine, because a lot of existing engines do that a lot better, and I would probably waste all of my time and motivation working on 3D instead of 4D. As a demonstration, my very first demo uses Three.js and is basically a 4D enigma : http://mattias.refeyton.fr/PAF/slicing . The goal is to get to the other side of the wall where the green cube is, knowing that the wall is too high to jump over and that you can't go around it. You can use ZQSD to move (French keyboard, sorry), and A and E to look "ana" and "kata", which are the 4D equivalent of left and right. You'll excuse the roughness of the whole thing, as it was done in 5 days for a school project (it was the perfect opportunity). This has only been tested on Firefox and Chrome. Hence my question : what do I use as a foundation to work on this ? I'd like to use either C, C++ (for performance) or Haxe (for the multiple targets), if that gives any leads. Of course, doing it from scratch is a totally valid answer, as I would be able to include many 4D-only things (such as 4D lighting and other cool shit) that I'm having trouble seeing how I could implement them in an existing engine. Another thing to take in consideration is that there's probably going to be a 4D physics engine to come with it, and that I'm not sure how hard or easy making that work with an existing 3D engine would be. Also I'm killing two birds with one stone by asking if anybody would be interested by a stream of this. I'm planning to eventually stream my work on this, which would include math on blank paper, and heavily mathematically-inclined discussion, not just coding (relatively little coding in fact).
  24. The last Alpha release of Lord of Dwarves was very playable. Most of the game features are in, however there is still a lot of work to be done balancing the game and making sure the pacing feels fun and challenging. For the last two months I’ve been working on some of these balance & pacing issues. Below I will talk about a few specific gameplay aspects that were not working and how I’m changing them to make the game feel just right. Skills Originally dwarves had 16 skills they could level up. This large number of skills encouraged the player specialize their dwarves in the wide variety of skills but then punished them when they wanted to focus many dwarves on a task that required only one of those skills. As a result I reduced the number of skills to 7: Hauling, Labor, Crafting, Cooking, Smithing, Needlesmithing, and Engineering. Now the player can have their dwarves focus on collecting wood one day, mining deep the next day, and building a castle on the third. These are all jobs that laborers excel at so they can switch between them while still benefiting from their labor skill value. As a bonus, 7 skills are much more approachable than 16. Health This is an issue I’m still wrestling with but I’ve come up with a system that I’m liking more and more. Previously I created a novel wound system where wounds would be applied to individual body parts in 3 severity levels: minor, severe, and grievous. There was nothing wrong with how this system worked it was just more detailed than it needed to be. From the players perspective they just needed to manage doctors and make sure they had enough bandages. The actual wounds were mostly irrelevant. The small benefit of flavor to know that Stouthammer got a leg wound from a goblin just didn’t fit the pacing of the rest of the game. So I decided to switch to a modified health points system. Now the player can focus on the supply chain for fixing wounds without having to worry about individual wounds. Although less novel a health points system is simple, immediately understandable, and frankly, fun. Additionally I also added “armor points” based on a dwarfs equipped armor. These armor points are lost first in combat and recover quickly after combat. This also has a rewarding side effect. Now when a player goes to all the effort of crafting a suit of armor they can immediately see the benefit of all the work as the dwarfs armor points increase. Renown Previously if the player wanted more dwarves to join their kingdom they needed to craft beds to accommodate the extra population. Low tier beds could only increase population so much before the player had to collect rare materials for higher tier beds. This system was novel and granted a good progression feeling. However it allowed for no diversion in gameplay as it forced the player into making a ton of beds every single game. I have since replaced the bed system with a Renown system. The dwarven kingdom has a renown value based on the value of various things in the kingdom. The player can actively increase their renown in a number of ways. Crafting items (chairs, armor, statues, etc), building structures, and domesticating animals all increase renown, which in turn increases the population. Now the population will increase no matter where the player focuses their attention. Focusing on combat and building arms & armor will increase renown. Likewise avoiding combat and focusing on building structures will also increase renown. As long is your kingdom is growing in some way your population will too. Now the player can try a different play style every game and still progress. Loot Monsters now drop loot! Well to be fair they dropped weapons & armor before, but now they also drop coins, meat, and the occasional rare item. Previously killing monsters didn’t have much of a benefit – except you know preventing civilians from being murdered. Now the coins gathered from monsters can be used to purchase items from markets. Or they can be kept in a vault underground for the boost to renown that they provide! Additionally the player may want to attract more monsters for a chance at rare loot. Scaffolding Building great structures is a very important part of the Lord of Dwarves feel. In addition to looking cool these structures are functional as they hinder and slow invaders from getting to the dwarves. But building them was always too slow. Some background. To build a tall wall dwarves need a boost to get up to the high blocks. This boost is provided by scaffolding that the dwarves can set up. But if the wall is 10 blocks tall by 10 blocks wide that’s 100 scaffolding that needs to be crafted and individually placed next to the wall. It took forever! I’ve recently improved scaffolding so that when a dwarf emplaces it, it creates scaffolding three blocks tall. Now only one third the scaffolding is needed. Additionally better quality scaffolding covers more blocks, up to 9 blocks tall. In this way the dwarves can quickly cover a wall in scaffolding allowing them to build a wall in a much more enjoyable time frame. Hauling In Lord of Dwarves the player harvests resources, collects them, and then uses them in their crafts. Collecting those resources could be very time consuming. If felling a forest generated 100 logs, each of those logs would need to be fetched by a dwarf and brought to a storage area. After about a year of gameplay the player would often have 2000 or more backlogged items waiting to be gathered. A elegant fix to this was to allow dwarves to carry multiple items at once. Now a single dwarf can go out to the forest, pick up three logs, and bring them back nearly tripling their efficiency. Additionally as dwarves get stronger they can carry more and more requiring fewer and fewer dwarves to do the same job. This change has greatly increased the players ability to maintain a clean kingdom and an efficient production chain. Those are some of the major systems I’ve been working the last few months. There are numerous minor systems I’ve also been improving like roads, storage priority, soldier uniform efficiency, and even multi threading the path-finding code. Lord of Dwarves is a big game and I’m trying to get the feel just right before I release it. Wish me luck!
  25. I've been working on creating my own version of Mario Maker or Lunar Magic with the exception that you can create your own graphics and program your own characters from scratch to create any kind of 2D game that one can think of... at least in my opinion! I created the project because I wanted to see if I could do it but, more importantly, to be able to create my own games if I happened to see a games did was not out on the market or simply to recreate a game that already exists and add my own twist to it. Francois DIY is a collection of editors and an engine for playing, creating maps, creating graphics, and programming sprites. The award-winning sprite inspector is personally my favorite. "award-winning" is a pun for "I think it is cool". Games can interface with a real gamepad but are meant for the PC. The experience has you both creating and playing your own games. You create to play and play to hack! Link to demo: Francois DIY Demo Fixed the link. The HTML document was not uploaded. Also on another note the game plays better with a gamepad than the keyboard which seems to be buggy.
  • Advertisement
×

Important Information

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

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!