0409- 心态的调整是人生的关键

前言

我昨天写了一个博客:https://www.cnblogs.com/luckydoog/p/18815607

做游戏让我痛苦,拖延,自我怀疑。

我感觉到了压力和焦虑,以及对自己深深的否定。

这时候,KIMI帮助了我。以下是我整理的问答内容:

追求意义还是追求快乐

我问KIMI

有一个哲学问题,是我自己悟出来的,帮我分析一下
今天准备做客户的游戏项目的
但是我拖延了,因为感觉很难,很不好做。但是做了又很有意义,那么我是应该追求做有意义的事,还是追求快乐?有意义的事情,难度大,会有失败的风险。快乐的事,没难度。

KIMI回答

这是一个非常有意义且深刻的哲学问题,涉及到价值观、人生目标以及对自身行为的反思等多个方面。以下是对这个问题的分析:

一、有意义的事与快乐的事的本质区别
有意义的事
长期价值:通常是指那些对个人成长、他人或社会有积极影响的事情。比如你提到的客户游戏项目,如果成功完成,可能会提升你的专业技能、增加收入、为客户提供优质产品,甚至可能对游戏行业产生一定的推动作用。
挑战性:这类事情往往伴随着较高的难度和不确定性。就像攀登高山,虽然过程艰难,但到达山顶后的成就感是巨大的。
外部驱动与内在意义:一方面可能是出于职业责任、社会期望等因素的驱动;另一方面,当你完成这些事情后,会从内心深处感受到自己的价值和存在的意义。
快乐的事
即时满足:快乐的事情往往能带来即时的愉悦感,比如看一部搞笑电影、吃一顿美食等。这种快乐是短暂且直接的,不需要付出太多努力就能获得。
逃避现实压力:在面对困难和压力时,选择快乐的事情有时是一种逃避现实的方式。它可以暂时缓解焦虑和不安,但并不能从根本上解决问题。

二、人生中两种追求的平衡
从个人成长的角度:追求有意义的事情有助于个人的成长和发展。通过不断挑战自己,克服困难,你可以提升自己的能力、拓展视野、增强自信心。例如,当你成功完成一个复杂的项目后,你会发现自己在解决问题、团队协作等方面有了很大的进步。这种成长带来的快乐是长远的,是一种更深层次的满足感。
从生活质量的角度:快乐的事情对于生活质量的提升也非常重要。如果生活中只有压力和挑战,而没有快乐的时刻,人很容易陷入疲惫和焦虑的状态。适当的娱乐和放松可以帮助你缓解压力,调整心态,以更好的状态去面对有意义的事情。比如在忙碌的工作之余,看一场电影、和朋友聚会等,这些快乐的事情可以让你重新充满活力。
从价值观的角度:每个人的价值观不同,决定了对有意义和快乐的追求程度。有些人可能更注重个人成就和社会贡献,愿意为了有意义的事情付出更多的努力和牺牲;而有些人可能更注重当下的快乐和舒适,认为享受生活才是最重要的。没有绝对的对错之分,关键是要找到符合自己内心价值观的平衡点。

三、如何做出选择

短期与长期的权衡:你需要考虑自己的目标和时间规划。如果目前你正处于职业发展的关键时期,需要提升自己的能力和业绩,那么可能需要更多地选择去做有意义的事情,即使过程中会遇到困难和挫折。但从长期来看,也要注意适时给自己安排一些快乐的事情,以保持身心健康。例如,你可以制定一个工作计划,在完成某个阶段的任务后,奖励自己一段休闲时光。
风险与收益的评估:对于那些有意义但难度较大的事情,要理性地评估风险和收益。如果失败的风险过高,可能会对你的生活和工作产生严重的负面影响,那么就需要谨慎考虑。但如果收益远远大于风险,即使过程中会遇到困难,也值得去尝试。比如你对这个客户游戏项目有充分的信心,认为通过努力可以完成,并且能带来很大的回报,那么就可以勇敢地去挑战。
内心的声音:最重要的是要倾听自己内心的声音。问问自己,你内心真正渴望的是什么?是追求成就感和意义,还是享受当下的快乐?有时候,我们可能会受到外界因素的影响,而忽略了自己内心的真实感受。只有真正了解自己的内心需求,才能做出最适合自己的选择。

