Don’t You Just Love it When a Plan Comes Together

Yesterday was interesting. I was doing my thing, as usual. I knew there were problems with the latest store version we uploaded but I was practicing not shoving my nose in to things I probably shouldn’t. It happens to me quite a lot that I try to help but I really shouldn’t, for various reasons. So, this time, I did that.

I don’t know exactly how much time has passed but I noticed the rest of the team wasn’t getting any progress. So, I joined in, took a look at what they were doing, suggested some things that didn’t quite help, and then decide to investigate it on my own. I pushed some breakpoints in the flow and spent about 15 minutes looking at exactly what was happening. Then I said: “I can tell you exactly what is happening!”

Then everyone crowded around my station while I explained why it happens and what I think we should do to fix it. The response was stunned silence. So, I said “No objections or suggestions? Ok, I’ll do what I said.” Then some stayed to watch. :)

It doesn’t happen all the time. But it’s fun when it does.


Posted in IT, Programming, Work by with comments disabled.

Global Game Jam 2016

7:19 – Soon, we will start. Feeling: Excited.

11:14 – Got there. Heard the keynote. Got the theme (No, not telling). Now Brainstorming.

11:42 – Getting to work.

00:31 – Home now. Was a busy day. The venue itself isn’t that great; the air conditioning is brutal, the separate spaces are nice but it’s tough to even stay properly hydrated. Took out the pup. Going to go to sleep soon.

10:51 – Back in the saddle again. 7 Hours to demo.

12:43 – Finished the basic system. Now starting to write content. The peckishness has begun. They said pizzas are forthcoming.

13:37 – Refueled and ready to go again.

18:14 – Wrapping up. Getting ready for the presentation.

20:34 – Presentations completed. Some really nice games. Mine felt inadequate. Maayan’s looked very nice. They both, one Twine based, one completely console, definitely turned some heads in a room mostly composed of Unity developers.

00:57 – Concluded with a family dinner at Maayan’s parents and a viewing of Gav HaUma. Now, finally, going to sleep. Tomorrow, a full workday awaits.


Posted in Gaming, Life, Programming by with comments disabled.

אתמול היה יום טוב

שלשום בערב הגענו למסקנה שיש משהו שצריך לעשות ושחייבים לדחות בגללו את הגרסה. התאפסנו על ההגדרות המדויקות, ידעתי מה צריך לעשות, אבל גם ידעתי שזה ייקח בערך יום אז אני לא אתחיל את זה ב-19:00. אז כן התחלתי את זה אתמול בבוקר.

ומה הייתי צריך לעשות? היה חלון במשחק, שבגלל המאפיין החדש שאנחנו רוצים להוסיף, דורש שכתוב כמעט מוחלט של הזרימה שלו. אז התיישבתי והתחלתי לכתוב. וזה היה הרבה שכתוב, הרבה עריכה, הרבה כתיבה של דברים חדשים ואני צריך לסיים את הכל לפני שאני יכול להריץ משהו או לבדוק משהו בגלל שזה שובר את ההידור. אז במשך שעות, אני יושב וכותב. רק אני וה-Visual Studio. לא היו הפרעות, לא הייתי צריך להתעסק עם דבר אחר.

היה כיף ממש.


Posted in Life, Programming, Thinking Out Loud by with comments disabled.

להקדים ציפיות

אנחנו רוצים להוציא גרסה גדולה בקרוב עם הרבה שיפורים ועדכונים ולכן עבדתי הרבה על דיאלוגים בימים האחרונים. אני עדיין משתדל לתת הערכות קצת נדיבות לגבי כמה זמן כל דבר ייקח לי כי אני יודע שאני מאוד גרוע בלתת חסם עליון לכמה זמן אני צריך. אבל, מכיוון שאני מכיר את המערכת הזאת יותר טוב מכל אחד אחר, זה לא נורא מפתיע כשאני בדרך כלל סוגר אותם מוקדם.

אבל זה באמת שעשע אותי אתמול.

אתמול התחלתי בלסיים את החלק השני של המשימה שנשארה לי מיום לפני. הכל היה סבבה רק עמית ביקש ממני לסדר קצת את ה-colliders על הכפתורים כי הם לא הגיבו כל כך טוב. ובזמן שטיפלתי בזה, הוא בא לפרוס בפנינו את התוכנית לימים הקרובים כדי שהכל יהיה מוכן. אז אני קיבלתי משימה שהייתה אמורה לקחת יום החל ממחר בבוקר. אז כשסיימתי את המשימה הקודמת, התחלתי לעבוד על זאת. הדיווח האחרון שלי לפני שעזבתי את המשרד? “בגלל שזמי כבר הלך אז אני לא יכול לקבל תיקון לשני רקעים אבל חוץ מזה, הכל כבר סגור.”

