• Advertisement

Search the Community

Showing results for tags 'Learning'.



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

  • News

Categories

  • Audio
  • Visual Arts
  • Programming
  • Writing

Categories

  • GameDev Unboxed

Categories

  • Game Dev Loadout

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
  • Topical
    • Virtual and Augmented Reality
    • News
  • Community
    • For Beginners
    • 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
  • 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

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.

Developers

Developers


Group


About Me


Website


Industry Role


Twitter


Github


Twitch


Steam

Found 115 results

  1. Advice

    Hi there, I am currently studying a diploma of screen and media and want to move on to the bachelor of game animation and design after this course finishes. I was just wondering if there was any advice anyone had on landing job interviews and finding work in general for this field. I was also wondering how hard it is to find a job in this field for females as well? many thanks
  2. Hi, I am currently a college student studying to become a Game Developer. I need to interview current game developers for a class I'm taking. if anyone seeing this could answer just the 5 questions that I have provided below as well as your name, current position, and how many years you've been in the game industry. I'd really appreciate any responses. Name: Position: Year in the industry: What was the starting salary? How many hours do you work? What did you learn outside of school that was useful? How did you get your job and how hard was it to find it? how was this job different than you expected it to be? Thank you for your time. -Alex Daughters
  3. I'm looking for people to collaborate with on a (small scoped) project of our choosing. I'm ideally looking for something that we can publish to an app store in under 6 months and then reassess the situation before deciding on next steps. I'm not terribly concerned about genre/art/2Dvs3D/platform/etc, I think it's more important to gather a group of like-minded individuals and then make those choices once we understand the skillset of the people involved. I want to treat this as a learning experience, a way to add another game to our CVs, and potentially as a way to meet people who can continue to collaborate in the future. Full Disclosure I've tried this in the past (using the similar Reddit forum) and gotten burned every time. Because of that, I want to make sure that I'm only collaborating with people who will be directly contributing to the product - art/sound/animation/development/etc. I'm not looking to work with people whose responsibilities are limited to entrepenuer/"idea man"/project management. About Me By day, I'm a Principal Software Architect at an enterprise software firm. I've been working in Software Development for around 15 years, mainly focusing on the Microsoft stack - C++, C#, .NET, WPF, databases and most recently with modern architecture (containers, Docker, REST APIs, RabbitMQ, etc etc). I have many years of Product Ownership, Project Management, and leading a dev team from an idea to a released product, so I can very comfortably "rein in" the scope of work, ensure we're driving towards an MVP, and make sure we're all on the same page about decisions we're making. By night, I'm a hobby Game Developer. I've been playing with game dev for years (like basically every person who gets into Software Dev) from DirectX 9 through XNA, GameMaker Studio, and the last 5 or so years have been in Unity3D. Feel free to browse my Github (https://github.com/natertots). I've "published" a couple very, very basic games by myself. Here's one: https://play.google.com/store/apps/details?id=com.NaterTots.Sloth . Don't get your hopes up. Being an architect by profession, I sometimes focus on spending too much time architecting the "perfect" solution to a problem. Case in point - I've spent the last couple weeks making a Data I/O layer to more easily create data objects that get serialized/deserialized generically from any of a number of locations (locally, web, save location). I have a strong programming background and feel comfortable implementing most any aspect of a game. About You A passionate contributor: art/sound/animation/development/etc. Experience level doesn't matter. I don't think we should try to enforce hours/time contribution, just as long as we're not stalling and continually making progress, even if it slows at times. Someone who's in it to learn and get better. We're not going to make the next PUBG or WoW. I don't even want to have the expectation that the focus of this project is to make money. A good communicator. I've had the best experience working with a combination of Slack and Trello. I'm in the EST time zone and will spend most of my working time around 8pm-midnight, so being available at some point during those times to chat would be a big plus. Willing to work in Unity 3D and (if a dev) program in C#. Sorry this is a narrow scope, but since I've focused so much effort on ramping up on this platform and language, I would rather not shift away from it. Note: I'm just looking for people "willing", not necessarily experienced. I look forward to working with you, Nate
  4. Hail to you, our wise readers! Gods generously gifted you all with the power and knowledge. The time of great trials is coming, and the people of Egypt - your people - will need your help. Put your powers to a good use and lead the people of Egypt to prosperity! In other words, we're happy to share with you our first trailer! Many indie game devs out there struggle with making a good trailer for their games. We're not an exclusion Our game has both strategical and historical components and we wanted to show off them both. So instead of making only one trailer, we decided to make two! First one for the historical component and another one to demonstrate the mechanics of the game. Take a look at the result and let us know what you think! Check our page on Steam and add the game to your wishlist!
  5. EDIT: I've found a couple of people I'm gonna try and make something with. But thanks for taking interest in my post! Greetings! My name is Tobias, I'm looking for one (or more) co-developers, who would be interested in starting up a small team. I would like this to be a learning experience at first, where we create multiple small games, both to learn game development in general, but also how to work as a team, and of course if we are a good match regarding personality and all that jazz. I'm a web developer in my day job, and have tried coding small games before (pong, snake). But I want to get better, and I want to work with other people. I don't want to decide how and what, that's for us to discuss together. However I'm clearly most proficient working with the HTML canvas, with object oriented TypeScript. But I'm open towards almost anything. If I don't already know it I can learn it, and I would prefer a partner in crime with the same atitude. Beside that, I don't have many criteria regarding you, but I think we should also match in these areas: Not a complete newcomer to programming. I'm still a junior developer myself, and would love to teach you what I know, but learning someone up from ground is too much. Realistic (mature?), but with dreams. - No we won't make something big right now. We'll build, and learn, then build some more. And maybe in the future, we can make something big. I don't really take your age (I'm 30), where you are from (I'm from Denmark), or similar things into account, as long as you have ambitions and dedication, and are a generally nice and chill human being. I hope to hear from you. Best regards. -Tobias
  6. Learning game development in Unreal Engine could be a daunting task for someone who don’t know where to start, and a cumbersome process if you don’t organize your progression correctly. One thing commonly known by experienced developers and by people unfamiliar with coding: mastering a development language is a long and difficult task. From blueprints to C++ in Unreal Engine If you want to learn fast, you need a good learning strategy. Unreal Engine contains a very powerful tool which you can use to learn C++ faster: its blueprint system. Blueprints are extremely easy to learn (and you may already have a good knowledge of them). Thus you can conveniently use them as a guide for writing code in C++. This is the reason why I am writing a tutorial series on how to make the transition from Unreal Engine blueprints to C++. Learn and practice C++ Following this tutorial, you’ll acquire new concepts of C++ programming in every chapter. Then following chapters will give you reasons to reuse and practice those same concepts. There’s no better way to wire you brain. Link to the tutorial: [Tutorial] Learn C++ in Unreal Engine 4 by making a powerful camera Please do send me as much feedback as you want. I’ll be considering every constructive remarks and taking them into consideration. Your feedback will help me to improve and update the existing chapters and to make the next one better.
  7. Learning game development in Unreal Engine could be a daunting task for someone who don’t know where to start, and a cumbersome process if you don’t organize your progression correctly. One thing commonly known by experienced developers and by people unfamiliar with coding: mastering a development language is a long and difficult task. From blueprints to C++ in Unreal Engine If you want to learn fast, you need a good learning strategy. Unreal Engine contains a very powerful tool which you can use to learn C++ faster: its blueprint system. Blueprints are extremely easy to learn (and you may already have a good knowledge of them). Thus you can conveniently use them as a guide for writing code in C++. This is the reason why I am writing a tutorial series on how to make the transition from Unreal Engine blueprints to C++. Learn and practice C++ Following this tutorial, you’ll acquire new concepts of C++ programming in every chapter. Then following chapters will give you reasons to reuse and practice those same concepts. There’s no better way to wire you brain. Link to the tutorial: [Tutorial] Learn C++ in Unreal Engine 4 by making a powerful camera Please do send me as much feedback as you want. I’ll be considering every constructive remarks and taking them into consideration. Your feedback will help me to improve and update the existing chapters and to make the next one better. View full story
  8. I noticed when constructing std::set using placement new,like this 1 2 std::set<int> *pSet = (std::set<int>*)new char[sizeof(std::set<int>)]; new(pSet) std::set<int>; the placement new in the second line caused memory increased,but there isn't any std::set destructor available,so how to properly clear std::set constructed using placement new,when I don't want to delete the pointer because I want to keep the pointer for future use?
  9. First Game Maker Program?

    To all the game devs out there, what’s a good game design program to start with? Mainly for platformers and/or rpgs. I've heard of quite a few, but I don't know where to start.
  10. For a RPG with online components like player(s) vs. player(s). And client–server for arenas. Any links, articles, posts, books, tips, best practices, and resources? Thank you Edit: multi-platform: win, OS10, and Linux Edit2: links https://www.reddit.com/r/PUBATTLEGROUNDS/comments/7p0n18/the_truth_of_online_game_cheating/ https://stackoverflow.com/questions/960499/how-to-prevent-cheating-in-our-multiplayer-games https://stackoverflow.com/questions/13826786/how-to-secure-client-side-anti-cheat?noredirect=1&lq=1 https://stackoverflow.com/questions/15760077/android-board-like-networked-multiplayer-game-anti-cheating?noredirect=1&lq=1 https://stackoverflow.com/questions/143231/protection-against-automation/143241#143241 https://en.wikipedia.org/wiki/PunkBuster https://en.wikipedia.org/wiki/NProtect_GameGuard https://en.wikipedia.org/wiki/Valve_Anti-Cheat https://en.wikipedia.org/wiki/Cheating_in_online_games#Anti-cheating_methods_and_limitations https://en.wikipedia.org/wiki/Executable_compression https://en.wikipedia.org/wiki/Blizzard_Entertainment#Technology https://esports.easyanticheat.net/features/ https://nakedsecurity.sophos.com/2017/03/10/how-online-gamers-use-malware-to-cheat/ https://www.google.ca/search?q=Anti-cheating+techniques+for+games&client=firefox-b&dcr=0&ei=faDGWqe7IpC6tQXqlKu4Dw&start=0&sa=N&biw=946&bih=885
  11. Before "Starting Fresh" I'd like to take a moment and look back on the 1.6 years PolyInteractive has had in the gaming industry, looking back to when we first bashed our heads together and conjured up the amazing idea to put our gaming degrees to good use and start our own gaming studio... Oh how I envy our old bright eyed and bushy tailed selves, we were so optimistic. THE BEGINNING We started off by registering our company on "Companies house" and this was it, this is what made us official and if you searched for PolyInteractive Games on the Companies House website you'd find us, it was great. Later in that day we looked into getting a loan, those big bad scary things that you should probably avoid especially if it's coming from the Government/ loan shark, or get a loan from a wealthy relative/ bunch of relatives, I'd have taken the latter if it was an option, however, it was not, so I went with the loan shark... I jest, Government, I went with a Government loan. How much did I get? I managed to get a £15,000 loan because my credit was amazing *Insert amazing gif* The application and gaining the £15,000 was a month-long process that involved business plans, future projections, proof of identity etc... etc... We then over the course of 7 months spent the £15,000... We bought new equipment, a bunch of licenses like Photoshop, Illustrator, Substance painter and 3DS Max, computer desks, an accountant and a space to rent... Everything was looking great, we even found a 2D artist, a 3D artist and a programmer all willing to work for free and reap the rewards of a finished game (they'd get a % of what the released game would make) THE DOWNFALL The downfall all started when our programmer handed in his resignation to his day to day workplace as he wanted work full time on the game, him not being big on his IT job in the first place really helped him in his decision to move to us, however, he was that good at his job he was given a higher wage to stay at his IT company, and who'd blame him, with the raise he got we couldn't argue, and with that swift blow our programmer was gone. After our programmer left our 2D artist went a.w.o.l and vanished and we still to this day haven't heard from him, not long after our 3D programmer became so busy with the day job that he too slowly vanished into the black. We started looking online for people to fill these empty seats & holes in our hearts but no one was willing to work for cash that a game may or may not make, thus leaving us with a game that was close to being half complete. HOMELESS A month went by after we lost our team to their day to day lives and temptations of better wages that we started to spiral out of control in our personal lives, Alex and myself found our selves technically homeless, living out of our office space which was 7 foot wide by 20 foot long, and the only thing separating all the companies in this office space was a very thin wall, thin enough you could hear could hear the next business, it was usually best working with headphones in to avoid distractions. We used to cover the doors glass panel and sleep in hidden placed (under desks, behind shelves) so that other business didn't know we were sleeping in an office space that didn't even have a shower (we cleaned in the toilet sinks) but we still worked on the game, Alex being the 3D artist and myself being the 2D artist and together being game designers, waiting for a programmer to answer our Polycount advert. Homeless or not, we still worked our asses off. THE SAVIOUR A few weeks went by of radio silence until we finally got an email, a British student studying in Sweden answered our prayers and this person was a programmer, we rejoiced and got the game to a half-completed state within a few weeks, just in time for EGX. To go to EGX we needed £700 but we only had £350 in our bank left over from the £15,000 we had originally loaned, so we called up the EGX representatives and asked if an exception could be made to which they agreed, we would pay half now and half later, things were finally looking up for us. THE ROAD TO EGX Now you might think that things were easy from here on out, but we had to figure out a way to get to London, and stay in a hotel room for 4 days during the event, so our producer who's good at this sort of thing finds us the best-staying deals and he himself is willing to drive us down there to show off our game, however, we just spent the last of our money on getting the ticket... Needing the money Alex throws his car on Facebook for £300 ono and within a day Alex gets a reply to meet up with the guy willing to buy the car, Alex sells the car for £200 and an ice cream. (He never did get that ice cream) EGX We spent 4 glorious days at EGX, we met some new faces and some old, I met old tutors who had gone on to creating their own games company and making it successful & met new games companies also trying to make their way in life just like ourselves, we ate homemade meals as our B&B apartment thing had a small kitchen and our producer was very nice to us and took money from his own pocket to feed us. While at EGX we had the opportunity to meet with publishers, publishers like Sindiecate, Play Stack & Rebellion, all amazed at how quickly we put together our game and how we went about making it but none of them took the bait, no one wanted to publish our game, so we left EGX, we were still happy because we got to meet so many people but slightly disheartened that publishers didn't want to help us in making our dream. When we got back to the studio we poked around for more publishers sending emails to at least 30+ publishes in and out of the UK, about 80% didn't reply and the 20% that did wasn't interested or didn't work in the mobile games market. Later that evening we released out game Rise of Factions: Sparta, only half finished with a promise to complete it when we can for free. THE AFTERMATH After releasing Rise of Factions: Sparta we sat and waited and watched the installs of the game, for days no installs were added to the Google Development Console, we pushed it as hard as we could on social media sites, we didn't have any cash to pay for advertising, so all we could do was watch as no one installed the game, and we're certain it's because of the £0.99 price tag we attached the unfinished game, but a lesson was learnt, the industry is harder than it looks. Myself and Alex were given a week to move out of the office as we had overstayed our welcome for 2 months owing our landlord £1200+ and our accountant services we discontinued and a payment of £700+ was also due to be paid back, making a nightmarish sum of £1900 to be paid back, to which our loan also wanted us to start paying back at a £350 a month sum... We managed to hold things off as we'd just become more homeless & because we were too broke to start paying any of it back. Myself and Alex found a very very small place to live, we chucked out the bed so we could move our office into the only living space there was and we both slept on the floor, myself on a futon I managed to save from my last relationship and Alex in his old trusty sleeping bag, and we slept like this for 4 more months, we were beaten down, but we weren't out for the count. .............................................................................................................................................................................................................. I'm going to leave this blog here with you and give you the rest of the story in a weeks time, I didn't realize that I would fill a blog with so much content.
  12. Resources about how to implementing DIY DRM scheme on the web are limited. Requirements: Convenience and not annoying for the User User account for update and online features Watermarks Product key Code obfuscation Respect fair dealing Other such things: Easter egg, Trading Cards, Stats, Achievements, Modding, Leaderboards, and Unlockables. Any resources? ( some links, articles, posts, books, tips or best practices)
  13. Hi, My name is Aaron. I have been a software engineer/ programmer going on 8 years working with languages such as C++,C#, Java, JavaScript. Most of my development experience has been backend development. I always wanted to get envolved in gaming development just never found the time. I am a quick learner and looking for a experience where I could work with a team to learn about game development and also help create cool games. I could contribute 15-20 hrs a week mostly in the evenings I am currently located in Washington DC. If you have any projects that you are looking for some help on or think I have skills that could help please don't hesitate to reach out. -Aaron
  14. Advice Question for Non-Musicians

    When seeking a composer for your games, what is it that you will typically look for when hiring someone? What about their music makes you want to employ them? what do you look for in regards to professionality? I'm really curious as i'm seeking to get my foot in the door, but i want to know what i should be doing to impress you and get commissioned! thank you!
  15. I'm trying to get into game development on linux, But i want an Unity/Unreal like environment to start out with, So i found out Unreal is build-able on linux, and i had a few problems but managed to mess with it enough to get it running, but all the material's are pink for some reason, i'd like advice on how and if i can fix the materials being all pink and super reflective looking, or if there's an alternative i could try similar to Unity/Unreal for linux.
  16. Hi Guys, really pleased to announce that my 5 part series on creating a 2D UFO game using the Orx Portable Game Engine has been published in the articles section. The series is designed to help beginners download Orx, then use the tools to create your first project in your favourite IDE/OS. It then takes you step by step through numerous topics: Creating a playfield The ufo movement Keyboard controls Collisions Physics Scores Sounds and; Shadows The series starts over here: How to write a 2D UFO game using the Orx Portable Game Engine - Part 1 If you find any problems, or enjoyed going through it, I'd love to hear about it. Graphics for the article series were kindly designed by my friend FullyBugged.
  17. I need a mentor

    Hello my name is Erik Reis i'm 15 and i just got into game development. I don't want to spend hundreds of bucks on online classes i just want someone to help me. Kinda like a mentor or another new developer I can learn with. I'm young and i'm new and stupid and would love to learn this is just don't know where to start there is so much. I do know some basic C# and i want to use unity. I can do some pixel art though it is not up to the standard i would like but that can be improved. I would really enjoy to meet someone who has knowledge of the subject and can teach me on their spare time. Thanks i really appreciate if your read this post.
  18. Here is the scenario I have pertaining to a combat system I am jotting down on paper. The attacker has 100 soldiers each with 1 attack point and 3 health points. The defender has the same. All the player has to do is press a button and combat is all computed then the player is just shown the results. From my current example, I would have the attacker's soldiers do 100 points of damage to the defender resulting in 33 defenders being killed. The same happens to the attacker's soldiers. This continues until both sides defeat each other at the same time and it ends in a draw. I feel if I introduce a random factor, the battle could get lop-sided and the smaller side could not recover So I thought I would ask the community for their opinions of the very simple combat scenario. The game concept I am designing deals with combat from outside the actual conflict. Sort of like a coach and a sports team. You give orders and watch as your units perform them. The game does start small, with 100 to 200 soldiers (all the same) and could grow to larger numbers as well. I was just wanting to get a system in place for small conflict that could scale into larger ones. Each side has a unit type (soldier) a unit quantity (100). The player give the order, and the computer does the rest. After both players give their orders, the results are computed instantly. Keeping all things equal, Attack power, defensive power, etc. (I need a baseline) What would be the best way to determine damage? Static numbers, or RNG numbers? To use or not use RNG in combat?
  19. until
    The panel will take place at GDC conference on March 22 from 11:30 am till 12:30 pm in Sponsored Session Theater, South Hall. The main topic of the discussion is how blockchain and cryptocurrencies will help game developers generate additional revenue by transferring the ownership of the virtual items to gamers. Anyone interested in blockchain is eligible to attend! We look forward to meeting you at GDC and are excited about opportunities this event will bring. What's in it for you? Take a firsthand look at blockchain and how gaming is already taking advantage of this technology Have a better understanding of how blockchain works together with non-blockchain (traditional) solutions in gaming; Find out how blockchain complements or adds value to existing business models in gaming; Get answers to your most burning questions about blockchain and whether or not gaming needs it at all For more details, please visit GDC website.
  20. Sounds This is our final part, 5 of a series on creating a game with the Orx Portable Game Engine. Part 1 is here, and part 4 is here. It's great that collecting the pickups work, but a silent game is pretty bland. It would be great to have a sound play whenever a pickup is collected. Start by configuring a sound: [PickupSound] Sound = pickup.ogg KeepInCache = true Then as part of the collision detection in the PhysicsEventHandler function, we change the code to be: if (orxString_SearchString(recipientName, "PickupObject") != orxNULL) { orxObject_SetLifeTime(pstRecipientObject, 0); orxObject_AddSound(pstSenderObject, "PickupSound"); } if (orxString_SearchString(senderName, "PickupObject") != orxNULL) { orxObject_SetLifeTime(pstSenderObject, 0); orxObject_AddSound(pstRecipientObject, "PickupSound"); } In code above, if the recipient is a pickup object, then use the orxObject_AddSound function to place our sound on the sender object. There's little point adding a sound to an object that is about to be deleted. And of course, if the pickup object is the sender, we add the sound to the recipient object. Also, the PickupSound that is added to the object, is the config section name we just defined in the config. Compile and run. Hit the pickups and a sound will play. You can also use sounds without code. There is an AppearSound section already available in the config. We can use this sound on the ufo when it first appears in the game. This is as simple as adding a SoundList property to the ufo: [UfoObject] Graphic = UfoGraphic Position = (0, 0, -0.1) Body = UfoBody AngularVelocity = 200 SoundList = SoundAppear Re-run and a nice sound plays at the start of the game. Adding a score What's a game without a score? We need to earn points for every pickup that is collected. The great thing about Orx objects is that they don't have to contain a texture as a graphic. They can contain a font and text rendered to a graphic instead. This is perfect for making a score object. Start by adding some config for the ScoreObject: [ScoreObject] Graphic = ScoreTextGraphic Position = (-380, -280, 0) Next, to add the ScoreTextGraphic section, which will not be a texture, but text instead: [ScoreTextGraphic] Text = ScoreText Now to define the ScoreText which is the section that contains the text information: [ScoreText] String = 10000 The String property contains the actual text characters. This will be the default text when a ScoreObject instance is created in code. Let's now create an instance of the ScoreObject in the Init() function: orxObject_CreateFromConfig("ScoreObject"); So far, the Init() function should look like this: orxSTATUS orxFASTCALL Init() { orxVIEWPORT *viewport = orxViewport_CreateFromConfig("Viewport"); camera = orxViewport_GetCamera(viewport); orxObject_CreateFromConfig("BackgroundObject"); ufo = orxObject_CreateFromConfig("UfoObject"); orxCamera_SetParent(camera, ufo); orxObject_CreateFromConfig("PickupObjects"); orxObject_CreateFromConfig("ScoreObject"); orxClock_Register(orxClock_FindFirst(orx2F(-1.0f), orxCLOCK_TYPE_CORE), Update, orxNULL, orxMODULE_ID_MAIN, orxCLOCK_PRIORITY_NORMAL); orxEvent_AddHandler(orxEVENT_TYPE_PHYSICS, PhysicsEventHandler); return orxSTATUS_SUCCESS; } Compile and run. There should be a score object in the top left hand corner displaying: 10000 The score is pretty small. And it's fixed into the top left corner of the playfield. That's not really what we want. A score is an example of a User Interface (UI) element. It should be fixed in the same place on the screen. Not move around when the screen scrolls. The score should in fact, be fixed as a child to the Camera. Wherever the Camera goes, the score object should go with it. This can be achieved with the ParentCamera property, and then setting the position of the score relative to the camera's centre position: [ScoreObject] Graphic = ScoreTextGraphic Position = (-380, -280, 0) ParentCamera = Camera UseParentSpace = false With these changes, we've stated that we want the Camera to be the parent of the ScoreObject. In other words, we want the ScoreObject to travel with the Camera and appear to be fixed on the screen. By saying that we don't want to UseParentSpace means that we want specify relative world coordinates from the centre of the camera. If we said yes, we'd have to specify coordinates in another system. And Position, of course, is the position relative to the center of the camera. In our case, moved to the top left corner position. Re-run and you'll see the score in much the same position as before, but when you move the ufo around, and the screen scrolls, the score object remains fixed in the same place. The only thing, it's still a little small. We can double its size using Scale: [ScoreObject] Graphic = ScoreTextGraphic Position = (-380, -280, 0) ParentCamera = Camera UseParentSpace = false Scale = 2.0 Smoothing = false Smoothing has been set to false so that when the text is scaled up, it will be sharp and pixellated rather than smoothed up which looks odd. All objects in our project are smooth be default due to: [Display] Smoothing = true: So we need to explicitly set the score to not smooth. Re-run. That looks a lot better. To actually make use of the score object, we will need a variable in code of type int to keep track of the score. Every clock cycle, we'll take that value and change the text on the ScoreObject. That is another cool feature of Orx text objects: the text can be changed any time, and the object will re-render. Finally, when the ufo collides with the pickup, and the pickup is destroyed, the score variable will be increased. The clock will pick up the variable value and set the score object. Begin by creating a score variable at the very top of the code: #include "orx.h" orxOBJECT *ufo; orxCAMERA *camera; int score = 0; Change the comparison code inside the PhysicsEventHandler function to increase the score by 150 points every time a pickup is collected: if (orxString_SearchString(recipientName, "PickupObject") != orxNULL) { orxObject_SetLifeTime(pstRecipientObject, 0); orxObject_AddSound(pstSenderObject, "PickupSound"); score += 150; } if (orxString_SearchString(senderName, "PickupObject") != orxNULL) { orxObject_SetLifeTime(pstSenderObject, 0); orxObject_AddSound(pstRecipientObject, "PickupSound"); score += 150; } Now we need a way to change the text of the score object. We declared the score object in the Init() function as: orxObject_CreateFromConfig("ScoreObject"); But we really need to create it using an orxOBJECT variable: scoreObject = orxObject_CreateFromConfig("ScoreObject"); And then declare the scoreObject at the top of the file: #include "orx.h" orxOBJECT *ufo; orxCAMERA *camera; orxOBJECT *scoreObject; int score = 0; Now it is possible to update the scoreObject using our score variable. At the bottom of the Update() function, add the following code: if (scoreObject) { orxCHAR formattedScore[5]; orxString_Print(formattedScore, "%d", score); orxObject_SetTextString(scoreObject, formattedScore); } First, the block will only execute if there is a valid scoreObject. If so, then create a 5 character string. Then print into the string with the score value, effectively converting an int into a string. Finally set the score text to the scoreObject using the orxObject_SetTextString function. Compile and Run. Move the ufo around and collect the pickups to increase the score 150 points at a time. Winning the game 1200 is the maximum amount of points that can be awarded, and that will mean we've won the game. If we do win, we want a text label to appear above the ufo, saying “You win!”. Like the score object, we need to define a YouWinObject: [YouWinObject] Graphic = YouWinTextGraphic Position = (0, -60, 0.0) Scale = 2.0 Smoothing = false Just like the camera, the YouWinObject is going to be parented to the ufo too. This will give the appearance that the YouWinObject is part of the ufo. The Scale is set to x2. The Position is set offset up in the y axis so that it appears above the ufo. Next, the actual YouWinTextGraphic: [YouWinTextGraphic] Text = YouWinText Pivot = center And the text to render into the YouWinTextGraphic: [YouWinText] String = You Win! We'll test it by creating an instance of the YouWinObject, putting it into a variable, and then parent it to the ufo in the Init() function: orxObject_CreateFromConfig("PickupObjects"); scoreObject = orxObject_CreateFromConfig("ScoreObject"); ufoYouWinTextObject = orxObject_CreateFromConfig("YouWinObject"); orxObject_SetParent(ufoYouWinTextObject, ufo); Then the variable: #include "orx.h" orxOBJECT *ufo; orxCAMERA *camera; orxOBJECT *ufoYouWinTextObject; orxOBJECT *scoreObject; int score = 0; Compile and Run. The “You win” text should appear above the ufo. Not bad, but the text is rotating with the ufo much like the camera was before. We can ignore the rotation from the parent on this object too: [YouWinObject] Graphic = YouWinTextGraphic Position = (0, -60, 0.0) Scale = 2.0 Smoothing = false IgnoreFromParent = rotation Re-run. Interesting. It certainly isn't rotating with the ufo, but its position is still being taken from the ufo's rotation. We need to ignore this as well: [YouWinObject] Graphic = YouWinTextGraphic Position = (0, -60, 0.0) Scale = 2.0 Smoothing = false IgnoreFromParent = position.rotation rotation Good that's working right. We want the “You Win!” to appear once all pickups are collected. The YouWinObject object on created on the screen when the game starts. But we don't want it to appear yet. Only when we win. Therefore, we need to disable the object immediately after it is created using the orxObject_Enable function: ufoYouWinTextObject = orxObject_CreateFromConfig("YouWinObject"); orxObject_SetParent(ufoYouWinTextObject, ufo); orxObject_Enable(ufoYouWinTextObject, orxFALSE); Finally, all that is left to do is add a small check in the PhysicsEventHandler function to test the current score after each pickup collision: if (orxString_SearchString(recipientName, "PickupObject") != orxNULL) { orxObject_SetLifeTime(pstRecipientObject, 0); orxObject_AddSound(pstSenderObject, "PickupSound"); score += 150; } if (orxString_SearchString(senderName, "PickupObject") != orxNULL) { orxObject_SetLifeTime(pstSenderObject, 0); orxObject_AddSound(pstRecipientObject, "PickupSound"); score += 150; } if (orxObject_IsEnabled(ufoYouWinTextObject) == orxFALSE && score == 1200) { orxObject_Enable(ufoYouWinTextObject, orxTRUE); } We are checking two things: that the ufoYouWinTextObject is not yet enabled using the orxObject_IsEnabled function, and if the score is 1200. If both conditions are met, enable the ufoYouWinTextObject. Compile and run. Move the ufo around and collect all the pickups. When all are picked up and 1200 is reached, the “You Win!” text should appear above the ufo signifying that the game is over and we have won. And that brings us to the end! We have created a simple and complete game with some configuration and minimal code. Congratulations! I hope you enjoyed working through making the ufo game using the Orx Portable Game Engine. Of course, there are many little extras you can add to give your game that little extra polish. So, for just a bit more eye candy, there a couple more sections that you can follow along with if you wish. Shadows There are many ways to do shadows. One method is to use shaders… though this method is a little beyond this simple guide. Another method, when making your graphics, would be to add an alpha shadow underneath. This is a good method if your object does not need to rotate or flip. The method I will show you in this chapter is to have a separate shadow object as a child of an object. And in order to remain independent of rotations, the children will ignore rotations from the parent. First a shadow graphic for the ufo, and one for the pickups: Save these both into the data/texture folder. Then create config for the ufo shadow: [UfoShadowGraphic] Texture = ufo-shadow.png Alpha = 0.3 Pivot = center The only interesting part is the Alpha property. 0.1 would be almost completely see-through (or transparent), and 1.0 is not see-through at all, which is the regular default value for a graphic. 0.3 is fairly see-through. [UfoShadowObject] Graphic = UfoShadowGraphic Position = (20, 20, 0.05) Set the Position a bit to the right, and downwards. Next, add the UfoShadowObject as a child of the UfoObject: [UfoObject] Graphic = UfoGraphic Position = (0,0, -0.1) Body = UfoBody AngularVelocity = 200 UseParentSpace = position SoundList = AppearSound ChildList = UfoShadowObject Run the project. The shadow child is sitting properly behind the ufo but it rotates around the ufo, until it ends up at the bottom left which is not correct. We'll need to ignore the rotation from the parent: [UfoShadowObject] Graphic = UfoShadowGraphic Position = (20, 20, 0.05) IgnoreFromParent = position.rotation rotation Not only do we need to ignore the rotation of ufo, we also need to ignore the rotation position of the ufo. Re-run and the shadow sits nice and stable to the bottom right of the ufo. Now to do the same with the pickup shadow: [PickupShadowGraphic] Texture = pickup-shadow.png Alpha = 0.3 Pivot = center [PickupShadowObject] Graphic = PickupShadowGraphic Position = (20, 20, 0.05) IgnoreFromParent = position.rotation The only difference between this object and the ufo shadow, is that we want the pickup shadow to take the rotation value from the parent. But we do not want to take the position rotation. That way, the pickup shadow will remain in the bottom right of the pickup, but will rotate nicely in place. Now attach as a child to the pickup object: [PickupObject] Graphic = PickupGraphic FXList = RotateFX Body = PickupBody ChildList = PickupShadowObject Re-run, and the shadows should all be working correctly. And that really is it this time. I hope you made it this far and that you enjoyed this series of articles on the Orx Portable Game Engine. If you like what you see and would like to try out a few more things with Orx, head over our learning wiki where you can follow more beginner guides, tutorials and examples. You can always get the latest news on Orx at the official website. If you need any help, you can get in touch with the community on gitter, or at the forum. They're a friendly helpful bunch over there, always ready to welcome newcomers and assist with any questions.
  21. Creating Pickup Objects This is part 4 of a series on creating a game with the Orx Portable Game Engine. Part 1 is here, and part 3 is here. In our game, the player will be required to collect objects scattered around the playfield with the ufo. When the ufo collides with one, the object will disappear, giving the impression that it has been picked up. Begin by creating a config section for the graphic, and then the pickup object: [PickupGraphic] Texture = pickup.png Pivot = center [PickupObject] Graphic = PickupGraphic The graphic will use the image pickup.png which is located in the project's data/object folder. It will also be pivoted in the center which will be handy for a rotation effect later. Finally, the pickup object uses the pickup graphic. Nice and easy. Our game will have eight pickup objects. We need a simple way to have eight of these objects in various places. We will employ a nice trick to handle this. We will make an empty object, called PickupObjects which will hold eight copies of the pickup object as child objects. That way, wherever the parent is moved, the children move with it. Add that now: [PickupObjects] ChildList = PickupObject1 # PickupObject2 # PickupObject3 # PickupObject4 # PickupObject5 # PickupObject6 # PickupObject7 # PickupObject8 Position = (-400, -300, -0.1) This object will have no graphic. That's ok. It can still act like any other object. Notice the position. It is being positioned in the top left hand corner of the screen. All of the child objects PickupObject1 to PickupObject8 will be positioned relative to the parent in the top left corner. Now to create the actual children. We'll use the inheritance trick again, and just use PickupObject as a template: [PickupObject1@PickupObject] Position = (370, 70, -0.1) [PickupObject2@PickupObject] Position = (210, 140, -0.1) [PickupObject3@PickupObject] Position = (115, 295, -0.1) [PickupObject4@PickupObject] Position = (215, 445, -0.1) [PickupObject5@PickupObject] Position = (400, 510, -0.1) [PickupObject6@PickupObject] Position = (550, 420, -0.1) [PickupObject7@PickupObject] Position = (660, 290, -0.1) [PickupObject8@PickupObject] Position = (550, 150, -0.1) Each of the PickupObject* objects uses the properties defined in PickupObject. And the only difference between them are their Position properties. The last thing to do is to create an instance of PickupObjects in code in the Init() function: orxObject_CreateFromConfig("PickupObjects"); Compile and Run. Eight pickup objects should appear on screen. Looking good. It would look good if the pickups rotated slowly on screen, just to make them more interesting. This is very easy to achieve in Orx using FX. FX can also be defined in config. FX allows you to affect an object's position, colour, rotation, scaling, etc, even sound can be affected by FX. Change the PickupObject by adding a FXList property: [PickupObject] Graphic = PickupGraphic FXList = SlowRotateFX Clearly being an FXList you can have many types of FX placed on an object at the same time. We will only have one. An FX is a collection of FX Slots. FX Slots are the actual effects themselves. Confused? Let's work through it. First, the FX: [SlowRotateFX] SlotList = SlowRotateFXSlot Loop = true This simply means, use some effect called SlowRotateFXSlot, and when it is done, do it again in a loop. Next the slot (or effect): [SlowRotateFXSlot] Type = rotation StartTime = 0 EndTime = 10 Curve = linear StartValue = 0 EndValue = 360 That's a few properties. First, the Type, which is a rotation FX. The total time for the FX is 10 seconds, which comes from the StartTime and EndTime properties. The Curve type is linear so that the values changes are done so in a strict and even manner. And the values which the curve uses over the 10 second period starts from 0 and climbs to 360. Re-run and notice the pickups now turning slowly for 10 seconds and then repeating. Picking up the collectable objects Time to make the ufo collide with the pickups. In order for this to work (just like for the walls) the pickups need a body. And the body needs to be set to collide with a ufo and vice versa. First a body for the pickup template: [PickupObject] Graphic = PickupGraphic FXList = SlowRotateFX Body = PickupBody Then the body section itself: [PickupBody] Dynamic = false PartList = PickupPart Just like the wall, the pickups are not dynamic. We don't want them bouncing and traveling around as a result of being hit by the ufo. They are static and need to stay in place if they are hit. Next to define the PickupPart: [PickupPart] Type = sphere Solid = false SelfFlags = pickup CheckMask = ufo The pickup is sort of roundish, so we're going with a spherical type. It is not solid. We want the ufo to able to pass through it when it collides. It should not influence the ufo's travel at all. The pickup is given a label of pickup and will only collide with an object with a label of ufo. The ufo must reciprocate this arrangement (just like a good date) by adding pickup to its list of bodypart check masks: [UfoBodyPart] Type = sphere Solid = true SelfFlags = ufo Friction = 1.2 CheckMask = wall # pickup This is a static bodypart, and we have specified collision actions to occur if the ufo collides with a pickup. But it's a little difficult to test this right now. However you can turn on the debug again to check the body parts: [Physics] Gravity = (0, 0, 0) ShowDebug = true Re-run to see the body parts. Switch off again: [Physics] Gravity = (0, 0, 0) ShowDebug = false To cause a code event to occur when the ufo hits a pickup, we need something new: a physics hander. The hander will run a function of our choosing whenever two objects collide. We can test for these two objects to see if they are the ones we are interested in, and run some code if they are. First, add the physics hander to the end of the Init() function: orxClock_Register(orxClock_FindFirst(orx2F(-1.0f), orxCLOCK_TYPE_CORE), Update, orxNULL, orxMODULE_ID_MAIN, orxCLOCK_PRIORITY_NORMAL); orxEvent_AddHandler(orxEVENT_TYPE_PHYSICS, PhysicsEventHandler); This will create a physics handler, and should any physics event occur, (like two objects colliding) then a function called PhysicsEventHandler will be executed. Our new function will start as: orxSTATUS orxFASTCALL PhysicsEventHandler(const orxEVENT *_pstEvent) { if (_pstEvent->eID == orxPHYSICS_EVENT_CONTACT_ADD) { orxOBJECT *pstRecipientObject, *pstSenderObject; /* Gets colliding objects */ pstRecipientObject = orxOBJECT(_pstEvent->hRecipient); pstSenderObject = orxOBJECT(_pstEvent->hSender); const orxSTRING recipientName = orxObject_GetName(pstRecipientObject); const orxSTRING senderName = orxObject_GetName(pstSenderObject); orxLOG("Object %s has collided with %s", senderName, recipientName); return orxSTATUS_SUCCESS; } } Every handler function passes an orxEVENT object in. This structure contains a lot of information about the event. The eID is tested to ensure that the type of physics event that has occurred is a orxPHYSICS_EVENT_CONTACT_ADD which indicates when objects collide. If true, then two orxOBJECT variables are declared, then set from the orxEVENT structure. They are passed in as the hSender and hRecipient objects. Next, two orxSTRINGs are declared and are set by getting the names of the objects using the orxObject_GetName function. The name that is returned is the section name from the config. Potential candidates are: UfoObject, BackgroundObject, and PickupObject1 to PickupObject8. The names are then sent to the console. Finally, the function returns orxSTATUS_SUCCESS which is required by an event function. Compile and run. If you drive the ufo into a pickup or the edge of the playfield, a message will display on the console. So we know that all is working. Next is to add code to remove a pickup from the playfield if the ufo collides with it. Usually we could compare the name of one object to another and perform the action. In this case, however, the pickups are named different things: PickupObject1, PickupObject2, PickupObject3… up to PickupObject8. So we will need to actually just check if the name contains “PickupObject” which will match well for any of them. In fact, we don't need to test for the “other” object in the pair of colliding objects. Ufo is a dynamic object and everything else on screen is static. So if anything collides with PickupObject*, it has to be the ufo. Therefore, we won't need to test for that. First, remove the orxLOG line. We don't need that anymore. Change the function to become: orxSTATUS orxFASTCALL PhysicsEventHandler(const orxEVENT *_pstEvent) { if (_pstEvent->eID == orxPHYSICS_EVENT_CONTACT_ADD) { orxOBJECT *pstRecipientObject, *pstSenderObject; /* Gets colliding objects */ pstRecipientObject = orxOBJECT(_pstEvent->hRecipient); pstSenderObject = orxOBJECT(_pstEvent->hSender); const orxSTRING recipientName = orxObject_GetName(pstRecipientObject); const orxSTRING senderName = orxObject_GetName(pstSenderObject); if (orxString_SearchString(recipientName, "PickupObject") != orxNULL) { orxObject_SetLifeTime(pstRecipientObject, 0); } if (orxString_SearchString(senderName, "PickupObject") != orxNULL) { orxObject_SetLifeTime(pstSenderObject, 0); } } return orxSTATUS_SUCCESS; } You can see the new code additions after the object names. If an object name contains the word “PickupObject”, then the ufo must have collided with it. Therefore, we need to kill it off. The safest way to do this is by setting the object's lifetime to 0. This will ensure the object is removed instantly and deleted by Orx in a safe manner. Notice that the test is performed twice. Once, if the pickup object is the sender, and again if the object is the recipient. Therefore we need to check and handle both. Compile and run. Move the ufo over the pickups and they should disappear nicely. We'll leave it there for the moment. In the final, Part 5, we'll cover adding sounds, a score, and winning the game.
  22. Collisions This is part 3 of a series on creating a game with the Orx Portable Game Engine. Part 1 is here, and Part 2 is here. There is one last requirement for the collision to occur: we need to tell the physics system, who can collide with who. This is done with flags and masks. Make a change to the ufo's body part by adding SelfFlags and CheckMask: [UfoBodyPart] Type = sphere Solid = true SelfFlags = ufo CheckMask = wall SelfFlags is the label you assign to one object, and CheckMask is the list of labels that your object can collide with. These labels don't have to match the names you give objects, however it will help you stay clean and organised. So in the config above, we are saying: the UfoBodyPart is a “ufo” and it is expected to collide with any bodypart marked as a “wall”. But we haven't done that yet, so let's do it now. We will only need to add it to the WallTopPart: [WallTopPart] Type = box Solid = true SelfFlags = wall CheckMask = ufo TopLeft = (-400, -300, 0) BottomRight = (400, -260, 0) Remember, that the other three wall parts inherit the values from WallTopPart. So each now carries the label of “wall” and they will collide with any other body part that carries the label of “ufo”. Re-run and press the left arrow key and drive the ufo into the left wall. It collides! And it stops. Now that the collision is working, we can flesh out the rest of the keyboard controls and test all four walls: void orxFASTCALL Update(const orxCLOCK_INFO *_pstClockInfo, void *_pContext) { if (ufo) { const orxFLOAT FORCE = 0.8; orxVECTOR rightForce = { FORCE, 0, 0 }; orxVECTOR leftForce = { -FORCE, 0, 0 }; orxVECTOR upForce = { 0, -FORCE, 0 }; orxVECTOR downForce = { 0, FORCE, 0 }; if (orxInput_IsActive("GoLeft")) { orxObject_ApplyForce(ufo, &leftForce, orxNULL); } if (orxInput_IsActive("GoRight")) { orxObject_ApplyForce(ufo, &rightForce, orxNULL); } if (orxInput_IsActive("GoUp")) { orxObject_ApplyForce(ufo, &upForce, orxNULL); } if (orxInput_IsActive("GoDown")) { orxObject_ApplyForce(ufo, &downForce, orxNULL); } } } Now is a good time to turn off the physics debug as we did earlier on. Compile and run. Try all four keys, and you should be able to move the ufo around the screen. The ufo can also collide with each wall. The ufo is a little boring in the way that it doesn't spin when colliding with a wall. We need to ensure the UfoBody is not using fixed rotation. While this value defaults to false when not supplied, it will make things more readable if we explicitly set it: [UfoBody] Dynamic = true PartList = UfoBodyPart FixedRotation = false The active ingredient here is to ensure that both the wall bodypart and the ufo bodypart both have a little friction applied. This way when they collide, they will drag against each other and produce some spin: [UfoBodyPart] Type = sphere Solid = true SelfFlags = ufo CheckMask = wall Friction = 1.2 [WallTopPart] Type = box Solid = true SelfFlags = wall CheckMask = ufo TopLeft = (-400, -300, 0) BottomRight = (400, -260, 0) Friction = 1.2 Re-run that and give it a try. Run against a wall on angle to get some spin on the ufo. The next thing to notice is that both the movement of the ufo and the spin never slow down. There is no friction to slow those down. We'll deal with the spin first. By adding some AngularDamping on the UfoBody, the spin will slow down over time: [UfoBody] Dynamic = true PartList = UfoBodyPart AngularDamping = 2 FixedRotation = false Re-run and check the spin. The ufo should be slowing down after leaving the wall. Now for the damping on the movement. That can be done with LinearDamping on the UfoBody: [UfoBody] Dynamic = true PartList = UfoBodyPart AngularDamping = 2 FixedRotation = false LinearDamping = 5 Re-run and the speed will slow down after releasing the arrow keys. But it's slower overall as well. Not 100% what we want. You can increase the FORCE value in code (ufo.cpp), in the Update function to compensate: const orxFLOAT FORCE = 1.8; Compile and run. The speed should be more what we expect. It would be nice for the ufo to be already spinning a little when the game starts. For this, add a little AngularVelocity : [UfoObject] Graphic = UfoGraphic Position = (0, 0, -0.1) Body = UfoBody AngularVelocity = 200 Run this and the ship will have a small amount of spin at the start until the AngularDamping on the ufo body slows it down again. Following the UFO with the camera While we can simply move the ufo around with the keys on a fixed background, it will be a more pleasant experience to have the ufo fixed and have the screen scroll around instead. This effect can be achieved by parenting the camera to the ufo so that wherever the ufo goes, the camera goes. Currently, our project is set up so that the viewport has a camera configured to it. But the camera is not available to our code. We will require the camera to be available in a variable so that it can be parented to the ufo object. To fix this, in the Init() function, extract the camera from the viewport into a variable by first removing this line: orxViewport_CreateFromConfig("Viewport"); to: orxVIEWPORT *viewport = orxViewport_CreateFromConfig("Viewport"); camera = orxViewport_GetCamera(viewport); And because the camera variable isn't defined, do so at the top of the code: #include "orx.h" orxOBJECT *ufo; orxCAMERA *camera; Now it is time to parent the camera to the ufo in the init() function using the orxCamera_SetParent function: ufo = orxObject_CreateFromConfig("UfoObject"); orxCamera_SetParent(camera, ufo); Compile and Run. Woah, hang on. That's crazy, the whole screen just rotated around when ufo. And it continues to rotate when hitting the ufo against the walls. See how the camera is a child of the ufo now? Not only does the camera move with the ufo, it rotates with it as well. We certainly want it to move with the ufo, but it would be nice ignore the rotation from the parent ufo. Add the IgnoreFromParent property to the MainCamera section: [MainCamera] FrustumWidth = 1024 FrustumHeight = 720 FrustumFar = 2.0 FrustumNear = 0.0 Position = (0.0, 0.0, -1.0) IgnoreFromParent = rotation Re-run. That's got it fixed. Now when you move around, the playfield will appear to scroll rather than it being the ufo that moves. This makes for a more dramatic and interesting effect. In Part 4, we will give the ufo something to do. The goal is to collect several pickups.
  23. First Post!

    Here it is! My first post in my new blog Starting today I will be updating this just about everyday with something new I learned, tips and tricks I have acquired and just any information regarding game design. My hope for this is to meet others who are relatively new to game design and/or help each other along the way! -LaurenDenise
  24. Good Morning everyone! I'm relatively new to the game industry. Games have always been a huge part of my life and who I am as a person, it wasn't until the last year or so that I strongly considered learning how to create them. I've been taking online classes in game design and have just now started to dabble in learning how to use various programs such as Maya, Unity etc. As an online student I feel rather isolated. I am trying to figure out how to get more involved in the community (hence the reason I made this account). What are some ways you guys recommend that I as an online student network and meet others? Also, on top of what I am learning what "extra learning" would you all recommend to a student who has little to no prior experience? Thank You!
  25. Good day to you all. Firstly let me apologize in advance for this topic, since I fear this may be in the wrong place of the site. This is a question related to both career path and Game Design, so I didn't know where to ask it exactly. (If you rather skip all the background story which I would totally understand, just go read the last line please). Now to the topic itself. I'm in the last year of a 4-year degree in Multimedia Engineering, a degree I chose in order to become a game designer in the future. However, far from meeting my spectations, the degree only focused on the technical aspects of game development (programming, scripting, engine programming, artificial inteligence...). I would've wanted to learn at least a bit of such things as: Storytelling Gameplay and mechanics design Psycology of the player World building Level Design Visual Narrative Character creation & writting As it turned out, my degree had zero subjects or projects to learn any of those things. So now I find myself with a big lack of knowledge to start working in the area of the industry I like. As a result, I am currently looking for a good master's degree (1 year) to focus solely (or at least mostly) in learning game design. Problem is, there are not many options for this in my country (Spain) so I'm considering moving to the United States to study, where I have found several universities which offer this type of master's degree to learn game design. Before I move out however, I would like to make sure I don't make the same mistake I made when I chose my current degree, and hence that's why I'm here. I have found many of these master's but everyone has very generic names for the subjects and I want to approach my choice whith maximum care. Thank you sincerely to anyone taking the time to read down to this point. Do you know of any good master's degree in the US or Europe for Game Design or have you studied one which taught you the basics of the things I mentioned in the list above?
  • Advertisement