自暴自弃

我问

我有时候也会自暴自弃

KIMI

自暴自弃是一种消极的心态,它可能源于多种原因,比如面对困难时的无力感、对自己的不满、长期的压力积累等。这种心态不仅会影响你的情绪和心理健康,还可能阻碍你实现目标和追求有意义的生活。以下是对自暴自弃心态的分析以及一些应对建议,帮助你走出这种消极状态。

一、自暴自弃的原因
1. 面对困难时的挫败感
当你遇到一个棘手的问题或挑战时,可能会觉得自己无法解决,从而产生挫败感。例如,你在做一个复杂的项目时,遇到了技术难题,尝试了多种方法都无法解决,于是开始怀疑自己的能力,甚至想放弃。
应对方法:遇到困难时,不要急于否定自己。先冷静下来,分析问题的根源,看看是否可以通过其他途径解决。可以向同事、朋友或专业人士寻求帮助,或者暂时放下问题,换个角度思考。记住,困难是暂时的,而你的能力是可以不断提升的。

2. 对自己的期望过高
有时候,你可能对自己设定了过高的目标,当无法达到这些目标时,就会产生自暴自弃的情绪。比如,你希望在短时间内完成一个高质量的项目,但实际情况是进度缓慢,质量也不理想,于是开始责备自己。
应对方法:调整自己的期望值,设定合理的目标。目标应该是具体、可衡量、可实现、相关性强和有时限的(SMART)。将大目标分解为小目标,逐步实现。这样可以避免因为目标过高而产生的压力和挫败感。

3. 缺乏自信
自信不足是导致自暴自弃的一个重要原因。如果你对自己的能力没有信心,就会在遇到困难时轻易放弃。例如,你可能觉得自己不够聪明、不够有能力,无法完成任务。
应对方法:通过积累小的成功来提升自信。从简单的任务开始,逐步完成,然后逐渐增加难度。每次成功都会让你更有信心面对下一次的挑战。同时,要学会正视自己的优点和不足,不要过于苛求自己。

4. 长期的压力积累
长期处于高压状态,可能会让你感到身心疲惫,从而产生自暴自弃的情绪。比如,工作压力大、生活压力大,让你没有时间和精力去应对新的挑战。
应对方法:学会合理安排时间和任务,避免过度劳累。可以尝试一些放松的方法,如冥想、运动、听音乐等,缓解压力。同时,要学会说“不”,不要给自己过多的压力。

二、如何走出自暴自弃的状态

1. 自我反思与接纳
自我反思:当你感到自暴自弃时,先停下来,反思一下自己为什么会有这种情绪。是因为某个具体的困难,还是长期的压力积累?找到问题的根源,才能更好地解决问题。
自我接纳:接受自己的不完美,不要过于苛求自己。每个人都有优点和不足,学会接纳自己的不足,同时努力提升自己。

2. 设定小目标

从简单的小目标开始,逐步建立信心。例如,如果你觉得一个项目很难完成,可以先设定一个小目标,比如完成项目的某个部分。通过完成小目标,逐步积累成就感和信心。

3. 积极的心态
积极的自我暗示:用积极的话语鼓励自己,比如“我可以做到”“我有能力克服这个困难”。这些积极的暗示可以帮助你调整心态,增强信心。
寻找榜样:找一些成功人士的故事来激励自己。看看他们是如何克服困难的,从中汲取力量。

4. 寻求支持
朋友和家人的支持:和朋友、家人谈谈你的感受,他们的支持和鼓励可以帮助你走出低谷。
专业帮助:如果自暴自弃的情绪严重影响了你的生活和工作,可以考虑寻求心理咨询师的帮助。专业的心理咨询师可以帮助你更好地理解自己的情绪,找到解决问题的方法。