כשאמרתי את זה אז גם עמית וגם טל נראו כאילו הם לא בטוחים אם להיות מופתעים או לא.

וסיימתי את זה כל כך מהר שאני לא יכול להתחיל את המשימה הבאה כי אני מחכה למשימה אחרת שעוד לא נגמרה.

אז זה קצת גרם לי להרגיש טוב עם עצמי.


Posted in Gaming, Life, Programming, Work by with comments disabled.

The End

This is an attempt at a new style of storytelling/gaming/roleplaying. This is, at its base, a Twine game-story but I want to build it based on user input. It starts with the first passage. I will add choices and passages based on user input. Please say so in the comments. Tell me which passage and what option would you like. Don’t feel bad but whenever the comments will get too numerous, they will be pruned.

Thank you for participating in my experiment. This is it. This is The End.


Posted in Art, Gaming, Programming, Role-Playing, Stories by with 4 comments.

יש גרסה ראשונה!

גרסה ראשונה של המשחק שלנו זמינה עכשיו בחנות הישראלית! ווהו!

1412460_865028110187375_61939630624342309_o

אם יש לכם iPad3 או יותר טוב או iPad Mini 2 או יותר טוב, ואתם חובבים משחקי אסטרטגיה, אנא נסו ותגידו מה אתם חושבים. (התמיכה הכי טובה היא ל-iOS8 אבל יש גם ל-iOS7).

ויש גם קבוצה ב-Facebook.


Posted in Gaming, Less Interesting News, Life, Programming, Work by with 1 comment.

פיגוע תחת השראה חזותית

יש לי הרבה דיונים על מוסכמות קוד. יש לי שיטה מאוד מוגדרת וקפדנית לאיך אני כותב. אני לא עושה את זה כי ככה למדתי. אני לא עושה את זה כי זה נראה לי יפה יותר. אני עושה את זה כי זאת הדרך היחידה שבה הקוד נראה לי מסודר. כי אם הקוד מבולגן, זה מפריע לי לחשיבה. וזאת דרך עדינה להסביר את זה.

חשבתי על זה עכשיו אחרי שהסתכלתי על הכיור. אין לי בעיה עם כיור מלא כלים. יש לי בעיה עם כיור מבולגן. יש סיפור ישן של דיוויד לנגפורד בשם “סוגים שונים של אפלה”. הוא מתאר משהו שנקרא ‘פיגוע תחת השראה חזותית’. מדובר בתבנית מתמטית ששוברת את האזור החזותי של המוח וגורמת לסוג של שבץ מוחי. תבניות מסובכות מאוד גם גורמות למוות.

אז אני לא מקבל שבץ מכיור מבולגן או קוד מבולגן אבל זה מאיט ומסבך אותי. ואני לרוב לא מסוגל לקלוט אותו או לעבוד איתו אלא אם כן אני מסדר אותו שיראה כמו שצריך.

בגלל זה אני עושה את זה. לא בגלל חשיבות עצמית או התנשאות. אני עושה את זה כי אני לא מסוגל אחרת.


Posted in IT, Life, Programming by with comments disabled.

אני לא עובד בצורה סטנדרטית

הייתה לי אתמול את שיחת “מה המצב” עם ראש הצוות. אמרתי לעמית שאני מאוד מעריך אותו מקצועית ובתור מישהו שעובד עם Unity כמה שנים יותר ממני, אני כן מחפש אישור שלו מדי פעם שמה שאני עושה לא מטומטמם. הוא אמר לי שהתפוקה שלי סבבה רק שאני לא תמיד בודק את מה שאני עושה עד הסוף. אמרתי שאני מסכים לחלוטין ולרוב פשוט לא עולים לי בראש כל המקרים שכדאי לבדוק, גם אם לאנשים אחרים הם נראים טריוויאלים. לאחר מכן, כשסיפרתי את זה למעין היא אמרה שהיא תשמח לעזור לי עם זה כי היא כל כך הרבה יותר טובה בזה ממני.

