Jump to content
  • Advertisement

Francisco Tufro

  • Content Count

  • Joined

  • Last visited

  • Days Won


Francisco Tufro last won the day on October 30

Francisco Tufro had the most liked content!

Community Reputation

110 Neutral


About Francisco Tufro

  • Rank

Personal Information


  • Twitter
  • Github

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hi Fellow gamedevs, I've finished my third book on the 2D Shader Development series and wanted to share it with you. I'm eager to know what you think about it since, well, I made it for you. The book covers some of the techniques used to draw from scratch using shaders from basic line rendering using smoothstep to 2d signed distance fields to create shapes, also how to modify the uv sampling to get texture deformations and some animations discussing trigonometric functions. I feel these techniques are incredibly helpful on my daily game dev practice, and finally got to share them in this book. Here is the link to the Gumroad page with a 20% discount for gamdev.net users valid for the next 24 hours: https://gumroad.com/l/procedural-texture-manipulation/gamedevnet-launch-20 Please, let me know if you have any questions I'm here to help! Thanks for your support!
  2. (this post was originally posted on medium.com, you can read it there if you prefer.) From time to time I get asked why I insist on the importance learning how shaders work. I get where this question is coming from. That’s the wrong question. The real question is “Why do you insists on learning how things work?”. Why do you insist on learning how things work? Unity, Unreal and the likes made it quite easy for beginners. You can finish a game without even knowing that something like shaders exists. Well, they probably know they’re there but never bother to learn how they work. Year after year, I see new programmers approach development through black boxes. Look at the JavaScript library ecosystem to see what I mean. It’s crowded with cut and paste libraries that most developers don’t even know how they work. They just add the library and use it. Most developers never bother to see what’s inside. CLARIFICATION: I’m not saying using libraries is wrong. That would be nonsensical. What I’m saying is that if we don’t know how a library works internally, we’re on our path to doomsday. This is also true on Unity’s Asset Store. It’s even promoted as a “time saver”. And in a way it is, but it’s a time saver as much as it is a time consumer. The problem is that black-box development is quite risky in games: Our games need to run in 60fps (if not more). That leaves us with only ~16ms to do our rendering. Usually this is plenty of time, but sometimes it’s not. What do we do when it’s not? Also, we’re used to work with computers with so much RAM that most games will not run out of it. Unless you’re on mobile, embedded or limited hardware. Usually we don’t use the CPU to do graphics. But if you don’t know shaders, there are a lot of problems that you’d try to solve using the CPU. That will lead you to a road block where the CPU is not powerful enough (or, to be fair, not designed!) for that job. I think it’s important to every aspiring game developer to limit black-boxes as much as you can. Use the Asset Store, use all the tools at your disposal, but learn the way things work. If you don’t you’ll end up limited by an otherwise limitless technology. For starters, you should know how to answer these questions: How do graphics card work? Why do we need one? What’s the difference between the CPU and the GPU? Why something may be allocating so much dynamic memory every frame? Why is that a bad thing? What’s the meaning of the sample rate of an audio file? What’s an affine transform? What’s the CPU cache? How can I leverage it? The list can go on for ages, but if you can’t answer these things, my suggestion is that is time for you to start investing time in learning. Spend time in getting better. Why? A case for getting better You can probably say “I’m already creating games with Unity, why do I need more than that?” As explained by the Self-Determination Theory, human motivation (and happiness as a consequence!) is driven by three main factors: Autonomy: You need to feel that you can self-determine what to do, that you have choices and you’re making decisions. Relatedness: You need to feel connected to your motives. Competence: You need to feel challenged. You need to feel like you’re valuable to the cause you’re working on. By being a black-box developer, you’re effectively limiting your progress on the first and third of these factors. Autonomy suffers from black-box development because you’re tied to the design decisions of others: Unity, the asset creator, etc. Competence suffers because you don’t learn how things work and therefore you don’t become more valuable. The followup question might be, why do I want to become valuable? Career Capital Theory In his book So Good They Can’s Ignore You, Cal Newport suggests that Carrer Capital might be the way to loving what you do. "If your goal is to love what you do, you must first build up “career capital” by mastering rare and valuable skills, and then cash in this capital for the traits that define great work." — Cal Newport, So Good They Can't Ignore You When I read that book many years ago, many things that I felt during my life clicked immediately. This is why it’s so important to be good and understand how things work. By being great at what you do, you’ll have access to work on the most interesting things out there. You’ll become surrounded by the most interesting people out there. You’ll never get bored and rely on empty things to kill time. It’s important because it leads to happiness. Why are you writing all this? I’m going to be sincere. I have an ulterior motive. We all have. I want as many people as possible to be aware of what I’m doing. Currently I'm working on a 2D Shader Development book series, but my goal is to help people to open the black-box and live a better life as game developers. I’m currently running a giveaway before launching my third book. The prize is 1-year of Unity Plus. Which gives you access to Unity Learn Premium. If you got moved by what I said in this article, I strongly suggest you become part of my mailing list by joining the giveaway, as I will be discussing these topics and compile as much knowledge as I can in order to become great at making games. Hope to see you there!
  3. (this post was originally posted on medium.com, you can read it there if you prefer.) Passion projects are HARD to finish. No matter what you do: writing books, blogging, music, visual arts, you name it. It's oh so easier to gravitate towards a path of least resistance. “We are kept from our goal not by obstacles but by a clear path to a lesser goal.” — Robert Brault What happens when that passion project is at the same time, one of the hardest art forms: video games? If recording an album, finishing a book or a paint is difficult, imagine making all those at the same time, plus adding interactivity and fun to the mix. It's nuts, but it's our day to day life as game developers. No wonder why we're usually suffering from lack of motivation. Passion projects are HARD. Video-game passion projects are at least 10x harder. In the past I've recorded music albums and finished writing books. But nothing came close to finishing a game. It'll test your nerves. Especially if you're a solo dev. So, what can we do as game developers to keep ourselves motivated? There is the first and almost obvious advise: don’t have 0% days. Always do something, even if it’s little. This is good advise, but doesn’t fix the issue, just builds a little momentum and that’s it. As Benjamin P. Hardy suggests on his book Willpower Doesn't Work, you can't rely on willpower to deal with lack of motivation. The decision fatigue will always make you chose the less energy option, like watching Netflix or scrolling on social media. The only solution is to remove options and build an environment that FORCES you to act towards your goal of finishing the game. There is one strategy I found works well. Increasing accountability What I mean by this is making sure that there are enough external factors waiting for you, so that you trigger fear as a motivator. Seems radical? Not so much. We have cognitive biases, they screw things up all the time. Why don't we use them in our favor? Let's see… Social Accountability We're social creatures, no matter how introvert we are. We can travel long distances for love and friendship. Most of us anyways. Talking about your game with as many people as you can is key. Especially if those people are potential customers. If you're a solo dev partnering with someone to work together on the game might be a good solution too. Just be sure that person is high-energy and will bring value to the mix. Relying on the fear of disappointing other people, we can find motivation to finish the damn thing. Also getting feedback from people regarding your project is great for this. But you have to be prepared, this can be a double-edged sword. Feedback is always subjective and never personal. So don't put yourself in a stressful situation that you don't need, always keep this in mind. One more suggestion is that you find an accountability partner. This is a person you're in touch every single morning to say what you did (or didn't do) the day before and what are your plans for the day. Next morning, same thing. Again, the fear of letting down your partner works wonders. This principle is used by people in sports and athletes a lot. They hire coaches, which also leads us to the next technique. Economic Accountability Investing money in your project is another great way of generating accountability. Why is this? Because of the sunken cost fallacy: because you spent money in something, you think is more valuable and thus, you will stick to it. As an example: I wanted to finish and release a game before GDC, so I bought a $1000 ticket to San Francisco on March 14th, so that I'm forced to do so. If you don't have that money it's ok, you can spend $80 in getting neat promo art on Fiverr, or whatever you can think about. The more you spend, the higher the stress of not delivering, because of that you'll be likely trumping your procrastination. What if all that fails? I'm sorry, but that's where my advise ends. I'd definitely not suggest the lock-in method, but there is people for everything, right? I think that trying out strategies to increase accountability beyond those two forms may lead to benefits. Do you have any further suggestions? My situation on this topic I've struggled with procrastination my whole life. I've only recently learned some of these techniques and they're working wonders. I've been working on a book series on 2d shader development. The second book was stuck for a while, until I had to finish it to give a workshop about its contents (social accountability!). Then same thing happened with the third one, so I increased the bet. I created a Patreon, not to get money, but to build accountability. I don't have many patreons, but those I have are the reason why I'll release the book. Spending money for a sunken cost trigger is one thing, but having OTHER PEOPLE spend money for it is 10xing it. Right now I'm running a giveaway for two weeks, I'm spending $299 in a 1-year Unity Plus subscription as a prize. Plus some more on marketing. This is so that I have enough accountability to actually go ahead and launch the book the best way possible. I also mentioned how I spent $1000 on a plain ticket to GDC, for an Argentinian this is A LOT of money. And I'm super commited to releasing as many games as I can to that point. I even went ahead an proposed my old team Nastycloud to publish Nubarron with me, so I could get that game out there and practice releasing a game now. The responsibility of releasing the game they worked so hard to finish is triggering a lot of anxiety, I don't want to fail them, but is also moving me towards my goals in a FAST way. I must say that I owe Benjamin P. Hardy a lot of the clarity on these topics and most of the ideas behind this post come straight from Willpower doesn't work, which I strongly suggest you read. Let me know if you have any questions or comments on the topic, I'd love to hear other experiences to deal with this.
  4. Francisco Tufro

    I'm giving away a 1-year Unity Plus subscription!

    Well.. It says with examples in Unity, I assumed people know that Unity uses Cg, either way, I teach techniques, not a language, so all the techniques can be used in any other language I'll keep your suggestion in mind in case I do an update of the front cover. Thanks!
  5. Hi all! To celebrate the upcoming release of my third book on shaders (Nov 14th) I'm giving away a 1-year Unity Plus license. You can join the giveaway here: https://www.2dshaders.com/unity-giveaway/ enjoy!
  6. Francisco Tufro

    2D Shader Development Book Series

    In the past few years, while working on Nubarron, I got really frustrated about the lack of information on how to design shader effects in 2D. Most of the books and tutorials are about 3D, and one may thing that transfering that knowledge to 2D is easy. Well.. not really.I found out that there is a sub-set of basic techniques that are pretty useful in 2D, and don't require you to learn a lot of the 3D stuff, specially lighting models, the first thing that every shader tutorial/book talks about.The series is aimed at independent game developers that want to make their own 2D games visually unique. You’ll need some understanding on programming. If you can code your own logic in C# scripts inside Unity you’re good to go.If you haven’t coded a game in the past it’s likely that these books are not for you. I suggest you take an introductory Unity course first, work on some prototypes until you’re comfortable with programming and then read the books.The series will help you differentiate your games from others that use nothing but built-in shaders, make use of the GPU to generate movement and effects on static sprites, generate full-screen effects and learn techniques to do illumination on 2D scenes.
  7. Back in the day I released the full code for The Insulines made with Moai. https://github.com/the-insulines Just in case you wanted to add it to the list
  8. Francisco Tufro

    A Brief Introduction to Lerp

    Nice article! I loved the visual examples. I can't say how many times lerp has been the tool of choice to achieve zillions of nice looking effects using shaders, plus is the basis of rasterization! Keep the good work
  9. The second book in the series is finally out! In this book I delve into four illumination techniques that go from static illumination to fully dynamic using normal maps. If you're interested head to https://2dshaders.com and click "I want it". As a way of thankig the whole community I wanted to share a 50% discount code for the next two days: illumination-release-discount I'd love to hear your opinions on the book and any suggestions would be happily taken into account
  10. Francisco Tufro

    Engines starting off (again)

    Thank you so much!
  11. Francisco Tufro

    Engines starting off (again)

    Hi there, Francisco here with the first update for 4drop. For those of you new to the project, I wanted to give some background on it. 4drop is, as its description states, a multiplayer game built for 2/4 players where you have to compete with each other to grab a flag and take it to the base. This is fun and games, until you notice that the environment moves in sinchronization with the music and it becomes a puzzle-like experience. The game is really fast-paced and intense. At least that's what we're aiming for! Some background Ourocytosis (2012) 4drop is the last instance of an idea that originated on a Global Game Jam back in 2012, a game called Ourocytosis, a weird game where you had a tail that you used to capture minions that gave you powers. Super caotic, and not really accessible, but was fun enough to think about doing some progress with it. Glitchhiker's fight for the galaxy (2013) After that gamejam, the project got archived for a while since I started working on The Insulines, a game we build with some friends, then worked on Moai SDK and finally moved into Counterspy. In 2013, when done with Counterspy, I started thinking about the project again, but this time I removed the weird mechanic and wanted to explore something different, I wanted to make a fast-paced space battle game with DubStep music and some music / gameplay sinchronization. The result was Glitchhiker's fight for the Galaxy. A local-multiplayer space fight game, still uberly caotic and not accessible. 4drop (2015) After working on Glitchhiker's for a couple of months, I joined Nastycloud and went to GDC in 2014, we showed the game a little bit but I was not really happy about it, so we focused on working on a new version for Nubarron. We made a kickstarter that failed, then started working on 4drop. After working for a couple of months on 4drop, we signed a publishing deal to work on Nubarron, so 4drop got archived again. A little bit sad for me since I had so much love for this project. 4drop (2018) So, now after three years of working on Nubarron, I left Nastycloud and started working on 4drop again. I gave some thought about what I wanted to do, I wanted something challenging, since I was really tired of working on a platformer that had no technical challenges for me. So I decided to go remote multiplayer (something I haven't done before) with the worst kind of game you can go multiplayer with: a fast-paced one. But I know I'm up for the challenge, I also want to get better at game design and that's the reason why I'm opening the game to the public so early, because I want to work on the design with a small community of gamers that will help me decide how to make this game great. Current State So, what's been going on this week? Since the local-multiplayer version of 4drop has been done in an old Unity version (remember 2015!), I started the project from scratch. I gained a lot of insight in the past few years about game programming in general, so I wanted to test some ideas on architecture and they were not compatible with the way the demo was coded. This week I've been working on getting the movement going. Inspired by an interesting talk on Rocket League's architecture, I started working on a deterministic movement system, ignoring Unity's physics and implementing everything from scratch. It's not a big deal since, for now, the movement is pretty simplistic and we'll see where we're headed in the future. I want to wait until we have the aesthetics figured out (more news on this next week!) before spending too much time in player input. If the need for a fully-fledged physics system arises I'm probably going to use Bullet Physics or something like that. The plan for next week is to get a single level playing with music synchronization and the basic capture the flag logic going on in local-multiplayer. After that, the nightmare of networking! By the way, the ships you see in the screenshot are temporary from the assets store. If you're interested in more technical updates, let me know in the comments below, I'd be happy to post some on my blog and reference them here (want to keep this as programming-light as possible)!
  12. Francisco Tufro


    4drop is a 2/4 multiplayer game that features a hybrid gameplay mixing competitive capture the flag elements with puzzle-solving in an environment that constantly moves to the music. The downloadable demo is a prototype we created back in 2015. Now we're working on the game again to create an awesome experience with your feedback. We're re-building the game from scratch with networked multiplayer in mind and would love to have your feedback on it. We have quite a few features in mind, but would love to hear your opinions! If you want to know more, please join our Discord server and head to the #4drop channel.
  13. Thank you so much for all the help! You're awesome! Thank you sooo much! I will
  14. Francisco Tufro

    Where to get good knowledge to write shaders?

    If you focus on Unity, that may be an issue. There are many many sources, but generally examples are in OpenGL or DirectX. I suggest you learn OpenGL or something more broadly used in the computer graphics world. Links to take a look at: https://learnopengl.com https://thebookofshaders.com I'm writing a book series on 2D Shader Development, but I don't think that's what you're looking for, but in my "Where to go now?" section in the website there are links to some books: https://www.2dshaders.com/what-to-do-now/ If you need any help let me know
  15. Thank you soooo much! The full projects would be awesome! Regarding the assets, they're in the exercises repository for the Unity version. You can ping me whenever you want to ask me for any other asset that you see in the books and are not in the repository.
  • Advertisement

Important Information

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

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

Sign me up!