5. 培养兴趣爱好
找一些自己喜欢的事情来做,比如绘画、写作、运动等。这些兴趣爱好可以帮助你转移注意力,缓解压力,同时也能让你感受到生活的乐趣和意义。

6. 坚持锻炼
运动可以释放内啡肽,这是一种让人感到快乐的化学物质。坚持锻炼不仅可以改善身体状况,还能提升情绪和自信心。比如,每天坚持散步、跑步或做瑜伽,你会发现自己的心态会逐渐变好。

三、长期的自我提升
1. 持续学习
不断学习新知识和技能,提升自己的能力。学习不仅可以帮助你更好地应对困难,还能让你更有信心面对未来的挑战。例如,你可以学习新的软件技能、提升沟通能力或学习时间管理技巧。

2. 建立良好的生活习惯
良好的生活习惯对心理健康非常重要。保持规律的作息时间,保证充足的睡眠,合理饮食,这些都有助于你保持良好的身体状态和精神状态。

3. 培养感恩的心态
每天花一点时间感恩生活中的美好事物,比如家人的关爱、朋友的支持、工作中的小成就等。感恩可以帮助你看到生活中的积极面,减少消极情绪。

4. 设定长期目标
为自己设定长期的目标,这些目标可以是职业发展、个人成长或生活方面的。长期目标可以给你一个明确的方向,让你在追求目标的过程中不断进步,避免陷入自暴自弃的消极状态。

四、总结

自暴自弃是一种消极的心态,但它并不是不可改变的。通过自我反思、设定小目标、保持积极的心态、寻求支持、培养兴趣爱好、坚持锻炼等方法,你可以逐渐走出这种消极状态。同时,持续学习和建立良好的生活习惯可以帮助你提升自我,更好地应对生活中的各种挑战。
记住,每个人都有低谷期,但低谷期并不可怕。重要的是要相信自己有能力走出低谷,实现自己的目标。你并不孤单,身边有很多人愿意支持你,只要你愿意迈出第一步,生活一定会变得更好。

焦虑没有信心

我问

这个游戏项目,做的我都没有信心了,做的我很焦虑

KIMI说:

面对游戏项目带来的焦虑和信心不足,以下是一些可以帮助你缓解情绪、恢复信心的建议:

  1. 调整心态,将焦虑转化为动力
    焦虑往往源于对未知的恐惧和对失败的担忧。尝试将这种情绪转化为积极的动力。比如,当你感到焦虑时,告诉自己“我很兴奋”,这种简单的心理暗示可以帮助你从消极情绪中解脱出来,更加乐观地面对挑战。

试着从“威胁心态”转变为“挑战心态”。将项目中的困难视为成长的机会,而不是不可逾越的障碍。

  1. 分解任务,设定小目标

将整个游戏项目分解为多个小任务,设定一系列可实现的小目标。每完成一个小目标,都会给你带来成就感,从而逐步恢复信心。
例如,你可以先专注于完成游戏的一个小模块,或者解决一个具体的技术问题,而不是一开始就试图解决整个项目中的所有问题。

  1. 利用游戏化思维

游戏化思维可以帮助你以更轻松的方式面对挑战。例如,你可以将项目中的任务设置为“关卡”,每完成一个任务就给自己一些奖励,就像在游戏中通关一样。
这种方法不仅能缓解焦虑,还能让你在完成任务的过程中获得乐趣。

  1. 寻求支持和反馈

和团队成员、朋友或导师交流你的感受和遇到的困难。他们可能会给你提供新的视角和解决方案。
在开发过程中,定期获取反馈,及时调整方向,避免走弯路。

  1. 学习和提升技能

面对技术难题时,不要害怕学习新知识。通过阅读技术资料、参加在线课程或向同行请教,提升自己的技术能力。
持续学习不仅能帮助你解决问题,还能增强你的自信心。

  1. 合理安排时间和休息