עוד הערה רלוונטית שקיבלתי היא לשים לב שכל הדברים שאני עושה מסביב לעבודה לא מפריעים לי לקצב ולתפוקה. ופה נכנס הנושא אותו ציינתי בכותרת.

רוב האנשים מגיעים לעבודה, עובדים עובדים עובדים, לוקחים איזו הפסקה למתוח רגליים/לסיגרייה/לרענן את כוס הקפה, לוקחים חצי שעה עד שעה לצהריים ואז עובדים עובדים עובדים, עם אולי עוד הפסקה קצרה בדרך, עד שהם עוזבים את המשרד ויוצאים הביתה. אני לא עובד ככה. אולי זה משהו פנימי, אולי זה סיבולת שסיגלתי לעצמי אבל אני כמעט ולא לוקח הפסקות. אני הולך לשירותים, אני לוקח תנומה אחת בשביל השינה הפוליפאזית בזמן העבודה (15 דקות, לא יותר), אני מותח את הרגליים לדקה או שתיים מדי פעם – בדרך כלל תוך כדי שאני פותח דיון על איזה נושא טכני כזה או אחר, ולוקח כ-15-20 לארוחת צהריים – בערך כמה זמן שאני צריך בשביל לסיים קערה של אורז. כל שאר הזמן אני עובד. וכשאני אומר כל שאר הזמן אז אני מתכוון לזה שיום העבודה הרגיל שלי הוא מינימום תשע ויכול להגיע עד 11 או 12 שעות. וכולל את הפעמים שאני צריך מנוחה מנטלית אז אני עוצר לקרוא פריט חדשות או שניים, RescueTime טוען שאני רוב הזמן ב-70% ל-80% יעיל.

איך? ובכן, זה הסוד שהוא לא ממש סוד כי אני אומר אותו לכל מי ששואל אבל לא הרבה מסוגלים לעשות את אותו הדבר: אני רואה דברים תוך כדי. סרטונים מ-YouTube, הרצאות מכנסי משחקים בעיקר, טריילרים, תוכניות טלוויזיה ולפעמים גם סרטים. כמעט תמיד רץ אצלי משהו ברקע, בחלון קטן במסך השני. אני מסוגל לקלוט את זה תוך כדי שאני עובד בזמן שהרבה אנשים אחרים לא מסוגלים לעבד את שני ערוצי התקשורת האלו בו זמנית. וזה נראה לאנשים מוזר. ואני מבין את זה. זה אכן נראה כאילו אני לא משקיע בעבודה את המקסימום.

במידה מסוימת, זה נכון. כשאני עושה את זה, אני לא נותן את המקסימום. אבל ההפרש לא נורא משמעותי. לפחות לא לעומת שאר היתרונות שיש לי מזה. דבר ראשון, זה מעסיק לי את השאריות הנותרות של משאבי מוח שתכנות לא תופס. וכן, כמעט תמיד יש לי מחזורי עיבוד לא מנוצלים. דבר שני, זה מבדר אותי תוך כדי העבודה. אני מריץ עבודה שימושית ביחד עם בידור והסחת דעת במקביל ואז אף אחד מהם לא עולה על גדותיו ואני מסוגל להמשיך לעבוד ברצף (לפחות, כל עוד השלפוחית שלי לא זורקת Buffer Overflow Exception או הקיבה רק עם Buffer Underrun). וחוץ מזה, זה גם עוזר לי לא להילחץ יותר מדי וזאת תועלת מאוד חשובה מבחינתי כי אני יודע שלחץ יכול לגרום לי להיות חולה ואפילו גם לשתק אותי מנטלית. והעובדה שאני גם צורך תוכן שאני מתכוון לצרוך בכל מקרה, המוח שלי לא דואג שמה אני נותן לערוץ החדשות שלי לצאת מכלל שליטה.

וכמובן כמובן כמובן, ברגע שאני מזהה שאני צריך יותר ריכוז, שמה שאני עושה כרגע לא יכול להיעשות אם לא יקבל את כל תשומת ליבי, אז אני עובר למוזיקה או עוצר את זה בכלל ומשקיע את כל מה שיש לי. לכתוב את זה, למשל, אני עושה בלי לראות או לשמוע משהו במקביל. כי כשאני כותב בבלוג, יש לי ערוץ אחד שמעלה זכרונות ומוודא שאני בטוח בהם, אחד שמנסח ובודק התבטאות, אחד שחושב על איך זה יראה כשזה יתפרסם, עוד אחד שבודק שמה אני לא כותב משהו שיפגע במישהו ועוד הרגיל שאחראי לשלוח את הפקודות לידיים.