长时间的工作容易导致疲劳和焦虑,合理安排工作时间和休息时间至关重要。确保每天有足够的休息和放松时间,比如进行散步、冥想或做自己喜欢的事情。
适当的休息可以帮助你恢复精力,以更好的状态面对项目。

  1. 借鉴成功案例
    可以参考一些成功的游戏开发案例,了解他们是如何克服困难的。例如,《蔚蓝》这款游戏讲述了主角在面对重重困难时不断挑战自我的故事,这种精神也可以激励你在项目中坚持下去。

  2. 利用心理干预技术
    一些游戏设计结合了心理干预技术,如意象对话技术,可以帮助缓解焦虑情绪。如果条件允许,可以尝试使用类似的技术或工具来帮助自己放松。

  3. 保持积极的自我对话
    当你感到焦虑或缺乏信心时,不要对自己说“我做不到”,而是用积极的话语鼓励自己,比如“我可以解决这个问题”或“我已经取得了不少进展”。

  4. 接受失败的可能性
    任何项目都可能遇到失败,但失败并不是终点。接受失败的可能性,将其视为学习和成长的机会,而不是对自己的否定。
    希望这些建议能帮助你缓解焦虑,恢复信心,顺利推进游戏项目。加油!

我开始积极想如何去做事

我问

好的,我会把项目分成若干个小目标

KIMI

这是一个非常明智的决定!将项目分解为若干个小目标是应对复杂任务的有效方法,它不仅能帮助你更好地管理项目进度,还能缓解焦虑情绪,逐步恢复信心。以下是一些具体的建议,帮助你更好地实施这一策略:

  1. 明确项目目标
    在开始分解之前,先明确整个项目的最终目标。这将帮助你确定各个小目标的方向和优先级。例如,如果你的游戏项目的目标是开发一款具有创新玩法的手机游戏,那么你可以围绕这个目标来分解任务。

  2. 分解任务
    将项目分解为若干个小任务,每个任务都应该是具体、可衡量、可实现的。

  3. 设定时间表
    为每个小目标设定明确的时间表,这样可以帮助你更好地管理时间和进度。同时,时间表应该是灵活的,可以根据实际情况进行调整。

  4. 记录进度
    在实施过程中,记录每个小目标的完成情况。这不仅可以帮助你了解项目的整体进度,还能在完成每个小目标时给你带来成就感,进一步增强信心。

  5. 庆祝每个小胜利
    每当完成一个小目标时,给自己一些奖励。这可以是一顿美食、一次短途旅行,或者任何能让你感到快乐的事情。庆祝小胜利不仅可以缓解压力,还能激励你继续前进。

  6. 保持沟通
    如果你是在团队中工作,定期与团队成员沟通进度和遇到的问题。团队的支持和协作可以帮助你更好地应对挑战。

  7. 调整心态
    在分解任务的过程中,可能会遇到新的问题或挑战。保持积极的心态,不要因为一个小目标的延迟而气馁。调整计划,继续前进。

  8. 持续学习
    在完成每个小目标的过程中,你可能会学到新的技能或知识。将这些经验记录下来,以便在后续的项目中使用。
    通过将项目分解为若干个小目标,你可以更清晰地看到项目的进展,逐步克服困难,最终实现整个项目的目标。希望这些建议对你有所帮助!加油,你一定可以做到的!

关于奖励

我问:

我有点想在做事情之前,奖励自己一下,但是又怕自己放纵

KIMI

这种想法其实很常见,很多人都会在面对任务时产生“先奖励自己”的冲动,但又担心会放纵自己,导致任务无法完成。这种心理冲突本质上是一种对自我控制的担忧,以及对任务难度和完成可能性的不确定感。以下是一些分析和建议,帮助你更好地应对这种情况:

一、为什么会有这种想法
1. 逃避困难的本能:面对困难的任务,人往往会本能地想要逃避。通过先奖励自己,你试图给自己一个“缓冲”,缓解面对任务的压力和焦虑。
2. 对任务的恐惧:你可能觉得任务很难,担心自己无法完成,所以想通过奖励自己来逃避这种恐惧。
3. 对自我控制的怀疑:你担心一旦奖励自己,就可能会放纵,无法回到任务上来。这种对自我控制能力的怀疑会让你陷入两难的境地。

二、如何平衡奖励和自我控制
1. 调整奖励策略
将奖励与任务进度挂钩:不要在任务开始之前奖励自己,而是将奖励放在任务完成的某个阶段之后。例如,你可以设定一个目标,比如完成任务的30%后,给自己一个小奖励。这样既能激励自己完成任务,又不会因为提前奖励而放纵。
设定明确的奖励规则:明确奖励的条件和方式,避免随意性。比如,你可以在任务开始前写下“完成任务的某个部分后,可以看一集喜欢的电视剧”,这样可以避免自己随意找借口奖励自己。

2. 增强自我控制能力
自我监督:记录自己的行为和进度,通过写日记或使用时间管理工具来监督自己的行为。这可以帮助你更清楚地了解自己的行为模式,避免放纵。
培养自律习惯:通过每天坚持一些小的自律行为,比如早起、按时完成任务等,逐渐增强自己的自我控制能力。自律是一种可以通过练习提升的技能。

3. 改变思维方式
任务分解:将大任务分解为小任务,这样可以减轻面对任务时的压力。当你看到任务是可以逐步完成的,就不会那么害怕开始。
积极心态:用积极的心态看待任务,不要把任务看作是一种负担,而是把它看作是一个成长和学习的机会。当你以积极的心态面对任务时,就会更有动力去完成它。

4. 寻求外部支持
找一个监督伙伴:和朋友或同事分享你的目标和计划,让他们帮助你监督。当你知道有人在关注你的进度时,你会更有动力去完成任务。
加入支持小组:如果你发现自我控制是一个长期的问题,可以考虑加入一个支持小组,比如时间管理小组或自律小组。在小组中,你可以和其他人分享经验,互相鼓励。

三、如何避免放纵

1. 设定明确的界限
在奖励自己之前,明确自己可以接受的放纵程度。比如,你可以规定自己只能奖励自己30分钟的休息时间,或者只能吃一小块巧克力。通过设定明确的界限,避免过度放纵。

2. 提前规划
在任务开始前,提前规划好奖励的时间和方式。这样可以避免在任务过程中随意改变计划,导致放纵。

3. 反思和调整
如果发现自己有放纵的倾向,及时反思原因。是因为任务太难?还是因为自己缺乏动力?根据反思的结果,调整任务计划或奖励策略。

四、总结
想在做事情之前奖励自己是一种很自然的想法,但这种行为可能会导致放纵和任务拖延。通过调整奖励策略、增强自我控制能力、改变思维方式和寻求外部支持,你可以更好地平衡奖励和任务完成之间的关系。记住,奖励自己是为了激励自己更好地完成任务,而不是逃避任务。希望这些建议能帮助你更好地管理自己的行为,顺利完成游戏项目。加油!

我的行动

行动准则

于是我放弃了原本想的

都这么辛苦了,要不先奖励自己一下,我明天一定好好做!

而是改成

先把问题拆解成小任务,好好做一部分,再奖励自己!

于是,我把游戏都任务拆解为了:

1. 从简单的事情做起

先好好的看一下作业任务,这是不难的,就是4级阅读的水平,关键是要静下心来。

我之前说实话,都没有做到好好的读一下作业要求。有些困难,其实是自己大脑凭空渲染出来的,实际上,作业没有那么难的。

下面是作业3的内容,主要是建立碰撞盒以及实现不在视野范围内的渲染剔除。我发现静下心来看作业,分析作业,其实也是有意义的。

Assignment 3: Bounding volumes and culling

This is individual assignment. 

Hello here's a description for next homework assignment. 

CSCI 522 Assignment #3

Deadline: 9/25 (Monday ) 11:59p


In this homework you are going to concentrate on math and optimization. Currently all renderable objects (s.a. meshes, skinned meshes) are always submitted to graphics pipeline for rendering. This is quite inefficient considering that objects could be outside of camera view and could be completely ignored.