לפעמים אני גם חושב שאולי אני מסוגל לעשות את זה כי שיחקתי המון משחקי תפקידים והעברתי את הכישורים שלי סוג של אבסטרקציה. בשביל לעשות דברים שאני עושה כבר המון זמן כמו לתכנת או לנהוג, לרכב על אופניים או לנתח אסטרטגיה, אפילו רטוריקה לרמה מסוימת, אני פשוט מקטלג ככישרון בעל פרמטרים מסוימית בדף הדמות שלי ומפעיל אותו כשאני צריך. כמו שכל אחד עם מספיק נסיון לא חושב על איך להעביר הילוך או איך לשמור על האופניים יציבות, אני, עם רוב המטלות שלי, לא כל כך חושב על איך לתכנת. אני פשוט עושה את זה. אני “משתמש בכישרון תכנות על בעיה לוגית”. כמובן שיש, לא פעם ולא פעמיים, משהו מורכב יותר ודורש מחשבה ותכנון אבל זה בדרך כלל לא לוקח הרבה זמן וברגע שיש לי את זה, כל השאר זורם.

תודה על ההקשבה,

ערן ארבל, מתכנת (Unity C# Prestige Class) דרגה 14


Posted in Gaming, Life, Me, Practice, Programming, Role-Playing, Thinking Out Loud, Work by with comments disabled.

גם למתכנתים יש רגשות

אזהרה: התיאורים ברשומה הוגברו לטובת הדרמה. נא לא לקחת בצורה מילולית.

נראה לי שהרבה אנשים מחשיבים תכנות כמקצוע יבש ולוגי לחלוטין בו אנשים מתודלקים על ידי פיצה וקפה הופכים דרישות ואפיונים ל-Features וזהו. אבל מתכנתים גם מושפעים מבעיות רגשיות ונפשיות. כמה מקצועיים שננסה להיות, עדיין יכולות להיות השפעות שיפגעו ביעילות שלנו, במוטיבציה וביכולת ריכוז. ואני לא מדבר פה רק על קרן. זה שיבש לי את השבוע-שבועיים אחרי הידיעה עם פרצי בכי אקראיים וקפיצות ונפילות מוראל, אכפתיות ומוטיבציה אבל הפעם אני מדבר על משהו אחר. כי גם קוד יכול לגרום לתגובות רגשיות.

קוד מחשב הוא לא רק אוסף של סמלים היוצרים אלגוריתמים ופעולות לוגיות. קוד יכול להיות אלגנטי, מעצבן, חכם, מדכא, יפהפה ומטריד. יש חתיכות של קוד שאתה לא רוצה לגעת בהם כי אתה מפחד לשבש את השלמות השבירה שלהם או לפגוע ביופי המזוכך שלהן. ויש חתיכות קוד שאתה לא רוצה לגעת בהן כי הן המקבילות הדיגיטליות לערמה גדולה של גללי דינוזאור שנמצאת בחצר הקדמית שלך.

ירון נוטה להתעצבן על קוד שלא עושה מה שהוא רוצה. תומר מתמרמר. מקס נהיה ממש מרוכז ואינטנסיבי. עמית בדרך כלל נהנה ומשועשע מבעיות. ברקן בדרך כלל לא אומר כלום.

אני נוטה להתייאש. כשאני רואה קוד יפה, אני מעריך אותו. לפעמים אני אפילו בוהה בו כמה דקות, בוחן את הדקויות שלו ומעיין בפרטים כמו מישהו שסוקר יצירת אמנות. אבל קוד לא יפה… קוד לא יפה גורם לי לייאוש. במיוחד אם אני יודע שאני צריך להתעסק בו עוד הרבה זמן. וייאוש משפיע על מוטיבציה, על יכולת ריכוז, על ההנאה מהעבודה. אני לרוב מאוד נהנה ממה שאני עושה. לבנות משהו חדש ולראות אותו פועל זה סוג של התעלות בשבילי. אפילו לתקן באגים, כשאני מרגיש שאני בעיקר הולך במקום, ברגע שאני מסיים גורמים להרגשה טובה שתיקנתי משהו במיוחד אם זה חכם ומהיר.

אבל יש פעמים שבהם הקצב שלי מאיט. וזה בעיקר בגלל שאני מרגיש מיואש ו/או מדוכא. וזה בקלות יכול להיגרם על ידי הקוד שאני מתעסק איתו באותו הרגע. אז רק שתדעו: מתכנתים יכולים להיות מדוכאים ומיואשים וזה משפיע על העבודה. ולפעמים, הדיכאון והיאוש יכולים לבוא מהקוד עצמו.


Posted in Life, Programming, Work by with comments disabled.

Selling Overhead

Is what this Gamasutra article called the recent trend in game development to sell “the things that usually end up on the game studio’s cutting room floor”. It’s talking about things like Early Access, selling the game while it’s being developed, and mostly about selling the “Prologue” to Metal Gear Solid V and selling access to Double Fine’s Amnesia Fortnight.

First of all, I don’t think it’s really surprising in this age where Publishers are mostly going the way of the dinosaurs and more developers retaking control of their creations and trying to hit the audience directly, saving money while still trying to make hiqh-quality (i.e. expensive) titles. The money has to come from somewhere.

The writer stresses the Double Fine and Metal Gear Solid V angle a lot, Double Fine selling access to their prototypes (things we usually couldn’t, and probably shouldn’t see) and Metal Gear Solid being split into (at least) two parts with the first one serving as “prologue” whose content might or might not later also appear in the full game, but I would like to point out two counter examples and say that, once again, when satisfaction is concerned, it’s all about expectations.

painting-analogy

The current customer expects that when she pays 60$ for a new game it will contain at least 10-20 hours of meaningful gameplay. Whether this is reasonable considering what we pay for movies, music, etc… is a different discussion – this is what we currently expect. In the days of the first StarCraft it was reasonable to sell a main game for 60$ and then an expansion with more missions and story for 30$. We then evolved the model of selling the main game for 60$ and tiny bundles of story/gameplay/extras for 5-15$ and lately we’ve also added alphafunding. Some of these models seem weird but, again, it’s all about expectations. And also honesty and transparency. (Here come the two examples).

  1. Decent Early Access Games/Developers – Look at Mojang, Vlambeer and all the others that decided to go the alphafunding/early access route but did it candidly. Mojang sold Minecraft from the very early (and sometimes broken versions) but they were honest about it. They said the game is in development, it might break, and you’re actually paying for the game’s development as it is being developed. The customers were promised that, they were promised that the game will be updated and improved and they won’t have to pay more despite the initial entry fee always increasing. And fucking hell, that model works for them. Vlambeer went with Steam Early Access for Nuclear Throne. They were upfront in saying that the game is in development, it will be cheaper after it’s done and there will be no sales or bundles until release. They said that this is only for those who want to support the developers during development. And they live-stream development and upload a new build every week. Which is awesome. They promised specific things and they deliver on what the customers expect from that.
  2. Stoic went a bit of a different route with The Banner Saga. They started from a Kickstarter campaign, raised funds and used those funds to start development. Roughly a year later, they released Factions, the Free-To-Play competitive version of the game featuring their beautiful art but mostly consisting of just the combat aspect of the game. They did that because they saw that development will take longer than previously expected and they wanted to put out something that people can play. But, mostly, they did that so they could get more help (than just backers) with fine tuning the combat aspect (the main game loop in The Banner Saga) and bring it to a mirror polish, thus making the final game better for everyone. But, they released it free to play. Meaning, you could play the “no-campaign” version of the game for free and if you wanted to, you could sink some money into it to fund development of the full game. They told gamers what to expect and they delivered on those promises, honestly and ethically. Then, another year later, you could buy the campaign-full, complete version of the game for a very competitive price of 25$.

Conclusion: I don’t think there is a right or wrong way to develop or sell your game. The only wrong thing is no fulfilling your customer’s expectation. Yes, sometimes those expectations are not up to you and you can roll with it or sit in the corner and cry. But, if you notice it, the only times gamers rise in uproar about how a game is sold/played/whatever is when it doesn’t fulfill expectations. I don’t know exactly how the Metal Gear Solid V thing is going to work but if Ground Zeros is selling for 30$ and The Phantom Pain will sell for 60$ and Ground Zeros won’t deliver at least half the satisfaction of The Phantom Pain and/or The Phantom Pain will actually contain some, half and especially most or all of the gameplay of Ground Zeros, you can definitely expect an uproar.

 


Posted in Gaming, IT, Practice, Programming, Thinking Out Loud by with comments disabled.