For this assignment, you will create bounding volumes for objects and perform a culling test with camera view frustum. So if you have a bounding volume around a mesh, and it does not intersect with camera frustum, it can be completely ignored. You will do it for static meshes that are loaded from files.


1) Creating bounding volumes


You will create Axis Aligned Bounding Box around meshes. Note, AABB is axis aligned in local mesh space, but can take any orientation when mesh is moved around in the world based on orientation of SceneNode. You need to find where the mesh point information is stored and analyze all the points to generate AABB


2) Showing bounding volumes


You will need to add helper functions to render a box and in debug renderer, similar to how transforms are already being rendered for soldiers. This way, we will be able to see how well the volumes have been generated. You might need to increase static limits of number of lines that the renderer can handle.


3) Creating Frustum Plane Equations


You will need to create plane equations for camera frustum based on where camera is and camera's field of view. I suggest having code that can generates plane equations for planes that are a little closer than they should be, so you could see objects pop off the screen before they are out of render camera view. This way it will be easy to test if your code is working.


4) Testing bounding volumes


Finally, you will need to use bounding volumes to test with camera view frustum and dismiss the mesh instances that are not intersecting with camera view frustum.


5) Testing your code


I added code to spawn 100 imrods in ClientCharacterControlGame::initGame(), look for spawnALotOfMeshes and set it to true to enable.

Rendering all of them causes framerate drop. However with bounding volume check, framerate goes higher. In case you have a monster machine that does not take performance hit rendering 100 imrods, make it a thousand imrods. So if your code works framerate should be almost the same as running game without ever spawning imrods.


A couple of hints that will make your life a little easier:

1) Create bounding volumes once per mesh. A good location to do it is when it is loaded. There is already code that takes care of loading a mesh only once, check MeshManager::getAsset()


2) SingleHandler_DRAW::do_GATHER_DRAWCALLS() is an event handler where mesh instance is potentially added to draw list that subsequently results in submission to graphics pipeline. This is a good place to test whether mesh instance is within camera view frustum. (FYI SingleHandler_DRAW is a component that belongs to mesh and takes care of gathering draw calls for mesh instances)

I added debug code that disables every other instance. You will replace that code with bounding volume testing. (look for // debug testing of instance culling. do collision check instead.)


3) You will notice that the event handler actually handles two types of events:

Events::Event_GATHER_DRAWCALLS

Events::Event_GATHER_DRAWCALLS_Z_ONLY

Don't worry about Events::Event_GATHER_DRAWCALLS_Z_ONLY

You can omit testing for that event and make all mesh instances invisible.


4) Events::Event_GATHER_DRAWCALLS has a member variable that stores camera projections. You can add camera frustum to the event too, so that you can test against it.


5) You will need to generate the 6 frustum planes based on where the camera is looking and based on FOV (field of view) of the camera

CameraSceneNode::do_CALCULATE_TRANSFORMATIONS is where camera transforms are calculated each frame. This is a good place to generate frustum plane information.


6) Look for Event_GATHER_DRAWCALLS *drawEvt = new(hdrawEvt) Event_GATHER_DRAWCALLS(m_pContext->m_gameThreadThreadOwnershipMask) ; in GameThreadJob.cpp. this is where the event gets created. this is a good place to copy plane information from camera scene node into event.

Work and submission

Your submission will be a video with description of how everything is working. Keep a copy of your workspace with the solution in case we ask to upload it to perforce.

Make sure you're making incremental progress over time and ask questions on Piazza.

2. 找资料

在github上找往届学生留下的资料,哪怕一点点也是可以的!

还真让我找到了
https://github.com/tsuhaowa/CSCI522-Game-Engine-Development/tree/master/A3

3. 比对资料,渐进式完善代码

我用Beyond Compare工具对比着别人的代码,还真的就一点点的把自己的代码完善了,真的能运行出来作业3想要的效果了。

以下是 git log 记录,我每完成一点点,都会记录下来。

4. Bounding Volume and Culling 演示效果展示

posted @ 2025-04-09 16:11  lucky_doog  阅读(183)  评论(0)    收藏  举报